实验一-点特征提取

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验一点特征提取一、实验目的1、理解点特征提取的基本概念;2、熟悉进行点特征提取的基本方法;3、掌握用MATLAB语言进行点特征提取的方法。二、实验原理特征主要指明显点,如角点、圆点等。提取点特征的算子称为兴趣算子或有利算子,即运用某种算法从影像中提取我们所感兴趣的,即有利于某种目的的点。本次试验使用Moravex算子进行点特征提取。Moravex算子于1977年提出利用灰度方差提取点特征的算子,其特点是在四个主要方向上选择具有最大---最小灰度方差的点作为特征点。其基本步骤为:1、计算各像元的兴趣值IV(interestvalue)。在以像素(c,r)为中心的w×w的影像窗口中,计算四个方向相邻像素灰度差的平方和;2、给定一定的阈值,将兴趣值大于该阈值的点作为候选点。阈值的选择应以候选点中包括所需要的特征点,而又不包括过多的非特征点为原则;3、选取候选点中的极值点作为特征点。在一定大小窗口内,将候选点中不是最大者均去掉,留下一个兴趣值最大者,该像素即为一个特征点。三、实验要求1、读取MATLAB图像处理工具箱中提供的p13.jpg这幅图像,并显示。2、用Moravex算子对图像进行点特征提取四、运行结果原图:提取点特征之后的图像:五、源程序代码%clearall%closeall%clcticI=imread('p13.jpg');originalmap=I;%calculateeverypixel'sIV(Interestvalue)%divideimageIbyw*ww=5;%dividetom*nm=floor(size(I,1)/w);%rows,roundn=floor(size(I,2)/w);%columns%getthecoordinateofeverycentroidc=ceil(w/2)+(0:n-1)*w;%xcoordinater=ceil(w/2)+(0:m-1)*w;%ycoordinate%calculateeverypixel'sIVstep=floor(w/2);fory_unit=1:mforx_unit=1:n%计算横向相邻像素灰度差的平方和v1=0;v2=0;v3=0;v4=0;fori=-step:step-1%计算横向相邻像素灰度差的平方和v1=v1+(I(r(y_unit),c(x_unit)+i)-I(r(y_unit),c(x_unit)+i+1))^2;%计算右斜线方向相邻像素灰度差的平方和v2=v2+(I(r(y_unit)+i,c(x_unit)+i)-I(r(y_unit)+i+1,c(x_unit)+i+1))^2;%计算纵向相邻像素灰度差的平方和v3=v3+(I(r(y_unit)+i,c(x_unit))-I(r(y_unit)+i+1,c(x_unit)))^2;%计算左斜线方向相邻像素灰度差的平方和v4=v4+(I(r(y_unit)-i,c(x_unit)+i)-I(r(y_unit)-i-1,c(x_unit)+i+1))^2;end%themin[v1,v2,v3,v4]istheIVof(c,r)IV_cr(y_unit,x_unit)=min([v1,v2,v3,v4]);endend%introduceathreshold给定一个经验阈值。阈值的选取应以候选点包含所需要的特征点,而又不包含过多的非特征点为原则.exper_thr=50;IV_cr(IV_crexper_thr)=NaN;%removethevaluelessthenthreshold%选择候选点的极值点为特征点%choosethesizeofwindow选择计算窗口大小wf=9;%dividethefeaturepoints对候选点进行分割,分割为mf*nf个区域mf=floor(m/wf);%rowsnf=floor(n/wf);%columns%gainthecoordinateofthefeaturepoint得到特征点的坐标xc=[];yc=[];fory_unit=1:mfforx_unit=1:nf%计算分割区域中的最大值[C,I]=max(IV_cr((y_unit-1)*wf+1:y_unit*wf,(x_unit-1)*wf+1:x_unit*wf));%得到行[C1,I1]=max(C);%得到列IV_crch(y_unit,x_unit)=C1;%得到分割区域中的最大值row=I(I1);col=I1;crch_row(y_unit,x_unit)=(y_unit-1)*wf+row;%得到最大值在候选区域中的行数crch_col(y_unit,x_unit)=(x_unit-1)*wf+col;%得到最大值在候选区域中的列数yc=[yc,r((y_unit-1)*wf+row)];xc=[xc,c((x_unit-1)*wf+col)];IV_cr((y_unit-1)*wf+1:y_unit*wf,(x_unit-1)*wf+1:x_unit*wf)=NaN;%先去掉所有的点IV_cr((y_unit-1)*wf+row,(x_unit-1)*wf+col)=C1;%加上符合要求的候选点endend

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功