2014-12-29 161 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

您能否提供完整的代碼?所以我可以看看,並試圖幫助你。 –