改进的Harris角点检测目标识别方法

2023-01-04 13:42刘海明
探测与控制学报 2022年6期
关键词:角点云雾细化

高 帅,贺 伟,李 涛,刘海明,周 瑜,梁 菲

(西安邮电大学通信与信息工程学院,陕西 西安 710055)

0 引言

目标识别技术在军用领域和民用领域应用广泛。在军用领域,主要是对军事目标进行识别和定位,准确地识别和打击目标在战场上有着举足轻重的作用[1]。民用领域如自动驾驶、人脸识别、天眼等,都离不开目标识别技术。目标识别方法大体分为两类:1) 通过模板匹配直接对目标进行识别,这类方法计算量大,特别是目标复杂的情况,难以满足实际应用的要求;2) 先对图像进行预处理,然后进行特征提取,再进行目标识别。第2类方法速度快,识别准确率高,因此,大多数识别采用第2类方法。特征提取影响到目标识别的结果,在整个过程中起着非常重要的作用。特征提取的经典算法主要有Fast算法、Moravec算法、Harris算法、Susan算法、SIFT算法和Shi-Tomasi算法等。在激光引信成像识别领域,准确、实时、高效地识别目标是关键,传统Harris算法计算量大,几乎没有区分云雾和干扰的功能。针对这一问题,提出一种改进的Harris角点检测目标识别方法,以Harris角点算法为基础[2-3],对其进行优化,并对图像进行图像细化,以此来区分目标与干扰,解决激光引信成像识别问题。

1 角点检测

角点是图像的一个很重要的特征,在图像识别中起着重要作用。角点保留了图像中重要的特征,同时剔除了冗余的数据量,角点的信息量很高,因此基于角点的算法计算效率一般较高。

角点至今缺乏明确的概念,不同的领域对角点有不同的要求,从而有不同的表述方式。角点常见的描述有:图像边缘曲线的最大曲率点;两条或两条以上边缘线的交点;灰度梯度的局部峰值及其对应的像素点;图像的梯度方向和梯度值变动最强烈的点;图像亮度变动最强烈的点等描述[4]。由于本文最终致力于成像目标的识别,故对角点的定义是图像亮度变化很大的点。

角点一般位于两条或以上的交点处,常见的有L型、Y型、T型、箭头型和X型。角点检测算法一个重要的要求是尺度不变性,就是同一图像经过平移、旋转、放缩、拉伸、扭曲等变换,角点检测还能识别出同样的角点[5]。为了达到这一要求,很多方法需要进行大量的图像集训练,最大可能地减小角点识别错误率。一般来说,一个好的角点检测方法需要达到以下要求:

1) 所有(真实)的角点都能被识别出来;

2) 角点定位准确;

3) 重复检测率高;

4) 对噪声有良好的鲁棒性;

5) 角点检测效率高效。

角点检测的基本思想是:用一个检测窗口在图像上以任意方向移动,根据其判断的依据,判断此窗口内是否有角点。例如,若用基于灰度图的角点检测,就是看窗口中是否有明显的灰度变化,变化明显则窗口内有角点。角点检测算法从判断依据方面可以分为:以灰度图为判断依据,以二值图像为判断依据,以轮廓曲线为判断依据。

其中,基于灰度图的角点检测方法比较常用,分为三种:

1) 基于梯度的角点检测方法:计算边缘曲线的曲率,角点即为曲率的极值点。该方法对噪声比较敏感[6]。

2) 基于模板的角点检测方法:比较当前像素点与邻域像素点的亮度变化,亮度变化大的话该点即为角点。该方法中常见的算法有Harris算法、Susan算法和KLT算法等[7]。

3) 基于梯度和模板的角点检测方法:首先用高斯目标和图像卷积,可以得到Canny边缘映射图像;然后再估计梯度和边缘向量,并记为矢势;最后计算高斯曲率判断是否为鞍点,也就是现在人们所谓的对角点。

在基于角点检测的目标识别方法中,Harris角点检测因其显著的优势得到广泛应用。Harris角点检测的优点有:

1) 旋转不变性:图像经过旋转后,角点的位置不变;

2) 对图像灰度变化具有部分不变性:图像经过平移后,角点位置不变;但图形放缩后,可能会影响某些角点的检测。

在数学中,若将检测窗口平移记为[u,v],灰度变化记为E(u,v),则有

(1)

式(1)中,I(x,y)是移动前的灰度值;I(x+u,y+v)是移动后的灰度值;w(x,y)是对图像的一个加权,即一个窗口函数。w(x,y)一般有两种:一种是图像内是1,图像外是0;一种是根据不同像素的内容,赋给不同的权重,这种窗口也称为高斯窗口。

