1

I am trying to do an object recognition with OpenCV. The idea is that I start with an empty database and subsequently add objects into it with a camera. So far I have a tracking algorithm which is based on the opencv method calcOpticalFlowPyrLK and a matching algorithm.

What I am now not sure about is, how to set up the database.

My idea is the following:

I am detecting SIFT feature points (lets say frame1 1000 FeaturePoints(FPs)) in the first frame. In the subsequent frame2 I am taking over the features I recognized in frame1 due to the tracking algorithm (say 500). With this 500 I go to frame3 and take over those FPs I can track from frame2 (say 400) and so on. This means that the number of feature points in constantly dropping over the frames.

Therefore I want to introduce two thresholds of say 100FPs and 40FPs. If I undergo 100Fps (assume this happens in frame6) - then I start to detect again SIFT features in frame6 and push the points with that back to 1000. Unless the drop is so high that I do not only undergo 100 FPs but also 40FPs in frame6 then I consider this frame to show a new Object.

Let's say I have to refresh my FPs every 6 frames and after 7 refreshs I drop below 40 and want to classify the object. This means I have recognized 7000 Fps for Object 1. But many of them are very similar or even the same. Therefore I thought about putting this FPs into an SVM to learn the object. Now the question is what kind of SVM is the best for my purpose. I cannot do a "negative training", means I have no images which are showing the wrong object to train the classifier. I could do that once I have detected a few objects.

I hope my problem became clear and somebody can give me inspiration or good advice how to proceed.

Best Regards

4

0 回答 0