您的位置:首页 > 其它

灰度模板匹配算法

2016-04-13 10:55 253 查看
1、介绍

基于灰度的图像匹配算法包括:平均绝对差算法(MAD)、绝对误差和算法(SAD)、误差平方和算法(SSD)、平均误差平方和算法(MSD)、归一化积相关算法(NCC)、序贯相似性算法(SSDA)。

下面介绍其中一种绝对误差和算法(SAD)。

2、绝对误差和算法

绝对误差和算法(Sum
of Absolute Differences,简称SAD算法)。

设S(x,y)是大小为mxn的搜索图像,T(x,y)时MxN的模板图像,分别下图(a)、(b)所示,我们的目的是:在(a)中找到与(b)匹配的区域(红框所示)。





3、算法思路

在搜索图S中,取以(i,j)为左上角,MxN大小的子图,计算其与模板图相似度;在所有能够取到的子图中,找到与模板图最相似的子图作为最终结果。SAD算法的相似性测度公式如下。显然,绝对差D(i,j)越小,表明越相似,故只需找到最小的D(i,j)即可确定子图位置。



1<=i<=m-M+1,1<=j<=n-N+1

4、算法评价


优点:

①思路简单,容易理解(子图与模板图对应位置上,灰度值之差的绝对值总和,实质:是计算的是子图与模板图的L1距离)。

②运算过程简单,匹配精度高。


缺点:

①运算量偏大。

②对噪声非常敏感。

5、matlab 代码
%%

%绝对误差和算法(SAD)

clear all;

close all;

%%

src=imread('lena.bmp');

[a b d]=size(src);

if d==3

    src=rgb2gray(src);

end

mask=imread('lena_mask.png');

[m n d]=size(mask);

if d==3

    mask=rgb2gray(mask);

end

%%

N=n;%模板尺寸,默认模板为正方形

M=a;%待搜索图像尺寸,默认搜索图像为正方形

%%

dst=zeros(M-N,M-N);

for i=1:M-N         %行

    for j=1:M-N

        temp=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('搜索图');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: