返回信息流我想实现模板与源图像进行比较,以确定在源图像中是否存在与该模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。但是不知道为什么最后输出都不对,真不知道程序有啥问题,还请哪位大牛帮我看看。
Ⅰ:读取原图像(搜索图)和匹配图像(模板图)
yuantu=imread('E:\P1010813.jpg');%读取原图像
pipeitu=imread('afterCut.jpg');%读取匹配图像
Ⅱ:将原图像和匹配图像灰度化,以便于计算
yuantu2gray=rgb2gray(yuantu);%将原图灰度化
pipeitu2gray=rgb2gray(pipeitu);%将匹配图灰度化
Ⅲ: 获取原图像和匹配图像的尺寸
[pipei_height,pipei_width]=size(pipeitu2gray);%获取匹配图象的大小尺寸,其值为[高,宽],将匹配图象的长度值赋给pipei_width,将匹配图象的宽度值赋给pipei_lenth
[yuantu_height,yuantu_width]=size(yuantu2gray);%获取原图象的大小尺寸,其值为[高,宽],将原图象的长度值赋给pipei_width,将原图象的宽度值赋给pipei_lenth
Ⅳ:显示出原图,并调用hold on命令,以实现以后在原图像上做标记
imshow(yuantu);%显示原图像
hold on;
Ⅴ:在原图像上进行扫描,横坐标到原图像的宽度减去匹配图的宽度,纵坐标到原图像高度减去匹配图的高度;对于原图像上扫描到的每个像素点,以此像素点的坐标为准,剪裁(参见imcrop函数说明)出一个大小和匹配图大小一样的矩阵,此像素点为该矩阵的左上角第一个像素;对这个临时矩阵和匹配图像的矩阵取相关系数值(参见corr2函数说明);规定相关系数的值(我设为0.9),如果取得的相关系数值大于规定值,可认为在以此坐标为左上角第一个像素的临时矩阵和匹配图矩阵是相匹配的;如果在此坐标下是匹配的话,则以此为左上角,将匹配区域标记出来。
for i=1:yuantu_height-pipei_height
for j=1:yuantu_width-pipei_width temp_picture=imcrop(yuantu2gray,[j,i,pipei_width-1,pipei_height-1]);
r=corr2(temp_picture,pipeitu2gray);%取得相关系数
if r>0.9%规定值为0.9
%下面用plot函数在原图的坐标系上画出匹配区域
plot(j:j+pipei_width,i,'r');
plot(j:j+pipei_width,i+pipei_height,'r');
plot(j,i:i+pipei_height,'r');
plot(j+pipei_width,i:i+pipei_height,'r');
end
end
end
这是一条镜像帖。来源:北邮人论坛 / matlab / #5514同步于 2009/5/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
急问:图像匹配的问题
CXKS
2009/5/19镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。