0
votes

I want to make an application able to detect and track object using Kinect camera.

I used SURF algorithm to find an object, exactly as described on EmguCV's "SURF feature detector in CSharp" and in EmguCV's example "SURFFeature". I'm capturing an image from camera to detect and show it in small picture box, while camera image is in big picture box. But when I took a photo of the object SURF algorithm starts to do some totally random matching. Tracking objects should have a red rectangle around it, but nothing happens like that, and the matching vector lines are pointing to the totally different objects.

I'm using Visual Studio 2010 with Kinect for Windows SDK 1.8 and EmguCV 2.4.10.

Here are the pictures showing the situation:

Trying to capture a toy bulb on a rope. enter image description here

Trying to capture a book. enter image description here

Can anyone help me to know why SURF isn't detecting that objects properly? What am I doing wrong?

1
Please provide a sample of your code so that we can point out where you may be going wrong. - seebiscuit
I'm using SURF code from [EmguCV website](www.emgu.com/wiki/index.php/SURF_feature_detector_in_CSharp). I couldn't give a link becuase I have not enough reputation. Code executing this method is here. After executing this method picture is being sent to picture box. - MrDark

1 Answers

0
votes

Try, SIFTDetector instead of SURFDetector. It gave me better results.

//SURFDetector surfDetector = new SURFDetector(500, false); SIFTDetector surfDetector = new SIFTDetector();

This links give comparisons between feature detection algorithms.

http://computer-vision-talks.com/articles/2011-08-19-feature-descriptor-comparison-report/

http://computer-vision-talks.com/articles/2011-01-04-comparison-of-the-opencv-feature-detection-algorithms/