将I(x+u,y+v)泰勒展开,得到

I(x+u,y+v)=I(x,y)+Ixu+Iyv+O(u2+v2)。

(2)

代入到上式中有

(3)

式(3)中,Ix是沿着x方向的导数,Iy是沿着y方向的导数,即

(4)

当窗口移动距离很小时,有

(5)

式(5)中,M是2×2矩阵,

(6)

Harris角点算法的核心是计算角点响应函数R:

R=detM-k[trace(M)]2,

(7)

式(7)中,detM是M的行列式;trace(M)是M的迹;k是常数,取值范围在0.04~0.06之间。其实,由响应函数的公式可以看出,响应函数R和矩阵M的特征值有关。将矩阵M的特征值分别记为λ1,λ2,则有detM=λ1λ2,trace(M)=λ1+λ2。响应函数R的大小与探测窗口所在区域的关系为

1) 当|R|很小时,对应的区域是平坦区域;

2) 当R>0时,对应的区域有角点;

3) 当R<0时,对应的区域是边缘[8]。

2 Harris角点检测的改进

传统的Harris算法虽然应用广泛,但有三点不足:1) 提取的角点中很多是伪角点;2) 计算量大;3) 难以区分目标和干扰。针对这三点不足,对Harris算法进行一些改进。

2.1 角点响应函数的改进

在原来的Harris算法中,角点响应函数中有个不定值k,取值范围为0.04~0.06。这是一个经验值,随意性比较大,随意取值可能会在某些领域产生较大的误差,甚至影响提取到角点的准确性。考虑到角点响应函数的实质是检测矩阵M的两个特征值。两个特征值都大,图像窗口中灰度值变化明显,窗口内有角点;特征值都小,图像窗口中灰度值基本没有变化,窗口位于平坦区域;特征值一大一小,图像窗口向某个方向移动灰度值没有变化,向其他方向移动灰度值变化较大,窗口在边缘区域[9]。改进后的算法的角点响应函数为

(8)

与原来角点响应函数相比,去掉参数选取的任意性,增加了角点提取的准确性,使结果的实用性、准确性、可靠性增加。

2.2 候选角点的选取

为了减少特征提取过程所用的时间,对像素点进行一个初步的筛选,选用3×3的探测窗口,将中心的像素点作为参考标准,遍历其余8个像素点,然后将相似的点数记为n,这里0≤n≤8。根据n的大小,我们可以确定这个窗口内是否有角点[10]。具体思路如下:

1)n=0时,表示周围的点没有与中心点相似的点,中心点可能是噪声点,不会是角点,排除是角点的可能。

2) 1≤n≤6时,此种情况较为复杂,将其作为候选角点,后面进行局部最大值抑制判断。

3)n=7时,表示有7个点与中心点相似,因此剩下的那个点可能是角点,故排除中心点的可能。

4)n=8时表示周围所有点都与中心点相似,此时探测窗口所在的区域极为可能在平坦区域,所以所有的像素点都类似,排除为角点的可能。

经上述讨论,1≤n≤6时,中心点是角点的可能性很高,将此处归为候选角点,计算角点响应函数,判断其是否为真正角点。虽然在这一步增加了许多乘法运算(分辨率为M×N的图像运算量为8×M×N),但为后面的角点提取排除了大量的非角点像素点,大大减少了乘法的计算次数。

2.3 识别目标和干扰

在检测之前,先对目标图像进行抽骨细化,然后再进行角点提取。抽骨细化是二值图像进行细化结构的一种常用方法,就是在不破坏图像连通性的前提下,对图像的信息进行筛选,提取有效信息,减少冗余信息。骨架是图像几何形态中的重要描述,在很大程度上能反映图像的特征。对二值图像进行抽骨细化,本质是删一些点,让图像变得简洁明了。但有一些点不能删,例如内部点、端点等。记二值图像为X,结构元素为B,则图像X的表达式为

(9)

Sn(X)=(XΘnB)-[(XΘnB)·B],

(10)

式中,Sn(X)是图像X的第n个骨架子集,N是(XΘnB)运算将X腐蚀为空集前最后一次迭代次数,(XΘnB)表示连续n次用B对X进行腐蚀。

云雾图像与飞机目标相比,含糊不清,没有明显的边缘,抽骨细化后,图像变成了一片,角点极少。但飞机目标不同,飞机目标进行抽骨细化后,将飞机的轮廓勾勒成线条,和云雾图像有明显差异,而且角点数目也较多。根据这一点,可以区分飞机目标和干扰的不同。

