8

我有一個目標圖像要搜索沿其邊緣的曲線以及包含該曲線的模板圖像。我需要實現的是在目標圖像中找到模板圖像中曲線的最佳匹配,並根據得分找出是否匹配。這還包括曲線的旋轉和大小調整。目標圖像可以是Canny邊緣檢測器的輸出,如果這樣做更容易。將曲線圖案與圖像的邊緣匹配

我正在考慮使用OpenCV(通過使用Python或Processing/Java,或者如果那些對所需功能的訪問受限,那麼通過使用C)使事情變得切實有效,但無法找到我是否可以使用任何在OpenCV中可用於完成這項工作的函數(或它們的組合)。我一直在閱讀OpenCV文檔,並開始思考Contours可以完成這項工作,但所有示例都顯示封閉的形狀,而不是我的情況,我需要將開放曲線與邊緣的一部分進行匹配。

那麼有沒有辦法通過使用OpenCV或任何已知的代碼或算法,你會建議做到這一點?

這裏有一些圖片來說明這個問題:

Template image containing the curve to be searched for

Input image to be searched for the template curve and to be matched to its edges; this can also be an edge-image, the output of a Canny Edge detector rather than the unprocessed input image

Resulting match - includes rotation and resizing

回答

2

我首先想到的是Generalized Hough Transform。但是我不知道有什麼好的實現。

我會先在Canny邊緣圖像上嘗試SIFT或SURF。它通常用於查找二維區域,而不是一維輪廓,但是如果在輪廓周圍採用最小邊界框並將其用作搜索圖案,則應該起作用。

OpenCV的有一個實現: Features2D + Homography to find a known object

的問題可能會得到良好的邊緣圖像,在後面的那些黑色的形狀可能會分散注意力。

也看到這個答案#1: Image Processing: Algorithm Improvement for 'Coca-Cola Can' Recognition

+0

謝謝,我會嘗試這些,回來在這裏給我的結果或結果信息。 – ali 2012-08-03 13:59:44

+1

阿里,運氣好嗎? 另請參閱此問題,其中引用您的: http://stackoverflow.com/questions/14530790/image-processing-match-curves-from-one-image-to-another – Rethunk 2013-01-26 18:42:22

+0

謝謝Rehunk,還沒有看到你的直到現在評論;很長一段時間......我沒有真正的解決辦法,但是那時做的工作越來越少了。慢速和無旋轉:我使用簡單的相關匹配,將模板調整爲不同的大小,但不是直接使用圖像上的曲線,而是使用顏色編碼的邊緣圖像,其中每個邊緣點的斜率都有對應的顏色基於每個點上曲線的斜率對模板曲線進行顏色編碼。然後我通過相關性比較這些顏色,結果對於有限/實用的解決方案是可以的。 – ali 2014-07-15 16:28:07