opencv模板匹配加速思路

2022-07-11 02:24:12 字數 1012 閱讀 2743

對於工業應用來說,往往需要用到形狀匹配來達到定位功能,visionpro的patmax演算法,halcon的形狀匹配演算法都是基於邊緣的模版匹配。halcon中的形狀匹配具有良好的魯棒性,穩定,準確,快速的特點。opencv中雖然也有形狀匹配演算法,但是,是基於七階不變矩來計算輪廓相似度,具有旋轉縮放不變性。因此,無法求出目標形狀的旋轉和縮放係數。並且對於形狀變換不大的輪廓也很難區分開,比如圓形和正方形。

下面說下實現帶旋轉和縮放的形狀匹配演算法的主要流程

1.獲取模版

(1).對模板影象進行一系列旋轉,縮放,以及金字塔下取樣,生成一系列不同旋轉角度,縮放係數,以及金字塔層數的模板。

(2).提取模板的邊緣。依據canny演算法的原理,提取邊緣點。

(3).計算邊緣點在的x,y方向的梯度值以及總的梯度值。

(4).儲存邊緣點對應的x,y梯度,並將梯度強度歸一化處理以消除光照不均的影響(1除以該點梯度強度,這樣得到的值都是[0,1]區間內的值)並將邊緣點座標轉換為相對於重心的相對座標

經過以上操作,我們便建立好了一系列旋轉,縮放,以及不同金字塔層模版。

2,模版匹配

(1).計算搜尋影象邊緣點梯度資訊。同獲取模板 (2)(3)。

(2).金字塔下取樣,得到多級金字塔影象的邊緣點梯度資訊,再分別進行(1)。

(3).這步是最重要的,通過 歸一化交叉相關(ncc) 演算法計算模板邊緣梯度和目標影象邊緣梯度向量的相關性。

而且該演算法得到的值就是匹配相關性的得分,分值範圍在[0,1],具體實現可以去看**。其實就是使用事先生成的一些列模板讓重心在搜尋影象中平移,每移動一步計算一下邊緣點對應的梯度向量相關性。找到評分最高的點就是匹配到形狀的重心。所用模板的旋轉和縮放係數,就對應搜尋影象中目標的旋轉和縮放。其中金字塔用來對演算法進行加速。先在頂層金字塔進行快速搜尋匹配得到乙個匹配位置,然後在下一層金字塔進行匹配的時候就能在該區域的roi內進行搜尋,以此類推,直到最底層。通過金字塔可以大大加快匹配速度。在搜尋匹配過程中還採用了一種停止條件用來提高速度,如果計算邊緣點梯度相似性過程中得分過低,就可以跳過後續邊緣點的計算,直接移動到下乙個位置。

模板匹配加速方法 opencv

本文 背景概述 opencv中自帶的模板匹配演算法,完全是畫素基本的模板匹配,特別容易受到光照影響,光照稍微有所不同,該方法就會歇菜了!搞得很多opencv初學者剛學習到該方法時候很開心,一用該方法馬上很傷心,悲喜交加,充分感受到了理想與現實的距離,不過沒關係,這裡介紹一種新的模板匹配演算法,主要是...

OpenCV模板匹配

include include opencv2 opencv.hpp using namespace std using namespace cv int main int argc,char argv load reference image img imread argv 1 always ch...

opencv模板匹配

模板匹配是一種用於在源影象s中尋找定位給定目標影象t 即模板影象 的技術。其原理很簡單,就是通過一些相似度準則來衡量兩個影象塊之間的相似度similarity s,t 2.用途 模板匹配方法常用於一些平面影象處理中,例如印刷中的數字 工業零器件等小尺寸目標影象識別分類。3.方法 模板匹配中,源影象和...