、实习内容与目的
理解影像中每个像素灰度值的概念;理解点特征在灰度方面的特 点;掌握常用的点特征提取算子及其对应的点特征提取方法,例如 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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务