Hu 矩——形狀匹配

形狀匹配
       函數 cv2.matchShape() 可以幫我們比較兩個形狀或輪廓的相似度。如 果返回值越小,匹配越好。它是根據 Hu 矩來計算的。文檔中對不同的方法都 有解釋。
 
我們試着將下面的圖形進行比較:
 
 

import cv2
import numpy as np
img1 = cv2.imread('star.jpg',0)
img2 = cv2.imread('star2.jpg',0)
ret, thresh = cv2.threshold(img1, 127, 255,0)
ret, thresh2 = cv2.threshold(img2, 127, 255,0)
contours,hierarchy = cv2.findContours(thresh,2,1)
cnt1 = contours[0]
contours,hierarchy = cv2.findContours(thresh2,2,1)
cnt2 = contours[0]
ret = cv2.matchShapes(cnt1,cnt2,1,0.0)
print ret

得到的結果是:

• A 與自己匹配 0.0
• A B 匹配 0.001946
• A C 匹配 0.326911
 
看見了嗎,及時發生了旋轉對匹配的結果影響也不是非常大。
注意Hu 矩是歸一化中心矩的線性組合,之所以這樣做是爲了能夠獲取代表 圖像的某個特徵的矩函數,這些矩函數對某些變化如縮放,旋轉,鏡像映射(除 了 h1)具有不變形。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章