基于Matlab的图像特征识别及匹配 下载本文

内容发布更新时间 : 2024/11/16 4:23:13星期一 下面是文章的全部内容请认真阅读。

基于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;