0

檢測自定義形狀,我想檢測低於形狀,我曾嘗試以下方法:我想使用OpenCV的

1)培訓使用opencv_traincascade級聯和創建使用opencv_createsamples的正面形象 - 沒有成功,很多的誤報,對象沒有很多功能。

2)嘗試做橢圓檢測,由於場景中有很多橢圓,同樣有很多誤報。此外,由於它不是一個完美的橢圓,所以沒有給出可靠的檢測結果。

3)嘗試過的顏色檢測,給出了很好的結果,但對象有多種顏色,從綠色,紅色,藍色和黃色,因此顏色不能用於檢測。此外,它由於照明而變化。

我想知道我是否可以使用邊緣或其他方式定製形狀並在場景中檢測到它,從而訓練分類器。

Results using canny edge detection

任何幫助將不勝感激。

+0

你嘗試了輪廓提取和' CV :: matchShapes'?我發現倒角匹配非常好,但它需要一些特定任務的優化來處理必要的情況,如對象旋轉,對象縮放和透視失真。 http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#double%20matchShapes(InputArray%20contour1,%20InputArray%20contour2,%20int%20method,%20double%20parameter) – Micka

+0

我會檢查出自[大自然保護協會](https://www.kaggle.com/c/the-nature-conservancy-fisheries-monitoring)Kaggle競賽討論板。關於類似問題有很多討論。 – Tchotchke

+0

@Micka謝謝你,我已經試過輪廓提取,但沒有嘗試'cv :: matchShapes'會給出一個嘗試。 @Tchotchke真棒,感謝您指點我的方向 - 將檢查討論(S)。 –

回答

0

也許你可以嘗試這樣的事情。之後,您將獲得邊緣圖像:

  1. 使用findContours()可獲得分離的輪廓。
  2. 繪製黑色圖像上的每個輪廓,並使用convexHull以獲得具有該輪廓的形狀。
  3. 建立你的形狀的邊緣模板,並在其上應用convexHull:這將成爲你的模板來找到每一個新的圖像。
  4. 對於每個新圖像,計算Normalized Cross Correlation並找到最大相關座標。

此方法有一個很強的假設:您要查找的形狀不會改變其旋轉或其比例。如果你想要不變的旋轉和縮放,你應該使用另一種方法來比較模板和Imgae(例如模板匹配是旋轉和縮放不變,例如:http://www.cv-foundation.org/openaccess/content_cvpr_2013/papers/Korman_FasT-Match_Fast_Affine_2013_CVPR_paper.pdf