资源描述:
《harris 角点测法优化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Harris角点检测算法优化一、综述用Harris算法进行检测,有三点不足:(1)该算法不具有尺度不变性;(2)该算法提取的角点是像素级的;(3)该算法检测时间不是很令人满意。基于以上认识,我主要针对第(3)点对Harris角点检测算法提出了改进。二、改进Harris算法原理在介绍我的方法之前,我先提出如下概念:图像区域像素的相似度。我们知道,Harris角点检测是基于图像像素灰度值变化梯度的,灰度值图像的角点附近,是其像素灰度值变化非常大的区域,其梯度也非常大。换句话说,在非角点位置邻域里,各点的像素值变化不大,甚至几乎相等,其梯度相对也比较小。从这个角度着眼,我提出了图像区域像素
2、的相似度的概念,它是指检测窗口中心点灰度值与其周围n邻域内其他像素点灰度值的相似程度,这种相似程度是用其灰度值之差来描述的。如果邻域内点的灰度值与中心点Image(i,j)的灰度值之差的绝对值在一个阈值t范围内,那我就认为这个点与中心点是相似的。与此同时,属于该Image(i,j)点的相似点计数器nlike(i,j)也随之加一。在Image(i,j)点的n邻域全部被遍历一边之后,就能得到在这个邻域范围内与中心点相似的点个数的统计值nlike(i,j)。根据nlike(i,j)的大小,就可以判断这个中心点是否可能为角点。由于我选择3*3的检测窗口,所以,对于中心像素点,在下面的讨论中只
3、考虑其8邻域内像素点的相似度。计算该范围的像素点与中心像素点的灰度值之差的绝对值(记为Δ),如果该值小于等于设定的阈值(记为t),则认为该像素点与目标像素点相似。nlike(i,j)=sum(R(i+x,j+y))(-1≤x≤1,-1≤y≤1,且x≠0,y≠0),其中:1,Δ(i+x,j+y)≤t R(i+x,j+y)=0,Δ(i+x,j+y)>t从定义中可以看出:0≤nlike(i,j)≤8。现在讨论nlike(i,j)值的含义。(1)nlike(i,j)=8,表示当前中心像素点的8邻域范围内都是与之相似的像素点,所以该像素点邻域范围内的梯度不会很大,因此角点检测时,应该排除此类像
4、素点,不将其作为角点的候选点。(2)nlike(i,j)=0,表示当前中心像素点的8邻域范围内没有与之相似的像素点,所以该像素点为孤立像素点或者是噪声点,因此角点检测时,也应该排除此类像素点。(3)nlike(i,j)=7,可以归结为以下的两者情况,其他情形都可以通过旋转来得到(图中黑色区域仅表示与中心像素相似,而两个黑色区域像素可能是相似的,也可能不相似)。对于图1(a)中,可能的角点应该是中心像素点的正上方的那个像素点,1(b)图中可能的角点应该是中心像素点右上方的那个像素点,故这种情况下,中心像素点不应该作为角点的候选点。图1(a)图1(b)(4)nlike(i,j)=1,可以
5、归结为图2中的两种情况(图中白色区域仅表示与中心像素不相似,而两个白色区域像素可能是相似的,也可能不相似),在这两种情况下,中心像素点也不可能为角点。图2(a)图2(b)(5)2≤nlike(i,j)≤6,情况比较复杂,无法确认像素点准确的性质。我采取的方法是先将其列入候选角点之列,对其进行计算CRF等后续操作。三、改进Harris算法效率性能分析作为对比,我用未加改进的Harris算法计算了图像中的每一个像素点(离边界boundary个像素之内的点除外,boundary为程序中定义的一个整数,名同其意)的CRF值。Harris算法采用9*9的矩形高斯窗口(共81个像素),方向导数采
6、用Prewitt算子,则在计算每个像素的自相关矩阵M过程中乘法次数为:(9*9+1)*3=246次,加法次数为:(9*9-1)*3=240次,因此,计算点(i,j)的CRF就要花费(1)乘法246+2=248次,(2)加法240+1=241次,(3)行列式计算det(M)一次,(4)对角和计算trace(M)一次。对于分辨率为Height*Width的图像,不考虑边界的影响,其算法时间复杂度为248*(Height-boundary)*(Width-boundary)次乘法+241*(Height-boundary)*(Width-boundary)次加法+1*(Height-bou
7、ndary)*(Width-boundary)+det(M)一次+trace(M)一次,由于一次乘法的时间要远多于一次加法,因此在实时性要求较高的场合,Harris算法就显得速度较慢了。改进Harris算法主要是在计算CRF值之前对像素点做了一个初始选择,这一部分主要是加法运算,运算量为8*(Height-boundary)*(Width-boundary)次。由于不涉及乘法运算,虽然在此增加了计算量,但为后续的焦点提取剔除了大量的非角点像素点,而不必计算