1

Despite Googling around a fair amount, the only things that surfaced were on neural networks and using existing APIs to find tags about an image, and on webcam tracking.

What I would like to do is create my own data set for some objects (a database containing the images of a product (or a fingerprint of each image), and manufacturer information about the product), and then use some combination of machine learning and object detection to find if a given image contains any product from the data I've collected.

For example, I would like to take a picture of a chair and compare that to some data to find which chair is most likely in the picture from the chairs in my database.

What would be an approach to tackling this problem? I have already considered using OpenCV, and feel that this is a starting point and probably how I'll detect the object, but I've not found how to use this to solve my problem.

Nick Bull
  • 9,518
  • 6
  • 36
  • 58
  • What you are speaking of is the very broad field of Object Detection and Recognition. Feature matching and detection is performed first.... SIFT and SURF are known to give good results. Once you have those features, then some sort of machine learning is used next. Check out this post to start: http://stackoverflow.com/questions/4658390/how-to-search-the-image-for-an-object-with-sift-and-opencv – rayryeng Feb 18 '15 at 10:04

2 Answers2

1

I think in the end it doesn't matter what tool you use to tackle your problem. You will probably need some kind of machine learning. It's hard to say which method would result in the best detection, for this I'd recommend to use a tool like weka. It's a collection of multiple machine learning algorithms and lets you easily try out what works best for you.

Before you can start trying out the machine learning you will first need to extract some features out of your dataset. Since you can hardly compare the images pixel by pixel which would result in huge computational effort and does not even necessarily provide the needed results. Try to extract features which make your images unique, like average colour or brightness, maybe try to extract some shapes or sizes out of the image. So in the end you will feed your algorithm just with the features you extracted out of your images and not the images itself.

Which are good features is hard to define, it depends on your special case. Generally it helps to have not just one but multiple features covering completely different aspects of the image. To extract the features you could use openCV, or any other image processing tool you like. Get the features of all images in your dataset and get started with the machine learning.

Rolf Lussi
  • 615
  • 5
  • 16
1

From what I understood, you want to build a Content Based Image Retrieval system. There are plenty of methods to do this. What defines the best method to solve your problem has to do with:

  • the type of objects you want to recognize,
  • the type of images that will be introduced to search the objects,
  • the priorities of your system (efficiency, robustness, etc.).

You gave the example of recognizing chairs. In your system which would be the determining factor for selecting the most similar chair? The color of the chair? The shape of the chair? These are typical question that you have to answer before choosing the method.

Either way one of the most used methods to solve such problems is the Bag-of-Words model (also Referred the Bag of Features). I wish I could help more but for that I need that you explain it better which are the final goals of your work / project.

zedv
  • 1,459
  • 12
  • 23