内容发布更新时间 : 2024/12/23 16:25:53星期一 下面是文章的全部内容请认真阅读。
基于Matlab的图像匹配定位
知识点:
最小距离分类法是分类器里面最基本的一种分类方法,它是通过求出未知类别向量X到事先已知的各类别(如A,B,C等等)中心向量的距离D,然后将待分类的向量X归结为这些距离中最小的那一类的分类方法。
匹配之前,需要先将图像转换为灰度图,函数为rgb2gray,由于matlab对浮点型支持较为完善,我们还需将图像数据类型更改为double,函数为im2double。之后再将原始图像补0,这样才能遍历图像的每一点,函数padarray。
1 测试1;(代码见matlab code(1)) 数据库图像不变,改变图像A:
Figure 1数据库图像YB
Figure 2图像A
每对匹配计算时间:5s左右 病人图像大小:767kb 数据库图像大小:896字节
每次运算时间:5到8s不等 计算机运行内存:32GB 数据库图像 图像 匹配并定位成功 定位误差较大 错误定位 定位准确率 YB
(1)成功定位结果
20张 11张 3张 6张 55%
(2)差的定位结果
(3)错误定位
matlab code
%(1)
clear;close all
template_rgb = imread('C:\\Users\\yhjyf\\Desktop\\图像pipei\\test01\\模版图B/1.jpg');
src_rgb = imread('C:\\Users\\yhjyf\\Desktop\\图像pipei\\test01\\匹配图A/1.bmp');
%转换为灰度图
template=rgb2gray(template_rgb); template = im2double(template); src=rgb2gray(src_rgb); src = im2double(src);
figure('name','模板匹配结果'),
subplot(1,2,1),imshow(template_rgb),title('模板'),
%球的模板与原始图像的大小
tempSize=size(template);
tempHeight=tempSize(1); tempWidth=tempSize(2); srcSize=size(src);
srcHeight=srcSize(1); srcWidth=srcSize(2);
%在图片的右侧与下侧补0
%By default, paddarray adds padding before the first element and after the last element along the specified dimension.
srcExpand=padarray(src,[tempHeight-1 tempWidth-1],'post');
%初始化一个距离数组 tmp:mj template:x %参见《数字图像处理》 Page561
distance=zeros(srcSize); for height=1:srcHeight for width= 1:srcWidth
tmp=srcExpand(height:(height+tempHeight-1),width:(width+tempWidth-1));
%diff= template-tmp;