改进后的Harris算法流程图如图1所示。先对图像进行抽骨细化处理;然后用3×3的探测窗口对图像进行初步的角点筛选,主要排除一些孤立点和干扰;主要就是判断周围8个点的像素值有几个点和中心点相似,周围有1~6个相似点的中心点作为候选角点,这样可以减少整体运行的时间;接着遍历得到的候选角点,计算候选角点的一些参数,如梯度值和协方差矩阵M,然后计算其角点响应函数,根据局部极大值抑制得到最终角点;最后根据角点的数目判断是目标还是干扰。

图1 改进后的Harris流程图Fig.1 Improved Harris flowchart

3 实验仿真

为了比较改进后的Harris算法与传统算法,对一个飞机图像进行角点检测。选取一张640×480像素大小的“飞机”图片(图2)为实验图像,在Matlab2020上进行实验。

图2 原图Fig.2 Artwork

图3是对原图像进行图像细化得到的结果;图4是传统Harris角点提取算法得到的图像;图5是改进后的Harris角点提取算法得到的图像;表1是根据图4和图5统计的角点数量结果。由于传统Harris算法没有图像细化的功能,因此处理的是细化后的图像,改进后的算法也是在完成图像细化后开始计时。从表1可以看出,通过对Harris算法的改进,可以去掉很多伪角点,更加利于目标识别。同时,改进后的算法提升了运算效率,改进前的算法需要1.726 s,而改进后的算法仅为0.704 s,仅为改进前算法用时的40.8%。

图3 图像细化Fig.3 Image refinement

图4 传统Harris角点提取算法Fig.4 Traditional Harris corner extraction algorithm

图5 改进后的Harris角点提取算法Fig.5 Improved Harris corner extraction algorithm

表1 角点个数统计结果Tab.1 Statistical results of corner points

在正常进行角点提取的基础上,加入模拟云雾干扰。图6是飞机云雾的二值图像;图7分别是三个图像进行骨骼提取后的图像;图8是对三个细化后的图像分别进行角点提取。飞机与云雾的角点提取及识别结果如表2。

图6 飞机与云雾的原图像Fig.6 Original image of aircraft and cloud

图7 飞机与云雾的图像细化Fig.7 Image refinement of aircraft and fog

图8 飞机与云雾图像细化后的角点提取图Fig.8 Corner point extraction of aircraft and cloud image after refinement

表2 飞机和云雾角点提取及识别结果Tab.2 Extraction and identification results of aircraft and cloud corner points

经过图像细化后,可以明显看出飞机与云雾的区别。飞机经骨骼提取后剩下一个大致的轮廓,显然这个轮廓有很多角点;但云雾图像细化后角点数目较少,图7(b)仅有4个角点,图7(c)也只有两个角点,与飞机角点差异很大。可以根据此条件区分目标和干扰。

由表2可以看出,飞机与云雾的角点数目是有很大差异的。大量计算得到一个阈值R0,角点数大于R0即为飞机,小于R0则为云雾。

为了模拟飞机交会时的状态,对不同角度的飞机图像进行仿真实验。图9是不同角度的局部飞机图像,图10是对局部飞机图像进行骨骼提取,图11是这几个飞机图像的角点分布。

图9 局部飞机图像Fig.9 Local aircraft image

图10 局部飞机图像细化Fig.10 Local aircraft image refinement

图11 飞机角点分布Fig.11 Angle distribution of aircraft

对以上不同姿态的飞机图像进行模拟仿真,识别结果如表3所示。

表3 不同姿态的飞机识别结果Tab.3 Aircraft identification results of different attitudes

从图10中可以看出,图像细化在很大程度上能反映飞机的轮廓,描述飞机的姿态。从图11可以看出,角点主要分布在机头、机翼、机尾处,最重要的是角点数目都比较多,因此最终都识别为目标。

4 结论

本文对基于角点的目标识别算法进行研究,对Harris算法进行了改进。在理论上,Harris算法能处理旋转后的图像,平移后的图像;在检测上,根据图像梯度得到矩阵M,计算角点响应函数得到角点。改进后的Harris算法在保留原有优势的基础上,运算效率高,得到角点的真实性也大幅提高,并且添加了一个预处理功能,对图像进行骨骼提取,从而可以根据角点数区分飞机与云雾。本文为目标识别方法开拓了一个新的思路,不足之处在于从理论出发对算法进行了研究,没有考虑实际识别时的各种不利因素,在实际应用中还有待于进一步改进与完善。

猜你喜欢
角点云雾细化
云雾
拨云雾 识压强
多支撑区域模式化融合角点检测算法仿真
云雾是山做的梦
在融入乡村振兴中细化文明实践
云雾是山做的梦
专利名称:一种双重细化锌合金中初生相的方法
角点检测技术综述①
基于灰度差预处理的改进Harris角点检测算法
基于FAST角点检测算法上对Y型与X型角点的检测