您好,欢迎访问三七文档
Susan、Harris和Moravec三大点特征提取算法的比较及利用点特征提取算法对建筑物角点的提取杨昊翔,李佳瑞,向泓铭武汉大学遥感信息工程学院武汉430079摘要:点特征算法指包含Susan算法、Harris算法和Moravec算法等在内的多种对图像中特征点提取的算法,本文讨论了这三种算法的比较以及主要应用改进Susan算法对建筑物角点的提取。关键词:Susan算法、Harris算法、Moravec算法、建筑物。Abstract:ThecharacteristicsofpointalgorithmwhichcontainsSusanalgorithm,HarrisalgorithmMoravecalgorithmandsoon,isavarietyofalgorithmextractingimagefeaturepoints.Thispaperdiscussesthecomparisonofthethreealgorithmsandthemainapplication,andimprovesSusanalgorithmtoextractthecornerbuilding.Keywords:Susanalgorithm,Harrisalgorithm,Moravecalgorithm,building.1引言图像是客观对象的一种相似性的、生动性的描述或写真,是人类社会活动中最常用的信息载体。图像点特征提取技术是20世纪50年代在国内外迅速发展起来的一种图像处理技术,是图像识别中的一个关键问题。点特征选择和提取的基本任务是如何从众多图像边缘中找出最有效的特征点。图像点特征选择提取在工业生产中有着重要的应用。1.1问题的提出图像的特征点是什么?如何提取图像的特征点?图像的点特征提取算法有什么应用?1.2本报告研究的意义本报告对于点特征提取的算法中Susan算法、Harris算法、Moravec算法进行相关介绍,然后对三种算法对于角点提取进行比较。同时改进Susan算子的模板为可变大小并进行了代码的实现,利用不同模板大小对角点进行提取,以比较不同模板大小对于点特征提取效果。最后将点特征提取算法应用于对建筑物的提取已经对建筑物提取的改进。意在提出更好的算法对建筑物的角点进行提取1.3本报告研究的结构安排本文首先论述了图像点特征提取技术相关概念及几种算法,在此基础上阐述了图像点特征提取的流程,并讨论了基于VS2010实现图像点特征提取几种基本且重要的提取方式的算法实现。然后对几种算法进行对比,最后是点特征算法在建筑物提取中的应用。2算法描述图像中的特征点即为图像边缘直线形成夹角而成的角点。图像中较突出的尖锐点和其它有特殊意义的点,这些点反映了地物的特征,对研究具有重要意义。在点特征提取的算法中,主要包含了Susan算法、Harris算法和Moravec算法,这些算法可以对图像中角点进行提取,从而应用于实践生产中,例如对建筑物角点提取,人脸中眼睛部位角点的提取。下面介绍三种算法具体的内容和实现重要代码。2.1SUSAN算法1.Susan算法SUSAN(Smallunivaluesegmentassimilatingnucleus)算子是一种基于灰度的特征点获取方法,适用于图像中边缘和角点的检测,可以去除图像中的噪声,它具有简单、有效、抗噪声能力强、计算速度快的特点。SUSAN算子的模板与常规卷积算法的正方形模板不同,它采用一种近似圆形的模板,用圆形模板在图像上移动,模板内部每个图像像素点的灰度值都和模板中心像素的灰度值作比较,若模板内某个像素的灰度与模板中心像素(核)灰度的差值小于一定值,则认为该点与核具有相同(或相近)的灰度,由满足这一条件的像素组成的区域称为吸收核同值区(UnivalueSegmentAssimilatingNucleus,USAN)。当圆形模板完全处在背景或目标中时,USAN区域面积最大;当模板移向目标边缘时,USAN区域逐渐变小;当模板中心处于边缘时,USAN区域很小;当模板中心处于角点时,USAN区域最小。如图1。因此,可以通过计算每1个像素的USAN值,并与设定的门限值进行比较,如果该像素的USAN值小于门限值,则该点可以认为是1个边缘点。[1]即:g-n(r0)ifn(r0)gR(r0)=0otherSusan算法实现的重要代码://x方向37*37的模板intoffSetX[37]={-1,0,1,-2,-1,0,1,2,-3,-2,-1,0,1,2,3,-3,-2,-1,0,1,2,3,-3,-2,-1,0,1,2,3,-2,-1,0,1,2,-1,0,1};//y方向37*37的模板intoffSetY[37]={-3,-3,-3,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3};if(fabs((double)(pImg[(i+offSetY[k])*width+j+offSetX[k]]-pImg[i*width+j]))=thresh)//判断模板中每一个像素的灰度值与中心像素灰度值的差值是否小于限定值same++;//若满足,则USAN区域增加if(same15)pGray[i*width+j]=255;//若USAN区域的面积小于给定的阈值g,则中心点具有典型特征elsepGray[i*width+j]=0;图1:USAN区域2.Moravec算法Moravec算子是一种基于灰度的特征点获取方法,它考虑了像素与其给定方向像素灰度值的相似性,从而加强了对角点提取的效果。Moravec算子首先是对一个窗口中的中心像素和其0(180°)、45°(225°)、90°(270°)、135°(315°)8个方向的像素的灰度差的平方和,取其中最小值为该像元的兴趣值。如图2。根据给定的阈值判断该中心像素是否为候选点,以此标准遍历图像中的每一个像素。最后再选择一个窗口大小,对图像中的非最大值点进行抑制,达到真正提取角点的效果。[2]Moravec算法实现的重要代码://4个方向兴趣值的计算Value0=Value0+(pImg[i*width+j+t]-pImg[i*width+j+t+1])*(pImg[i*width+j+t]-pImg[i*width+j+t+1]);//0方向和180度方向的灰度差Value45=Value45+(pImg[(i+t)*width+j+t]-pImg[(i+t+1)*width+j+t+1])*(pImg[(i+t)*width+j+t]-pImg[(i+t+1)*width+j+t+1]);//45度方向和225度方向的灰度差Value90=Value90+(pImg[(i+t)*width+j]-pImg[(i+t+1)*width+j])*(pImg[(i+t)*width+j]-pImg[(i+t+1)*width+j]);//90度方向和270度方向的灰度差Value135=Value135+(pImg[(i+t)*width+j-t]-pImg[(i+t+1)*width+j-t-1])*(pImg[(i+t)*width+j-t]-pImg[(i+t+1)*width+j-t-1]);//135度方向和315度方向的灰度差//局部非最大的抑制if(pValue[m*width+n]maxGray)//如果该点的兴趣值大于maxGray{maxGray=pValue[m*width+n];//更新maxGraypExam[m*width+n]=255;//同时选定该点为检测出的角点if((m!=x)||(n!=y)){pExam[x*width+y]=0;//将上一个选定的最大点的颜色置成背景色x=m;y=n;//将当前点的坐标给x,y以备份}}elsepExam[m*width+n]=0;//如果该点兴趣值不大maxGray,置成背景色图2:Moravec算法3.Harris算法Harris角点检测算法是一种基于信号的点特征提取算子,其原理是将所处理的图像窗口w(一般为矩形区域),向任意方向移动微小位移(x,y),则其灰度改变量可定义为其中,X和Y是一阶灰度梯度,可对图像求卷积得为了提高抗噪能力,对图像窗口进行了高斯平滑,选用如下的高斯窗口:另外定义和矩阵其中E与局部自相关函数很接近,M描述了这个自相关函数在原点的形状。设λ1和λ2分别是M的2个特征值。λ1和λ2与局部自相关函数的主曲率成比例,构成一个对M的旋转不变数。此时,可以通过判断λ1和λ2的值情况来判断平坦区、角点和边沿。如图3。[3]下面是算法实现过程中需要用到的数学公式:1.高斯滤波函数3.M矩阵4.兴趣值R的公式Harris算法实现的重要代码://高斯滤波for(intm=i-size/2;mi+size/2+1;m++)for(intn=j-size/2;nj+size/2+1;n++)//循环为模板与图像的卷积{doublem1=(1.0/exp((double)((abs(m-i)*abs(m-i)+abs(n-j)*abs(n-j))/(2*delta*delta))));//高斯滤波是邻域中点相对于中心点的距离sumx=sumx+(pImgIx[m*width+n]*m1);sumy=sumy+(pImgIy[m*width+n]*m1);sumxy=sumxy+(pImgIxIy[m*width+n]*m1);//三个sum分别对x,y差分的累加和xy累积作用}pFilterIx[i*width+j]=sumx/(size*size);pFilterIy[i*width+j]=sumy/(size*size);pFilterIxIy[i*width+j]=sumxy/(size*size);//将得到的值赋给相应的滤波图片//计算兴趣值并存入pR数组pR[i*width+j]=pFilterIx[i*width+j]*pFilterIx[i*width+j]*pFilterIy[i*width+j]*pFilterIy[i*width+j]-(pFilterIx[i*width+j]*pFilterIy[i*width+j])*(pFilterIx[i*width+j]*pFilterIy[i*width+j])-0.04*(pFilterIx[i*width+j]*pFilterIx[i*width+j]+pFilterIy[i*width+j]*pFilterIy[i*width+j])*(pFilterIx[i*width+j]*pFilterIx[i*width+j]+pFilterIy[i*width+j]*pFilterIy[i*width+j]);if(pR[i*width+j]yzR)//因为是负值,所以负的越大,说明点越突出pExam[i*width+j]=0;elsepExam[i*width+j]=255;//将pR数组中满足特征点的候选点的兴趣值赋给图像对应像素,而其他像素直接为0图3:Harris检测原理2.1正文1、Susan算子可变模板首先,要想建立可变模板,就要知道大体知道直径为3,5,7…模板的样子(没有偶数是因为此算法用的是圆形模板,不能为偶数),但是我们不可能一个一个去画出每一个模板,所以就要先研究模板随直径的变化规律;首先以原SUSAN算法模板为例口口口3口口口口口5口口口口口口口7口口口口口口口7口口口口口口口7口口口口口5口口口3总共为大小为37的模板,其规律是(3+5+7)*2+7其中7为模板直径,可以由用户输入得到,而37则要由自己计算得到,由规律我们可以用一个循环算法去计算:intsum=0;for(intk=0;k(diameter-1)/2;k++){sum+=(k+1)*2+1;}sum=sum*2+diameter;其中diameter是用户输入的模板直径;其次,我们要做的是
本文标题:Susan、Harris和Moravec三大点特征提取算法的比较及利用点特征提取算法对建筑物角点的提
链接地址:https://www.777doc.com/doc-1843403 .html