图像特征检测 沈阳理工大学数字图像处理课程设计Word文件下载.docx
《图像特征检测 沈阳理工大学数字图像处理课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《图像特征检测 沈阳理工大学数字图像处理课程设计Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
![图像特征检测 沈阳理工大学数字图像处理课程设计Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/4/f9cc584f-8776-4170-a6f2-a2bc03d0e54d/f9cc584f-8776-4170-a6f2-a2bc03d0e54d1.gif)
6.2.1去除真角点附近的伪角点14
6.2.2边缘轮廓上的伪角点处理15
6.3Harris与SUSAN算法的比较15
6.3.1Harris基本原理15
6.3.2实验分析变化17
6.4Harris与SUSAN小结18
结论19
参考文献20
1课程设计目的
(1)学习并了解Matlab软件的实用,并了解Matlab在数字图像中的应用。
学会编写Matlab程序并调试、运行。
(2)了解图像的检测运算在数字图像处理中的初步应用。
(3)体会图像特征检测过程和处理前后图像的变化。
2课程设计要求
(1)了解Matlab软件的实用,在Matlab环境下学会用软件对图像进行处理,并获得预期的结果。
(2)了解图像特征检测的原理和作用。
(3)对比处理后的图像与原图像,得出处理后的结论。
3特征点检测的原理及方法
3.1SUSAN算法基本原理
SUSAN算法是由SimthSM和BradyJM首先提出的一种低层次图像处理小核值相似区的方法SUSAN(SmallUnivalueSegmentAssimilatingNucleus)即小核值相似区。
该算法直接利用像素的灰度进行角点检测。
而不考虑曲率等复杂的角点特征。
SUSAN检测算子的基本原理是通过统计某一像素局部区域内与该像素等灰度值近似的的点的个数,实现角点检测。
该算法一般利用一个37像素的圆形模板来实现的,如图2.1所示。
图2.2中圆形模板e的圆心称为核心,假如模板中的某些像素的亮度与核心相同或相似,就定义这些像素组成的区域为USAN(核值相似区)区域。
图2.3显示出了不同位置的USAN区域面积大小。
USAN区域包含了图像结构的以下信息:
在a位置,核心点在角点上,USAN面积达到最小:
在b位置,核心点在边缘线上时,USAN区域面积接近最大值的一半;
在c、d位置,核心点处于黑色矩形区域之内,USAN区域面积接近最大值。
因此,可以根据USAN区的面积大小检测出角点。
图3.1包含37个像素的圆形模板
图3.2简单图像中的四个圆形模板
图3.3不同位置USAN区域面积的大小
具体检测时,是用圆形模板扫描整个图像,比较模板内每一像素与中心像素的灰度值。
并给定阈值来判别该像素是否属于USAN区域,式2.1是SUSAN算法的原始相似比较函数。
式2.2是在实际应用中比较常用的相似比较函数:
(3.1)
(3.2)
用于计算以每个像素点为核心的USAN区的像素个数;
是模板中心像素(核)的灰度值;
为模板内其他任意像素的灰度值;
t是区分特征目标与的一个重要阈值,一般取25。
图像中某一点USAN区域大小可由下式2.3表示:
(3.3)
式中,
是以
为圆心的模板。
在得到每个像素的USAN区域后。
再由下式2.4角点响应函数(Corner-ResponseFunction,CRF)产生角点初始响应:
(3.4)
式中,g是抑制噪声的几何阈值,它决定了输出角点的USAN区域的最大值。
同时它还决定了所检测到的角点的尖锐程度。
g取得越小,所检测到的角点越尖锐。
用这种原理,取不同的几何门限,不但能检测角点.还可以检测交点、边缘等特征。
SUSAN算子计算简单,不需要用导数求边缘强度及方向梯度,增强了抗噪能力;
且计算时间明显减少,易于硬件实现。
然而SUSAN算法并不能完全消除孤立噪声点及由于模糊导致而致立体匹配误差率较高。
SUSAN算法流程图如图4.4所示。
图3.4SUSAN算法流程图
3.2SUSAN算法的实现
3.2.1读入图像
关闭所有窗口(程序运行产生的,不包括命令窗,editor窗和帮助窗),清除所有工作空间中的变量,读入图像并显示原始图像。
3.2.2SUSAN算法显示边缘图
构造
半径为3个像素的圆型模板,遍历图像的每一个点。
当像素位于模板内时,根据公式(10)求c和n(n的最大值为37),
(3.5)
其中,为掩模核在图像中的坐标,(x,y)为掩模区域其它点的坐标。
、I(x,y)分别为点和的灰度值。
阈值决定了两个点相似的最大差异。
C为输出的结果。
其中:
为USAN中象素个数,它给出了USAN值。
将与某固定阈值相比较,得到SUSAN算法对图像角点的响应函数(2.5):
其中,
(
为
的最大值),恰好是理想边缘的USAN区大小,而对于实际有噪声影响的图像,边缘的USAN区一般都大于
。
并以n为基础创建一个新的窗口figure
(2)并显示结果为图像的边缘。
4.matlab程序代码
clc,clear;
harris_result=[];
%----保存图像所有信息、读取图像-----
FileInfo=imfinfo('
F:
\0.jpg'
);
Image=imread('
%-----转换为灰度值图像---------
if(strcmp('
truecolor'
FileInfo.ColorType)==1)
Image=im2uint8(rgb2gray(Image));
end
%------------------计算图像的方向导数------------------
%-----横向Prewitt差分模板
dx=[-101;
-101;
-101];
Ix2=filter2(dx,Image).^2;
Iy2=filter2(dx'
Image).^2;
Ixy=filter2(dx,Image).*filter2(dx'
Image);
%--------------------计算局部自相关矩阵----------------
%----生成9*9的高斯窗口(窗口越大,探测到的角点越少)
h=fspecial('
gaussian'
9,2);
A=filter2(h,Ix2);
B=filter2(h,Iy2);
C=filter2(h,Ixy);
%---------------矩阵Corner用来保存候选角点位置------------
nrow=size(Image,1);
ncol=size(Image,2);
Corner=zeros(nrow,ncol);
%-----------------相似性筛选------时间优化------------
%-----参数t:
点(i,j)八邻域的“相似度参数”,中心点与邻域其他八个点的像素值之差在
%------------(-t,+t)之间,则确认他们为相似点
t=20;
boundary=8;
%---去除边界上boundary个像素
fori=boundary:
1:
nrow-boundary+1
forj=boundary:
ncol-boundary+1
nlike=0;
%----相似点的个数
ifImage(i-1,j-1)-Image(i,j)>
-t&
&
Image(i-1,j-1)-Image(i,j)<
t
nlike=nlike+1;
end
ifImage(i-1,j)-Image(i,j)>
Image(i-1,j)-Image(i,j)<
ifImage(i-1,j+1)-Image(i,j)>
Image(i-1,j+1)-Image(i,j)<
ifImage(i,j-1)-Image(i,j)>
Image(i,j-1)-Image(i,j)<
ifImage(i,j+1)-Image(i,j)>
Image(i,j+1)-Image(i,j)<
ifImage(i+1,j-1)-Image(i,j)>
Image(i+1,j-1)-Image(i,j)<
ifImage(i+1,j)-Image(i,j)>
Image(i+1,j)-Image(i,j)<
ifImage(i+1,j+1)-Image(i,j)>
Image(i+1,j+1)-Image(i,j)<
ifnlike>
=2&
nlike<
=6
Corner(i,j)=1;
%-----------计算角点响应函数值---corness=det(u)-k*trace(u)^2-------
CRF=zeros(nrow,ncol);
CRFmax=0;
%----图像中角点响应函数的最大值,作阈值用
k=0.05;
ifCorner(i,j)==1
M=[A(i,j)C(i,j);
C(i,j)B(i,j)];
CRF(i,j)=det(M)-k*(trace(M))^2;
ifCRF(i,j)>
CRFmax
CRFmax=CRF(i,j);
%--------判定当前位置是否为角点------------
count=0;
%----角点个数
t=0.01;
t*CRFmax&
CRF(i,j)>
CRF(i-1,j-1)...
&
CRF(i-1,j)&
CRF(i-1,j+1)...
CRF(i,j-1)&
CRF(i,j+1)...
CRF(i+1,j-1)&
CRF(i+1,j)...
CRF(i+1,j+1)
count=count+1;
else
Corner(i,j)=0;
figure,imshow(Image);
holdon;
column_ave=0;
row_ave=0;
k=0;
forx=i-3:
i+3
fory=j-3:
j+3
ifCorner(x,y)==1
row_ave=row_ave+x;
column_ave=column_ave+y;
k=k+1;
ifk>
harris_result=[harris_result;
round(row_ave/k)round(column_ave/k)];
plot(column_ave/k,row_ave/k,'
b.'
5.算法的应用
为了更好地验证本文中所提出算法的有效性,利用复杂模拟图像和真实图像对算法进行了检测。
输入真实的楼房图像如图6.1所示:
图5.1原始图
提取了角点后的图如5.2所示:
图5.2提取了角点后的图像
因为各个图形的角点离其他图形很近,且在一张图内,各个角点相距较远,所以使用较大的抑制窗口,如果两个真角点在同一个抑制窗口内就会有一个不剔除。
实验结果表明本算法可以有效提取图像中好的角点,并使角点均匀的分布在图像上。
6.算法的评价
6.1算法的改进
本文通过在灰度图像上寻找SUSAN算子的极值提取特征点,使用matlab语言编程实现了SUSAN特征点检测算法,首先构造一个圆形模板遍历整个图像利用相似比较函数得出的结果与阈值t进行比,然后计算出USAN区域的大小n与阈值g比较得到角点的相应函数,与原来的SUSAN算法相比,为了得到正确的角点对检测出的角点群利用非极大值抑制函数(NMS)方法筛选出具有局部最大角点响应值的候选点,并把它们确认为最终的角点检测结果。
NMS法的范围选定在以被检测点为中心的
方形邻域内,最大值抑制使伪角点大大减少。
6.2参数对角点的影响
在运用SUSAN研究发现,在使用基本SUSA算法提取角点时经常会提取到两种不相关的点,一种是真角点附近的点,另外一种是边缘轮廓上的点,这些点成为伪角点被一起提取出来。
针对两种伪角点的产生原因分别提出两种简洁的方法进行处理,达到较好的效果。
6.2.1去除真角点附近的伪角点
算法对图像进行处理时,很难对一些曲率较高的角点进行单像素精度的提取这是因为当进行USAN区域面积与门限值g的对比时,一些曲率较大的角点,其周围一些边缘点或内部点同样满足USAN面积小于g的条件因此,在角点提取时这些点同时被提取出来并成为伪角点。
原则上可以令g取较小的值而避免这些伪角点的出现,但这样同时造成对曲率较大的角点提取失败的结果。
在SUSAN算法中,可以根据不同的情况,即根据图像边缘的形状,以及目标和背景的灰度对比度,选择合适的门限t和g。
6.2.2边缘轮廓上的伪角点处理
有时候在提取角点时发现一些边缘上经常会产生大量的伪角点。
这主要是因为圆形模板面积过小而导致阈值g的选取过于粗糙,而若对所有像素都采用大模板进行覆盖处理,则必将大大降低处理速度。
因此,在进行一轮小的模板提取角点后,针对边缘上的伪角点进行第二轮的角点提取。
主要算法思路是选取更大的模板(例如11×
11的模板)对第一轮检测到的所有角点进行覆盖,同时选择合适的阈值g剔除不满足阈值要求的伪角点。
6.3Harris与SUSAN算法的比较
和SUSAN算法一样,Harris算法也是基于灰度图像特征点检测的算法suansan算法原理在第二章已论述过不再赘述,下面介绍Harris基本原理。
6.3.1Harris基本原理
Harris角点检测算法是由ChrisHarris和MikeStephens在1988年提出该算法是在Moravec算法的基础上发展起来的Moravec算法是研究图像中一个局部窗口在不同方向进行少量的偏移后考察窗口内图像亮度值的平均变化需要考虑下面三种情况:
(1)如果窗口内区域图像的亮度值恒定那么所有不同方向的偏移几乎不发生变化。
(2)如果窗口跨越一条边那么沿着这条边的偏移。
几乎不发生变化但是与边垂直的偏移会发生很大的。
(3)如果窗口包含一个孤立的点或者角点那么所有不同方向的偏移会发生很大的变化。
下面介绍Moravec算法以及Harris算法在其基础上做出的一些改进
(1)计算像素点的自相关值的时候只考虑了像素点的8个方向Harris等通过区域变化扩展将一些灰度强度变化比较小的体现出来如式(11)所示:
(6.1)这里一阶导数可以近似为:
(6.2)
因此灰度强度变化比较小的情况
可以写成:
(6.3)
其中
(6.4)
(2)Moravec算法没有对图片进行降噪处理所以对噪声比较敏感Harris算法使用平移的圆形窗口对图像进行预处理来降噪这里使用了高斯窗口:
(6.5)(3)Moravec算法对边缘响应比较敏感解决方法灰度变化比较小时
可以精确写为
,式中M为:
(6.6)
为了避免求M的特征值使用TrM和Det(M):
(6.7)
定义角点响应函数(CRF)为:
(6.8)
上式中角点响应函数R在角点的区域是正值在边界的区域是负值不变化的区域是很小的值在图像角点检测的过程中如果R值大于某个给定的阈值则这个点为角点。
总体来说Harris算法是一种非常有效的角点检测算法优点主要表现在以下两个方面:
(1)提取的角点比较稳定只要不是在大尺度状态下提取的角点Harris算法提取出来的角点是比较稳定的。
(2)Harris算法提取的角点比较均匀合理根据实验可以得出在纹理信息比较丰富的区域Harris算法可以提取出比较多的有用的角点而在纹理信息比较少的区域提取的角点则比较少。
6.3.2实验分析变化
通过某计算机立体视觉系统分别获取模型汽车的单幅影像与立体影像对,在matlab7.8平台上编程实现对SUSAN、Harris算子的点特征提取,并采用基于匹配支持度的松弛匹配算法对立体影像对进行匹配比较。
对于单幅影像,由于Harris算子点特征提取操作是通过确定图像中所能提取的最大可能的特征点数目
来选择
值最大的若干象素点作为特征点,因此,当采用Harris算子提取同一目标物影像中的特征点时,可设置不同数目的
来观察提取特征点的分布和数量。
随着
的不同,提取出特征点的数量和分布在相应不断调整。
在SUSAN算子特征提取中,包括掩模核与掩模区域中其它点灰度值最大差异的阈值
,SUSAN算法对影像特征点响应的阈值
,排除影像孤立噪声点干扰的阈值
等多组阈值参数。
相比之下,采用Harris算子提取影像中的特征点,其阈值参数的选择就要简单的多,只需选择确定影像中所能提取的最大可能的特征点数目
,并可以此作为调整特征点分布的参考。
当对大小为2400×
1600象元的航空影像分别采用上述两种算子进行点特征提取时,整幅影像中SUSAN算子有些房屋角点未能提取出,而Harris算子提出了几乎所有角点特征。
但SUSAN算子提取所用时间较Harris算子少近10倍。
6.4Harris与SUSAN小结
Harris算子是计算机视觉界使用较为广泛的一种点特征提取算子,SUSAN算子是国际上新近推出并已得到广泛应用的保持结构算子。
与传统点特征算子比较,前者具有简单、稳定、易于实现的特点。
由上述点特征提取与随后的立体影像匹配结果分析可得出:
利用Harris算子不需设置阈值,整个过程的自动化程度高,可以根据匹配结果,定量调整提取的特征点数。
同时它抗干扰强、精度高。
SUSAN算子提取特征点分布合理,较适合提取图像边缘上的拐点,由于它不需对图像求导数,所以也有较强的抗噪声能力,利用SUSAN算法提取图像拐点,阈值的选取是关键。
它没有自适应算法,也不象Harris算法可根据需要提出一定数目的特征点。
但该算法编程容易,易于硬件实现。
为克服影像灰度值分布不均对提取SUSAN算子角点的影响,可对影像采取二值化(或多值化)分割,以进一步改进提取效果。
结论
本文用matlab语言实现了SUSAN角点算法,并着重分析了基本的SUSA算法在提取角点时出现多余的伪角点,并讨论了真角点附近及边缘轮廓上的伪角点的处理方法。
经实验证明,采用改进的算法后,角点提取精度有较明显的提高。
对各种类型的角点都能能获得较好的结果。
但是SUSAN角点检测存在不足有:
①采用固定阈值不适合一般的情况,需要只有阈值g自适应,阈值t只能手动修改
②图像中的噪声对所提取的特征有较大影响,实验表明此算法可靠性稍差。
角点检测算法的设计与实现涉及多方面的理论、方法和技术,本算法还有许多新的问题需要解决,需要在实际应用中不断的积累和完善,在以下几个方面还需要做进一步的完善和开发:
1能智能选取阈值t及检测模版的大小,减少参数输入的个数。
2能判断角点的好坏,去除大量无用的伪角点。
有效的减少噪点。
能在复杂的图像中有效剔除噪点。
通过这次的课程设计,我深深的感受到了自身的不足。
进行课程设计不但需要多方面的知识,同时还要考验一个人的独立动脑能力和动手能力,这在课本上学不到的。
另外,这还要求我们具有一定的自学能力,在面对多次错误时要能冷静,并且还要有坚定的意志力。
在这次课程设计中,我得到的不仅仅是知识的补充,更多的是问题分析能力的提高,虽然只有短短一周时间,却给了我比平常更多的磨练,也让我在巩固书本知识的同时学到了更多的东西。
在这次的课程设计中,我看到了理论与实际相结合的重要性,同样,我还感受到了将理论实现于现实的重大喜悦,当代码最终成功运行并出现正确的仿真结果时,那种巨大的成就感是无法用言语来形容的。
虽然本次课程设计已经结束了,但是我不会忘记从中收到的感受与启发,相信在以后的学习中,我将更加认真努力,争取从知识以及动手能力方面都能更上一层楼!
最后,向我的实验老师致以最真挚的谢意!
参考文献
[1]田原,梁德群,吴更石.直接基于灰度图像的多尺度角点检测方法[J]信号处理,1998,14(7-11):
6-9.
[2]杨莉,初秀琴,李玉山.最小亮度变化角点自适应检测算法研究[J].西安电子科技大学学报,2003,30(4):
530-533.
[3]费旭东,荆仁杰.基于知识的快速角点提取[J].计算机学报,1994,17(1