程式語言:Python
Package:opencv-python
官方網址
OpenCV-Python Tutorials
功能:找出圖片中類似的東西
Template Matching
Package:opencv-python
官方網址
OpenCV-Python Tutorials
功能:找出圖片中類似的東西
演算法
- 輸入兩張影像,分別為 image、template
- 不斷滑動 template,得到 image 上各個位置的比較值,比較值代表相似程度
然後將 image 左上角位置,作為 result 比較值的存放位置 - 完成後可得到 result
可用 minMaxLoc() 函式,找出結果圖的最大或最小值,定位出搜尋位置
限制
- 物體有旋轉時,會找不到
- 物體大小改變時,會找不到
result = cv2.matchTemplate(image, templ, method[, result])
- 參數
- image
- 被尋找的圖片
- 必須為 8-bit or 32-bit
- templ
- 尋找的物品圖片
- size 不能大於 image,且格式需一致
- method
- 比對的方法
- result
- 比較的結果,格式為 numpy.ndarray (dtype=float32)
- 可傳入想儲存結果的 array
- 因 image 大小為 \(W \times H\) 且 templ 為 \(w \times h\) ,所以大小為 \((W-w+1) \times (H-h+1)\)
比對方法
\(I\) 表示 image,\(T\) 表示 template,\(R\) 表示 result- CV_TM_SQDIFF
- 平方差,越小越相似
- \(R(x,y)= \sum _{x',y'} (T(x',y')-I(x+x',y+y'))^2\)
- CV_TM_SQDIFF_NORMED
- 正規化平方差,越小越相似
- 保證當 pixel 亮度都乘上同一係數時,相似度不變
- \(R(x,y)= \frac{\sum_{x',y'} (T(x',y')-I(x+x',y+y'))^2}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}\)
- CV_TM_CCORR
- 相關係數,越大越相似
- \(R(x,y)= \sum _{x',y'} (T(x',y') \cdot I(x+x',y+y'))\)
- CV_TM_CCORR_NORMED
- 正規化相關係數,越大越相似
- 保證當 pixel 亮度都乘上同一係數時,相似度不變
- \(R(x,y)= \frac{\sum_{x',y'} (T(x',y') \cdot I(x+x',y+y'))}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}\)
- CV_TM_CCOEFF
- 去掉直流成份的相關係數,越大越相似
- \(R(x,y)= \sum _{x',y'} (T'(x',y') \cdot I'(x+x',y+y'))\)
where
\(\begin{array}{l} T'(x',y')=T(x',y') - 1/(w \cdot h) \cdot \sum _{x'',y''} T(x'',y'') \\ I'(x+x',y+y')=I(x+x',y+y') - 1/(w \cdot h) \cdot \sum _{x'',y''} I(x+x'',y+y'') \end{array}\) - CV_TM_CCOEFF_NORMED
- 正規化 去掉直流成份的相關係數
- 保證當 pixel 亮度都乘上同一係數時,相似度不變
- 計算出的相關係數被限制在了 -1 到 1 之間
- 1 表示完全相同
- -1 表示亮度正好相反
- 0 表示没有線性相關
- \(R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }\)
where
\(\begin{array}{l} T'(x',y')=T(x',y') - 1/(w \cdot h) \cdot \sum _{x'',y''} T(x'',y'') \\ I'(x+x',y+y')=I(x+x',y+y') - 1/(w \cdot h) \cdot \sum _{x'',y''} I(x+x'',y+y'') \end{array}\)
範例
參考
Template MatchingTemplate Matching
留言
張貼留言