Ok, I found a reasonable solution using the ImageStat module to get the sum of pixels of the difference image. This gives the manhattan distance when divided by the pixel count and averaged over RGB.
In [151]: def idiff(im1,im2): return array(ImageStat.Stat(ImageChops.difference(im1,im2)).sum).mean()/(im1.size[0] * im1.size[1]) .....: In [153]: timeit("idiff(anna,f37)",20) Out[153]: 0.023978149890899657 Let me know if there is any faster solution short of coding in some distance functions to the C modules (which I did consider, before be reminded of my pitiful ignorance...) Yours, -nsh On Sat, Dec 5, 2009 at 7:56 PM, Lauri Love (nsh) <lauri.l...@gmail.com>wrote: > i'm coding a project which requires quick comparison of two images per > pixel by colorspace (distance is the sum of the squares of the differences > of RGB values over the pixels of the images), as a fitness function (i am > trying to recreate/extend roger alsing's genetic mona lisa code in python). > > creating an absolute difference image takes about 1/100th of a second on my > (eeepc) hardware, but i can't figure out a way to reduce the difference > image to an integer of float value quickly. it takes about the order of 5 > seconds to iterate through all the pixels and sum the RGB values to get the > manhattan distance. "manually" calculating the manhattan or euclidean > distances between the two images is even slower. > > can anyone suggest a way to quickly get either distance from two images? > > sincerely and gratefully, > > -nsh >
_______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig