基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA算法
簡介:
? ? ? ?本文主要介紹幾種基于灰度的圖像匹配算法:平均絕對差算法(MAD)、絕對誤差和算法(SAD)、誤差平方和算法(SSD)、平均誤差平方和算法(MSD)、歸一化積相關算法(NCC)、序貫相似性算法(SSDA)。下面依次對其進行講解。
MAD算法
介紹
? ? ? ? 平均絕對差算法(Mean Absolute Differences,簡稱MAD算法),它是Leese在1971年提出的一種匹配算法。是模式識別中常用方法,該算法的思想簡單,具有較高的匹配精度和較少的計算量,廣泛用于圖像匹配。
設S(x,y)是大小為mxn的搜索圖像,T(x,y)時MxN的模板圖像,分別下圖(a)、(b)所示,我們的目的是:在(a)中找到與(b)匹配的區域(黃框所示)。
算法思路
? ? ? ? 在搜索圖S中,取以(i,j)為左上角,MxN大小的子圖,計算其與模板圖相似度;在所有能夠取到的子圖中,找到與模板圖最相似的子圖作為最終結果。MAD算法的相似性測度公式如下。顯然,平均絕對差D(i,j)越小,表明越相似,故只需找到最小的D(i,j)即可確定子圖位置:
其中:
算法評價:
優點:
①思路簡單,容易理解(子圖與模板圖對應位置上,灰度值之差的絕對值總和,再求平均,實質:是計算的是子圖與模板圖的L1距離的平均值)。
②運算過程簡單,匹配精度高。
缺點:
①運算量偏大。
②對噪聲非常敏感。
——————————————————————————————————————————————————————————————————————————————
SAD算法
介紹
? ? ? ? 絕對誤差和算法(Sum of Absolute Differences,簡稱SAD算法)。實際上,SAD算法與MAD算法思想幾乎是完全一致,只是其相似度測量公式有一點改動(計算的是子圖與模板圖的L1距離)。這里不再贅述。
算法實現
由于文章所介紹的幾個算法非常相似,所以本文僅列出對SAD算法進行的代碼,其余算法實現就如出一轍了。
MATLAB代碼
<pre name="code" class="cpp">%% %絕對誤差和算法(SAD) clear all; close all; %% src=imread('lena.jpg'); [a b d]=size(src); if d==3src=rgb2gray(src); end mask=imread('lena_mask.jpg'); [m n d]=size(mask); if d==3mask=rgb2gray(mask); end %% N=n;%模板尺寸,默認模板為正方形 M=a;%代搜索圖像尺寸,默認搜索圖像為正方形 %% dst=zeros(M-N,M-N); for i=1:M-N %行for j=1:M-Ntemp=src(i:i+N-1,j:j+N-1);dst(i,j)=dst(i,j)+sum(sum(abs(temp-mask)));end end abs_min=min(min(dst)); [x,y]=find(dst==abs_min); figure; imshow(mask);title('模板'); figure; imshow(src); hold on; rectangle('position',[x,y,N-1,N-1],'edgecolor','r'); hold off;title('搜索圖');
輸出結果
——————————————————————————————————————————————————————————————————————————————
SSD算法
? ? ? ? 誤差平方和算法(Sum of Squared Differences,簡稱SSD算法),也叫差方和算法。實際上,SSD算法與SAD算法如出一轍,只是其相似度測量公式有一點改動(計算的是子圖與模板圖的L2距離)。這里不再贅述。
——————————————————————————————————————————————————————————————————————————————
MSD算法
? ? ? ? 平均誤差平方和算法(Mean Square Differences,簡稱MSD算法),也稱均方差算法。實際上,MSD之余SSD,等同于MAD之余SAD,故此處不再贅述。
————————————————————————————————————————————————————————————————————————————————
NCC算法
? ? ? ? 歸一化積相關算法(Normalized Cross Correlation,簡稱NCC算法),與上面算法相似,依然是利用子圖與模板圖的灰度,通過歸一化的相關性度量公式來計算二者之間的匹配程度。
其中,、分別表示(i,j)處子圖、模板的平均灰度值。
OK,以上便是幾種常見的基于灰度的模板匹配算法。
總結
以上是生活随笔為你收集整理的基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: padarray函数
- 下一篇: SSD算法 模板 匹配