基于改进Canny算子的红外弱小目标检测*
2021-06-04罗晓琳
翟 昊 罗晓琳
(1.陆军炮兵防空兵学院 合肥 230031)(2.偏振光成像探测技术安徽省重点实验室 合肥 230031)
1 引言
红外弱小目标检测研究虽然困难但是具有很强的实用价值,是光电信号处理领域研究的热点难点问题。它在空中目标预警系统,飞机跟踪系统和导弹制导系统中起着重要作用。通常,红外图像的信噪比(SCR)低,红外小目标图像的背景占据了大部分图像。但是,由于距离较远,目标很小。因此,目标缺少形状和纹理信息。这使得很难检测到红外图像中的弱小目标[1]。在目标的机动性较高且天空背景较为复杂的情况下,为了降低算法的漏检率,研究得出基于改进Canny算子的红外弱小目标检测算法。
2 传统Canny边缘检测
传统Canny边缘检测算法的具体算法流程如图1所示。
图1 传统Canny算法流程图
2.1 噪声去除
第一步使用5×5的高斯滤波器去除噪声,主要是因为噪声很容易影响边缘检测的结果。故函数表达式如下[2]:
式中:σ表示Gauss滤波器分布参数,抑制噪声能力随着σ取值减小而减小,边缘定位精度随着σ取值减小而增高。因此,σ的取值大小决定了图像去噪效果的好坏。同时,高斯滤波器对红外强度图中常见的椒盐噪声的滤波效果不佳[3]。
2.2 计算图像梯度
使用Sobel算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx和Gy)来处理平滑后的图像。边界的梯度和方向通过这两幅梯度图(Gx和Gy)找到[4],公式如下:
其中,点 (i,j)处的灰度值为I(i,j)。
此时,点 (i,j)处的梯度值G(i,j)和梯度方向θ(i,j)分别为
2.3 非极大值抑制
在获得梯度的方向和大小之后,应该对整幅图像做一个扫描,去除那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的[5]。如图2所示。
图2 梯度方向和大小
图中数值代表梯度强度,箭头方向代表梯度方向。阴影框内的梯度强度相较它们附近同方向的梯度值最大,所以保留。
2.4 滞后阈值
最后,为了确定哪些边界是真正的边界,通过设置TL和TH两个阈值来判断,当图像的灰度梯度低于TL的值不能看作边界,将其丢弃,若高于TH时,它们被认为是真正的边界。如果它介于两者之间,这取决于该点是否连接到一个被识别为真实边界的点,如果是,它也被认为是一个边界点,如果不是则丢弃[6]。如图3所示。
图3 阈值选择
D因为低于TL,首先将其舍弃,A是真正的边界点因为高于阈值TH。B虽然低于TH但高于TL并且与A相连,所以也被认为是真正的边界点。而C不仅低于TH而且不与真正的边界点相连,所以C不是真正边界点。可见选择合适的TH和TL对于能否得到好的结果非常重要。
3 改进的自适应Canny边缘检测算法
针对上文分析的问题以及本文针对的红外弱小目标检测的特定问题,为了改进Canny边缘检测算法的自适应能力,提高对弱小目标检测的检测率。具体改进的算法流程如图4所示。
图4 改进的Canny算法流程
3.1 图像预处理
空中目标的图像背景主要由大气和云层组成,高频部分通常是真实的目标点,而大面积的聚集在一起的一般是背景,在红外强度图上可以看成是变化缓慢的低频信号[7],所以其红外图像具有(近似)低秩稀疏特性,由背景图像和目标图像组成,设其模型为
式中:IB为背景图像,其反映了图像的低秩特性;IT为目标图像,其反映了图像的稀疏特性;Io为原始图像。
本文使用文献[8]的算法将红外强度图分解为背景块图和目标块图,而后使用目标块图作后续处理。
3.2 改进的噪声去除算法
由于目标块图中椒盐噪声是主要噪声,而Canny算法中使用的是二维高斯滤波,对椒盐噪声抑制有限,而形态学滤波中的Opening开运算对椒盐噪声的抑制尤为明显[9],因而可以将Opening算法取代高斯滤波器。
设图像用X表示,结构元素用S表示,则开运算公式如下所示:
式中⊖代表腐蚀运算,⊕代表膨胀运算。
3.3 改进的梯度幅值和梯度角计算
由于针对的目标是红外弱小目标,所以计算梯度使用的算子较小,3×3即可,在算子较小的情况小,原始的Sobel滤波器的导数误差较大,而Scharr滤波器可以消除Sobel滤波器的导数误差,而且速度相同[10]。3×3的Scharr滤波器卷积核如图5。
图5 3×3的Scharr滤波器卷积核
3.4 自适应阈值算法
为了解决人为设置阈值的随机性和繁琐性问题,本文设计了自适应阈值算法来自动选取一个合适的阈值并将此阈值用于Canny算子[11]。该算法具体步骤如下:
由于经过前面算法处理后的图像主要由大面积黑色背景和弱小目标构成,因此结合图像像素值的中值可以很好地确定阈值范围。式中,v为图像像素的中值,sigma通常取经验值0.33[12]。
4 实验验证分析
实验基于硬件设备2.50GHz的AMDA10-5750MAPU,程序开发环境是Windows10操作系统下的Spyder和开源计算机视觉库Opencv3.4.8版本,选用的编程语言是python。
本文算法针对的是空中弱小目标,选择的图片是用实验室的红外相机对远处的协同无人机目标拍摄的图片。以多云背景下的无人机图像为例,使用传统算法和本文算法分别处理。处理结果如图6所示。
图6 不同算法处理前后对比图
从处理后的结果可以看出,虽然Top-hat滤波抑制了大量云背景,但还是有大部分噪声没有抑制,容易造成虚警[13];而中值滤波和双边滤波虽然对噪声抑制效果明显,但是对云背景的抑制效果不明显,也容易造成虚警[14];相比而言,经过本文算法处理后的图像不仅抑制了大量云背景,而且几乎滤除了所有噪点,只保留了待检测的无人机目标,虚警率改善尤其明显。
为了定量分析对比不同算法的性能,可用检测率(DR)和虚警率(FAR)来定量验证算法的性能。它们的定义如下[15]:
各算法在不同天空背景样本中的检测率和虚警率分别于表1和表2所示。不同样本库下的图像均超过2000张。
表1 不同算法的检测率
表2 不同算法的虚警率
5 结语
复杂天空背景下的红外弱小目标检测技术在军事领域具有重要价值。本文首次将Canny边缘检测算法应用于红外小目标的检测,与传统的小目标检测方法相比,本文算法的检测率提高了12.07%左右,虚警率降低了59.14%左右。