Files
Robust_image_source_identif…/algorithms/distance/rms_diff.py

26 lines
721 B
Python

from PIL import ImageChops
import math
import operator
import functools
import numpy as np
def rmsDiffPil(im1, im2):
"Calculate the root-mean-square difference between two images"
h = ImageChops.difference(im1, im2).histogram()
# calculate rms
return math.sqrt(functools.reduce(operator.add,
map(lambda h, i: h*(i**2), h, range(256))
) / (float(im1.size[0]) * im1.size[1]))
def normalizeImage(image):
image = image - image.min()
image = image / image.max()
return image
def rmsDiffNumpy(image0, image1, normalize = False):
if normalize:
image0 = normalizeImage(image0)
image1 = normalizeImage(image1)
return np.sqrt(np.mean(np.square(image0 - image1)))