您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页基于MATLAB的点特征提取

基于MATLAB的点特征提取

来源:尚车旅游网
基于MATLAB点特征提取实习报告

、实习内容与目的

理解影像中每个像素灰度值的概念;理解点特征在灰度方面的特 点;掌握常用的点特征提取算子及其对应的点特征提取方法,例如 Harris 算子。

利用MATLAB^件分析任意一种应用于数字图像处理中的边缘检 测算子,研究它的提取方法以及实现提取特征点。

、实习原理

基本思想:从图像局部的小窗口观察图像特征

角点定义:窗口向任意方向的移动都导致图像灰度的明显变化

角点:

沿往罷方向移臥 明魁灰度变化

平坦区無: 任意方向移动. 无灰度变化

边塚主

沿着药绿方向移动, 无灰度变化

Harris角点检测:数学描述

将图像窗口平移[u,v]产生灰度变化E[u,v]

由:氏詹卜聪宴十耐一然隔吨十空十琢丁 +心曲°倉

得到:

E他V)二£血(召切卩

A十唧+ 0(1?, V2)]2

于是对于局部微小的移动量[u,v],可以近似得到下面的表达:

E(H. v' = [u. p] AZ :|

其中,M是 2*2矩阵,可由图像的导数求得:

Mu

窗口移动导致的图像变化:实对称矩阵的特征值分析

E(柑.t ) = [d. r] A/ V

通过M的两个特征 值的大小对图像点 进行分类:

\"Corner\"

Xj和心都较大几数值 相

当―扯; 图佛窗□在所有方向上移

动都产土明辰辽眞丈化

如果M和対都很小, 图像曲口在所有方向上 韩胡都九明显如度变化

“Edge”

入L A

定义角点响应函数:R

/? = det Af-A[tra€e(A/)]?

其中

det A/ = Aj Aa , trace (A/) = A; -v

Harris角点检测结果如下图所示:

三、实习步骤及相关代码

file name='yua ntu2.jpg:

X=imread(filename);% 读取图像 %imshow(X);

Info=imfinfo(filename);%获取图像相关信息 if(In fo.BitDepth>8) f=rgb2gray(X); end %《基于特征点的图像配准与拼接技术研究》

%计算图像亮度f(x,y)在点(x,y)处的梯度 ---------------------------------

%fx=[50 -5;80-8;50-5];%高斯函数一阶微分,x方向(用于改进的Harris角点提取算法) ori_im=double(f)/255;%unit8 转化为 为双精度 double fx=[-2-1012];%x方向梯度算子(用于Harris角点提取算法) Ix=filter2(fx,ori_im);%x 方向滤波

%fy=[585;000; -5-8-5];%高斯函数一阶微分,y方向(用于改进的Harris角点提取算法) fy=[-2;-1;0;1;2];%y方向梯度算子(用于Harris角点提取算法) Iy=filter2(fy,ori_im);%y 方向滤波

%构造自相关矩阵 ------------------------------------------ 1x2=1x42; Iy2=Iy.A2; lxy=lx.*ly; clearIx; clearly;

h=fspecial('gaussian',[77],2);% 产生 7*7 的高斯窗函数,sigma=2 Ix2=filter2(h,lx2); Iy2=filter2(h,ly2); lxy=filter2(h,lxy);

%提取特征点 ------------------------------------------ height=size(ori」m,1); width=size(ori_i m,2);

result=zeros(height,width);%纪录角点位置,角点处值为 R=zeros(height,width); Rmax=0;%图像中最大的R值

k=0.06;%k为常系数,经验取值范围为 fori=1:height forj=1:width

M=[lx2(i,j)lxy(i,j);lxy(i,j)ly2(i,j)];%autocorrelatio nmatrix R(i,j)=det(M) -k*(trace(M))A2;% 计算 R ifR(i,j)>Rmax Rmax=R(i,j); en d; en d; en d;

%T=0.01*Rmax;%固定阈值,当 R(i,j)>T时,则被判定为候选角点 T=0.1*Rmax;%固定阈值,当R(i,j)>T时,则被判定为候选角点

0.04~0.06

1

%在计算完各点的值后,进行局部非极大值抑制 ---------------------------- cnt=0; fori=2:height -1 forj=2:width -1

%进行非极大抑制,窗口大小 if(R(i,j)>T&&R(i,j)>R(i result(i,j)=1; cn t=c nt+1; en d; en d; en d; i=1; forj=1:height fork=1:width ifresult(j,k)==1; corn ers1(i,1)=j; corn ers1(i,2)=k; i=i+1; en d; en d; en d;

[posc,posr]=fi nd(result==1); figure,imshow(ori_im); holdo n;

plot(posr,posc,'r+'); >>file name='yua ntu.jpg'; X=imread(filename);% 读取图像 %imshow(X);

Info=imfinfo(filename);%获取图像相关信息 if(In fo.BitDepth>8) f=rgb2gray(X); end

%《基于特征点的图像配准与拼接技术研究》

%计算图像亮度f(x,y)在点(x,y)处的梯度 --------------------------------- %fx=[50 -5;80-8;50-5];%高斯函数一阶微分,x方向(用于改进的Harris角点提取算法) ori_im=double(f)/255;%unit8 转化为 为双精度 double fx=[-2-1012];%x方向梯度算子(用于Harris角点提取算法) Ix=filter2(fx,ori_im);%x 方向滤波

%fy=[585;000; -5-8-5];%高斯函数一阶微分,y方向(用于改进的Harris角点提取算法) fy=[-2;-1;0;1;2];%y方向梯度算子(用于Harris角点提取算法) Iy=filter2(fy,ori_im);%y 方向滤波 R(i,j)>R(i,j+1)&&R(i,j)>R(i+1,j

3*3

-1)&&...

-1)&&R(i,j)>R(i+1,j)&&R(i,j)>R(i+1,j+1))

-1,j-1) &&R(i,j)>R(i -1,j)&&R(i,j)>R(i -1,j+1) &&R(i,j)>R(i,j

%构造自相关矩阵 ------------------------------------------ 1x2=1x42; Iy2=Iy.A2; lxy=lx.*ly; clearIx; clearly;

h=fspecial('gaussian',[77],2);% 产生 7*7 的高斯窗函数,sigma=2 Ix2=filter2(h,lx2); Iy2=filter2(h,ly2); lxy=filter2(h,lxy);

%提取特征点 ----------------------------------------- height=size(ori」m,1); width=size(ori_i m,2);

result=zeros(height,width);%纪录角点位置,角点处值为 1

R=zeros(height,width); Rmax=0;%图像中最大的R值

k=0.06;%k为常系数,经验取值范围为 0.04~0.06

fori=1:height forj=1:width

M=[lx2(i,j)lxy(i,j);lxy(i,j)ly2(i,j)];%autocorrelatio nmatrix R(i,j)=det(M) -k*(trace(M))A2;% 计算 R ifR(i,j)>Rmax Rmax=R(i,j); en d; en d; en d;

%T=0.01*Rmax;%固定阈值,当 R(i,j)>T时,则被判定为候选角点 T=0.1*Rmax;%固定阈值,当R(i,j)>T时,则被判定为候选角点

%在计算完各点的值后,进行局部非极大值抑制 ---------------------------- cnt=0; fori=2:height -1 forj=2:width -1

%进行非极大抑制,窗口大小 3*3 if(R(i,j)>T&&R(i,j)>R(i -1,j-1) &&R(i,j)>R(i -1,j)&&R(i,j)>R(i -1,j+1) &&R(i,j)>R(i,j

R(i,j)>R(i,j+1)&&R(i,j)>R(i+1,j

-1)&&R(i,j)>R(i+1,j)&&R(i,j)>R(i+1,j+1))

result(i,j)=1; cn t=c nt+1; en d; en d; en d;

-1)&&…

i=1; forj=1:height fork=1:width ifresult(j,k)==1; corn ers1(i,1)=j; corn ers1(i,2)=k; i=i+1; en d; en d; en d;

[posc,posr]=fi nd(result==1); figure,imshow(ori_im); holdo n;

plot(posr,posc,'r+');

上面是Harris角点检测的数学推导,通过查阅相关文献,对 Harris角点检测的推导过程进行整理,其简要步骤如下:

Harris角点检测器分为三步:梯度计算,矩阵形成和特征值计 算。首先,计算x和 方向上的平滑(使用高斯函数)梯度来检测给定 灰度图像 '中的角点,由下面的式子给出:

其中,,是平滑参数。 计算图像「「的平滑梯度为:

G = 妙)冈心砂)

