2014-02-17 35 views
0

圖片:http://answers.opencv.org/upfiles/1392627645523812.jpg 大家好,
我想比較兩個輪廓&找到它們之間的Hausdorff距離來找到兩個輪廓之間的相似性。當我將右側的模板輪廓作爲參考模板輪廓從左側找到相似輪廓時,由於場景輪廓點從模板輪廓點轉換而出現錯誤。其實我直接從兩幅圖像中取得輪廓點。正如你所看到的,我不能裁剪輪廓區域,因爲它影響了相鄰的輪廓。如何比較兩個輪廓從彼此的位置翻譯?

我應該使用場景圖像大小製作一張空白圖像,並將我的模板輪廓滑過場景圖像以查找匹配嗎?或者還有其他更好的方法嗎? 問候, Balaji.R

回答

1

你可以做到以下幾點:

  1. 檢測輪廓在原始圖像。
  2. 獲取每個輪廓的輪廓序列/點。例如,假設第一個起始點存儲爲輪廓-1中的點1,點2,點3等(僅是一個粗略示例)。
  3. 然後找到每個輪廓的最小和最大x和y座標。
  4. 對於每個輪廓width = max_x - min_xheight = max_y - min_y
  5. 然後通過

    regionOfInterest =矩形(MIN_X,MIN_Y,寬度,高度) templateImage = originalImage(regionOfInterest),用於每個輪廓創建單個圖像;

  6. 現在,執行matchTemplate();在每個單獨的模板圖像(從每個輪廓創建)和原始圖像之間,然後您可以找到最大合併的位置。

  7. 如果您認爲模板圖片的比例也可能有所不同,那麼您可以在模板圖片上使用pryUp()pryDown()
+0

謝謝@skm的快速回復。我也在研究相同的邏輯... –