9

The end goal would be to see if

image1

contains

image2.

the compare needs to support minor distortion, scaling, color differences, rotation, and brightness differences.

it can be in any language really. i will be running this algorithm as a webservice so its no problem if i have to write this portion in c, c++, python, etc.

Community
  • 1
  • 1
josh
  • 1,231
  • 1
  • 12
  • 28
  • 1
    This is a lot more difficult than image comparison; this is pattern recognition. See http://homepages.inf.ed.ac.uk/rbf/CVonline/recog.htm – koan Aug 09 '11 at 18:11
  • This looks like a research-grade problem. I doubt you'll find a library that can do this out of the box. – Niki Aug 10 '11 at 14:21

4 Answers4

6

You should probably take a look at OpenCV and VLfeat.

carlosdc
  • 12,022
  • 4
  • 45
  • 62
1

Object detection can be performed for example using

  • Rapidminer IMMI (image mining extension for one of the leading open-source data-mining platform)
  • BoofCV (using SURF feature detection)
Radim Burget
  • 232
  • 2
  • 5
0

Look at this - http://gallery.azureml.net/MachineLearningAPI/02ce55bbc0ab4fea9422fe019995c02f - it supports OCR. This also supports multiple languages and distortion - http://www.projectoxford.ai/doc/vision/OCR

neerajkh
  • 1,233
  • 8
  • 9
0

How about ImageMagick? Its not a library per se however if you can provide shell access to your environment its pretty easy to use.

You would most probably be interested in the compare command.

EDIT: ImageMagick does contain tools for sub-image search like subimage-search.

  • 1
    `compare` would not be able to tell if an image *contains* an image but would help if an image *is* an image. – koan Aug 09 '11 at 18:13
  • The title reads "looking for an image **comparison** library". ImageMagick offers image comparison ability. –  Aug 09 '11 at 18:15
  • And there's also an entire question that specifically details the requirements (which ImageMagick compare do not meet) – Lou Franco Aug 09 '11 at 18:53
  • thanks for the answer, looking it over now. compare does have the option of a [sub-image](http://www.imagemagick.org/script/command-line-options.php?ImageMagick=vocn44la35ikp71p6efdfot286#subimage-search) search. would this not work? maybe run an edge-detection algorithm on the original image before searching for the sub-image? – josh Aug 10 '11 at 06:24
  • That was the idea. You pick the tool you need from ImageMagick because its an image manipulation suite not a single tool. I have chosen **compare** because I thought you were actually searching for a way to compare two images (the title made me just fly over your question) but there are a lot of alternative tasks (commands) you can use to manipulate images. –  Aug 10 '11 at 13:06
  • 1
    Given the metrics available in compare, it is unlikely to be robust, especially if there is a scale change - as in the example pair of images. It does depend a lot on the types of images being searched for. I would have thought an edge detection filter would not be helpful. – koan Aug 11 '11 at 07:38
  • Yikes! `subimage-search` compares the images at every possible relative position. You end up taking a 2D convolution of the images, which is spectacularly slow :( – Navin Dec 26 '13 at 23:11