2014-12-29 168 views
0

我想使应用程序能够使用Kinect相机检测和跟踪对象。EmguCV SURF检测无法正确检测

我使用SURF算法来查找一个对象,完全按照EmguCV的“CSharp中的SURF特征检测器”和EmguCV的示例“SURFFeature”中所述。我从相机捕获图像以检测并在小图片框中显示,而相机图像在大图片框中。但是当我拍摄物体的照片时,SURF算法开始做一些完全随机的匹配。跟踪对象的周围应该有一个红色的矩形,但没有任何反应,匹配的矢量线指向完全不同的对象。

我使用Visual Studio 2010和Kinect for Windows SDK 1.8和EmguCV 2.4.10。

这里是显示的情况的照片:试图捕捉的绳子上的玩具球

enter image description here

试图捕获一本书。 enter image description here

任何人都可以帮助我知道为什么SURF没有正确检测到对象?我究竟做错了什么?

+0

请提供你的代码的样本,这样我们可以指出在那里你可以是想错了。 – seebiscuit

+0

我使用[EmguCV网站]的SURF代码(www.emgu.com/wiki/index.php/SURF_feature_detector_in_CSharp)。因为我没有足够的声望,所以我无法给出链接。执行此方法的代码是[here](http://wklej.org/id/1579131/)。执行此方法后,图片正被发送到图片框。 – MrDark

回答

0

尝试使用SIFTDetector而不是SURFDetector。它给了我更好的结果。

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

此链接给特征检测算法之间的比较。

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/

+0

非常感谢您的回复。不幸的是,改变算法并没有让我的情况更好。我在试图检测图书时附上了屏幕:[link](http://i.imgur.com/0WSICpL.png)。书上的点数相当高,但它并没有围绕它做出红色矩形选择。是否有可能成为线程错误?我创建了Action委托,我在其中创建结果位图并将其应用于pictureBox.Image,然后在图片框中调用委托。或者,这可能是pictureBox控件的问题? – MrDark

+0

您能否提供完整的代码?所以我可以看看,并试图帮助你。 –