1

Setup is as follows:

  • Database with paintings
  • robot that takes shots of paintings

I want to compare the shots the robot made with the images in our database. Problem is that the shots won't be perfect. The painting will most likely be IN the shot, but the shot will also contain wall/other objects. The incidence of light will also cause problems. Therefore I want to be finding images in the database that are similar to a certain degree.

I've been reading up on PIL, scipy, openCV, machine learning.

Is there anything you guys can recommend for this problem?

Thanks in advance.

edit: I'm aware of the solutions presented at other posts. Such as: comparing histograms/template matching and feature matching. Comparing histograms is not going to cut it in my application. Neither will feature matching. As it is to much of a workload. Template matching might, however the angles at which the shots will be taken won't be any near perfect.

xrdty
  • 886
  • 2
  • 10
  • 22

2 Answers2

3

You could use the SSIM index. There is a python implementation in scikit-image package.

lCapp
  • 892
  • 9
  • 18
2

Your problem sounds more like an application of feature detection and matching. Given a shot captured by the robot, you extract features from it, and compare them against the list of features you have in your database (each image having a lot of features). You might want to look at SURF, or some other descriptor that does your job. OpenCV has very well documented implementations for many variants. Feature matching would be the last stage where you actually make a decision about a match or a non-match.

Note that all of this is really heavy on processing, so forget real-time.

a-Jays
  • 1,182
  • 9
  • 20