模板匹配之归一化相关算法实现

归一化相关的算法原理是比较简单的,如下:


所以就编程简单实现匹配的功能,先上代码:



效果如下:


虽说是简单实现,匹配效果可以,但是速度很慢,上面的图片为684*483,模板为41*55,源图片并不算很大,但我粗略的计算了匹配的时间需要80s左右,所以后面还需要进行优化,后面可能再补充上来。

好的,下面是用MATLAB实现归一化相关模板匹配算法的步骤: 1.读取原始图像和模板图像。 2.将原始图像和模板图像转换为灰度图像。 3.计算模板图像的平均值和标准差。 4.对原始图像进行归一化处理,在此过程中需要计算原始图像的平均值和标准差。 5.使用归一化后的原始图像和归一化后的模板图像进行互相关操作。 6.将互相关结果进行归一化处理。 7.找到归一化相关结果中的最大值,即为匹配位置。 下面是MATLAB代码实现: ``` % 读取原始图像和模板图像 I = imread('image.jpg'); T = imread('template.jpg'); % 转换为灰度图像 I = rgb2gray(I); T = rgb2gray(T); % 计算模板图像的平均值和标准差 T_mean = mean(T(:)); T_std = std(double(T(:))); % 对原始图像进行归一化处理 I_norm = (double(I) - mean(I(:))) / std(double(I(:))); % 使用归一化后的原始图像和归一化后的模板图像进行互相关操作 C = normxcorr2(T, I_norm); % 将互相关结果进行归一化处理 C_norm = (C - min(C(:))) / (max(C(:)) - min(C(:))); % 找到归一化相关结果中的最大值,即为匹配位置 [maxC, imax] = max(abs(C_norm(:))); [ypeak, xpeak] = ind2sub(size(C_norm), imax(1)); % 显示结果 figure; imshow(I); hold on; rectangle('Position',[xpeak-size(T,2)/2, ypeak-size(T,1)/2, size(T,2), size(T,1)],'EdgeColor','r','LineWidth',2) title('归一化相关模板匹配结果'); ``` 希望能帮到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值