views:

447

answers:

3

My objective is to supply 2 image files, and get a true/false response as to whether these 2 files could be the same (within an acceptable degree of certainty).

I realize this question falls under artificial intelligence and is much more complex than it appears, so I highly doubt I could (or would even want to) do it myself. What I'm looking for is probably a library or a class. I'm working with PHP.

thanks in advance..

All helpful answers/comments get up voted..

Update:

I wonder if I'm over-complicating it, and maybe a more general library like imageMagick (imagick) could get it done? Anyone who's more experienced with imageMagick?

+3  A: 

I didn't try it, but maybe Libpuzzle might do the trick (quoting) :

The Puzzle library is designed to quickly find visually similar images (GIF, PNG, JPG), even if they have been resized, recompressed, recolored or slightly modified.

This is a C library, but is also comes with a command-line tool and PHP bindings.

And there is an example in PHP there.

(It seems to be a PHP extension -- which means you'll need to be admin of your server to be able to install it)

Pascal MARTIN
+1 for the helpful answer, although I'm using shared hosting.
Chris
ho, too bad :-( I hope you find another way, in that case ; let us know if you find out something tht works well !
Pascal MARTIN
Will do, still haven't had time to do comprehensive research. Was hoping to get initial thoughts on SO first. Thanks for your reply, good start for sure :)
Chris
+1  A: 

There are already many questions on SO about detecting similar images:

Ivan
I've come across some of these posts and others. My needs are different though. I'm looking for a ready-made implementation that I can use as an end-user.
Chris
+1  A: 

http://tineye.com/ may be useful if you're just comparing your own images.

You should probably do some research on image similarity algorithms, though anything advanced isn't going to suit a scripting language like PHP. The most simple comparison method would work like this:

  1. Make both images the same size if they are not already.
  2. Compare each corresponding pixel and decide how similar they are. Simplest method is to take the difference between the red values, then the blue values, then the green values, and average them.
  3. Take the average difference from all the pixels. If it's below some threshold you decide, then the images are the same or similar. You'd need to test with various images to decide on a threshold.

I'm not totally familiar with ImageMagick and PHP's image functions so not sure if you can do all of this.

DisgruntledGoat
Thanks for the reply. Will look at tineye.
Chris
Actually now that I looked at this tineye, sounds like decent for what I need. I think I'll go with doing that part through them. Only thing I wish they had an API for automation.
Chris