心=叭@, !/)凶训

其中,“嚴”表示二维卷积运算。

Harris角点检测器依赖于计算一个矩阵(与自相关函数有关) 由下面的式子给出:

其中,

2

= £ 力[Zy{xjj

j.eWy.elv

叽■ EE /」('门=ifi )『詁t、ih」

从上面的式子可以看出,壬羯,理v和表示平均梯度幅值,矩阵 的特征值提供关于给定位置的边缘的信息。 如果给定位置的矩阵的特 征值都很大,那么大部分区域均为角点。 Harris通过计算响应函数 可以避免精确的特征值计算,由下面的式子给出:

R = det A — tftracefA)]

2

其中 ■ ' ■

llJ1 1

是可调参数,一般设置在

区间[0.04,0.06]内。通过判定R大小来判断像素点是否为角点,对 于角点,」的值很大;而平坦的区域,

的值很小。

四、实习体会

利用MATLAB^件可以大大的简化计算,可以直观迅速的得到所 需要的结果。MATLAB软件功能强大,通过本次综合设计更一步了解 和掌握该软件的使用方法,更好的利用该软件解决一些比较复杂的问 题。

本次实验与数字图像处理该门知识有关,所以必须掌握该课的基 本知识,还要学会怎样利用 MATLAB^件和实际结合起来,解决数字 图像处

理中的问题。通过理论与实际的结合,可以更好的掌握该门学 科知识,为后一阶段的进一步学习打下好的基础,同时,通过本次综 合设计看出自己运用该软件的不熟练, 可以及时的调整自己,认真学 号怎样使用该软件以及掌握该门学科。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务