一:基本原理
NCC是一種基于統計學計算兩組樣本資料相關性的算法,其取值範圍為[-1, 1]之間,而對圖像來說,每個像素點都可以看出是RGB數值,這樣整幅圖像就可以看成是一個樣本資料的集合,如果它有一個子集與另外一個樣本資料互相比對則它的ncc值為1,表示相關性很高,如果是-1則表示完全不相關,基于這個原理,實作圖像基于模闆比對識别算法,其中第一步就是要歸一化資料,數學公式如下:

二:實作步驟
(1) 擷取模闆像素并計算均值與标準方差、像素與均值diff資料樣本
(2) 根據模闆大小,在目标圖像上從左到右,從上到下移動視窗,計
算每移動一個像素之後視窗内像素與模闆像素的ncc值,與門檻值比較,大于
門檻值則記錄位置
(3) 根據得到位置資訊,使用紅色矩形标記出模闆比對識别結果。
(4) UI顯示結果
三:程式設計實作
基于JAVA語言完成了整個算法程式設計實作與示範,其中第一步的代碼如下:
第二步的實作代碼如下:
第三步的實作代碼如下:
其中第二步用到的計算NCC的方法實作如下:
UI部分完整源代碼如下:
四:程式運作效果如下
其中左邊是目标圖像、右邊為模闆圖像
PS:部落格從10月份開始每月都有多篇相關圖像處理文章更新
歡迎大家繼續關注