模板匹配(matlab)

1.模板匹配代码

%初始化
clear;
% close all;
% clc;

%对图片灰度化处理
reource_p=rgb2gray(imread('jietu.png'));
reource_p_sub=rgb2gray(imread('jietumask.png'));

%读尺寸
[m,n]=size(reource_p);
[m0,n0]=size(reource_p_sub);

result=zeros(m-m0+1,n-n0+1);
vec_sub = double( reource_p_sub(:) );
norm_sub = norm( vec_sub );
for i=1:m-m0+1
    for j=1:n-n0+1
        subMatr=reource_p(i:i+m0-1,j:j+n0-1);
        vec=double( subMatr(:) );
        result(i,j)=vec'*vec_sub / (norm(vec)*norm_sub+eps);
    end
end
%找到最大相关位置
[iMaxPos,jMaxPos]=find( result==max( result(:)));
figure,
subplot(121);imshow(reource_p_sub),title('匹配模板子图像');
subplot(122);
imshow(reource_p);
title('标记出匹配区域的原图'),
hold on
plot(jMaxPos,iMaxPos,'*');%绘制最大相关点

 %用矩形框标记出匹配区域
plot([jMaxPos,jMaxPos+n0-1],[iMaxPos,iMaxPos]);
plot([jMaxPos+n0-1,jMaxPos+n0-1],[iMaxPos,iMaxPos+m0-1]);
plot([jMaxPos,jMaxPos+n0-1],[iMaxPos+m0-1,iMaxPos+m0-1]);
plot([jMaxPos,jMaxPos],[iMaxPos,iMaxPos+m0-1]);

其中%读取图片中的imread(’ ')的图片名替换为你需要识别的图片。

reource_p=rgb2gray(imread('jietu.png'));		%为模板匹配的原图
reource_p_sub=rgb2gray(imread('jietumask.png'));		%为模板匹配的子图片

2.效果验证

模板匹配
备注:
1.子图片需要从原图截取,尺寸与原图截取部分的尺寸相同。
2.代码部分来源于网络,稍作了修改。

MATLAB中,模板匹配是一种常用的图像处理技术,用于在图像中寻找与给定模板最相似的区域。下面是MATLAB中进行模板匹配的基本步骤: 1. 读取图像和模板:首先,使用imread函数读取待处理的图像和要匹配的模板图像。 2. 灰度化处理:将读取的图像和模板图像转换为灰度图像,可以使用rgb2gray函数实现。 3. 模板匹配:使用normxcorr2函数进行模板匹配。该函数会计算图像中每个位置与模板的相似度,并返回一个相关系数矩阵。 4. 寻找最佳匹配位置:根据相关系数矩阵,可以使用max函数找到最大相关系数对应的位置,即最佳匹配位置。 5. 绘制结果:可以使用rectangle函数在原始图像上绘制出最佳匹配位置的矩形框,以便可视化结果。 下面是一个简单的MATLAB代码示例,演示了如何进行模板匹配: ```matlab % 读取图像和模板 image = imread('image.jpg'); template = imread('template.jpg'); % 灰度化处理 grayImage = rgb2gray(image); grayTemplate = rgb2gray(template); % 模板匹配 correlationMatrix = normxcorr2(grayTemplate, grayImage); % 寻找最佳匹配位置 [maxValue, maxIndex] = max(correlationMatrix(:)); [y, x] = ind2sub(size(correlationMatrix), maxIndex); % 绘制结果 figure; imshow(image); hold on; rectangle('Position', [x-size(template,2)+1, y-size(template,1)+1, size(template,2), size(template,1)], 'EdgeColor', 'r', 'LineWidth', 2); hold off; ``` 这是一个简单的模板匹配示例,你可以根据实际需求进行修改和扩展。希望对你有帮助!
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值