Welcome, guest | Sign In | My Account | Store | Cart
# Original function

import ImageChops
import math, operator

def rmsdiff_1997(im1, im2):
   
"Calculate the root-mean-square difference between two images"

    h
= ImageChops.difference(im1, im2).histogram()

   
# calculate rms
   
return math.sqrt(reduce(operator.add,
        map
(lambda h, i: h*(i**2), h, range(256))
   
) / (float(im1.size[0]) * im1.size[1]))


# The 2011 version using more recent Python idioms

def rmsdiff_2011(im1, im2):
   
"Calculate the root-mean-square difference between two images"
    diff
= ImageChops.difference(im1, im2)
    h
= diff.histogram()
    sq
= (value*(idx**2) for idx, value in enumerate(h))
    sum_of_squares
= sum(sq)
    rms
= math.sqrt(sum_of_squares/float(im1.size[0] * im1.size[1]))
   
return rms

History