实验一点特征提取
一、实验目的
1、理解点特征提取的基本概念;
2、熟悉进行点特征提取的基本方法;
3、掌握用MATLA语言进行点特征提取的方法。
二、实验原理
特征主要指明显点,如角点、圆点等。
提取点特征的算子称为兴趣算子或有利算子,即运用某种算法从影像中提取我们所感兴趣的,即有利于某种目的的点。
本次试验使用Moravex算子进行点特征提取。
Moravex 算子于1977年提出利用灰度方差提取点特征的算子,其特点是在四个主要方向上选择具有最大---最小灰度方差的点作为特征点。
其基本步骤为:
1 、计算各像元的兴趣值IV (interest value) 。
在以像素(c
,r)为中心的wxw的影像窗口中,计算四个方向相邻像素灰度差的平方和;
2 、给定一定的阈值,将兴趣值大于该阈值的点作为候选点。
阈值的选择应以候选点中包括所需要的特征点,而又不包括过多的非特征点为原则;
3 、选取候选点中的极值点作为特征点。
在一定大小窗口内,将
候选点中不是最大者均去掉,留下一个兴趣值最大者,该像素即为一个特征点。
三、实验要求
1、读取MATLAB S像处理工具箱中提供的p13.jpg这幅图像,并显
示。
2、用Moravex算子对图像进行点特征提取
四、运行结果
原图:
60 -100
200 50 100 150 200 250 300
Horizontal
original innage
五、源程序代码
% clear all
% close all
% clc
tic
I 二imread('p13.jpg');
origi nalmap=l;
%calculate every pixel's IV(I nterest value)
%divide image I by w*w
w=5;
%divide to m*n m=floor(size(l,1)/w); %rows ,round
n=floor(size(I,2)/w); %colu mns %get the coord in ate of every cen troid c=ceil(w/2)+(0: n-1)*w; %x coordi nate r=ceil(w/2)+(0:m-1)*w; %y coordi nate %calculate every pixel's IV step 二floor(w/2);
for y_un it=1:m
提取点特征之后的图像: featune paints ifi the innage
50 100 150 200 250 300
the cofumns of the image gg 是r 口峑
for x_un it=1: n
%计算横向相邻像素灰度差的平方和
v1=0;v2=0;v3=0;v4=0;
for i=-step:step-1
%+算横向相邻像素灰度差的平方和
v仁 v1+(l(r(y_u nit),c(x_u nit)+i)-I(r(y_u nit),c(x_ uni
t)+i+1))A2;
%+算右斜线方向相邻像素灰度差的平方和
v2=v2+(l(r(y_u nit)+i,c(x_u nit)+i)-l(r(y_u nit)+i+1,c (x_un
it)+i+1))A2;
%+算纵向相邻像素灰度差的平方和
v3=v3+(l(r(y_u nit)+i,c(x_u nit))-l(r(y_u nit)+i+1,c(x _un it))F2;
%+算左斜线方向相邻像素灰度差的平方和
v4=v4+(l(r(y_u nit)-i,c(x_u nit)+i)-l(r(y_u nit)-i-1,c
(x_un it)+i+1))A2;
end
%the min[v1,v2,v3,v4] is the IV of (c,r)
IV_cr(y_u nit,x_u nit)二mi n([v1,v2,v3,v4]);
end
end
%in troduce a threshold 给定一个经验阈值。
阈值的选取应以候选
点包含所需要的特征点,而又不包含过多的非特征点为原则.
exper_thr=50;
IV_cr(IV_cr<exper_thr)二NaN; %remove the value less the n threshold
%选择候选点的极值点为特征点
%choose the size of wi ndow 选择计算窗口大小
wf=9;
%divide the feature points 对候选点进行分割,分割为mf*nf个区域
mf=floor(m/wf); %rows
n f=floor( n/wf); %colu mns
%gai n the coord in ate of the feature point 得到特征点的坐标xc=[];
yc=[];
for y_un it=1:mf
for x unit=1:nf
% 十算分割区域中的最大值
[C,l]=max(IV_cr((y_u nit-1)*wf+1:y_ un it*wf,(x_u nit-1)*w
f+1:x_u ni t*wf));% 得到行
[C1,l1]=max(C);% 得到列
IV_crch(y_u nit,x_u nit)=C1; % 得到分割区域中的最大值
row=I(I1);
col=I1;
crch_row(y_ un it,x_ un it)=(y_ un it-1)*wf+row; % 得到最大值在候选区域中的行数
crch_col(y_u nit,x_u nit)=(x_u nit-1)*wf+col; % 得到最大值在候选区域中的列数
yc=[yc,r((y_ un it-1)*wf+row)];xc二[xc,c((x_u ni t-1)*wf+co l)];
IV_cr((y_u nit-1)*wf+1:y_ un it*wf,(x_u nit-1)*wf+1:x_u nit
*wf)=NaN ;%先去掉所有的点
IV_cr((y_u nit-1)*wf+row,(x_u nit-1)*wf+col)=C1; % 加上符合要求的候选点
end
end
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求。