一年前,一个
similar question被问到,并有许多反应,包括一个关于像素化的图像,我将建议作为至少一个资格预审步骤(因为它会很快排除非常不相似的图像)。
也有链接到更早的问题,有更多的参考和良好的答案。
这里是一个实现使用Scipy的一些想法,使用上面的三个图像(分别保存为im1.jpg,im2.jpg,im3.jpg)。最后的输出显示im1与自身比较,作为基线,然后每个图像与其他图像进行比较。
>>> import scipy as sp
>>> from scipy.misc import imread
>>> from scipy.signal.signaltools import correlate2d as c2d
>>>
>>> def get(i):
... # get JPG image as Scipy array, RGB (3 layer)
... data = imread('im%s.jpg' % i)
... # convert to grey-scale using W3C luminance calc
... data = sp.inner(data, [299, 587, 114]) / 1000.0
... # normalize per http://en.wikipedia.org/wiki/Cross-correlation
... return (data - data.mean()) / data.std()
...
>>> im1 = get(1)
>