采用非线性方向导数的混合噪声鲁棒角点检测算法

2021-11-16 11:22王富平陈鹏博刘卫华何敬鲁
西安交通大学学报 2021年11期
关键词:角点椒盐高斯

王富平, 陈鹏博, 刘卫华, 何敬鲁

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

图像角点特征包含了图像重要特征和信息,广泛应用于各个领域,如农业杂草密度[1]和小麦穗数[2]检测、医学血管支架轮廓分割和颈椎角点检测[3]、遥感图像目标检测[4]、目标识别[5]、图像配准、光场相机标定[6]、场景检测[7]和交通标志分离等。目前,角点检测算法主要分为基于模板的角点检测[8-12]、基于边缘轮廓的角点检测[13-19]和基于强度的角点检测[20-28]共3大类。

基于模板的角点检测算法通过使用预先定义的模型拟合图像的部分区域来检测角点。Smith等提出了SUSAN角点检测算法,通过比较模板中每个像素点与模板中心像素灰度值的大小来确定角点[8];Rosten等在SUSAN算子基础上分别利用圆环和双圆环模板来检测角点,提升了角点检测效率和一致性[9-10];Abramenko等使用亮度函数的代数矩进行亚像素精度的角点检测[11];Meng提出了基于图像逐块移动搜索的快速X角点检测算法,并使用邻域方差和中心对称约束来排除异常角点[12]。

基于边缘轮廓的角点检测算法通过提取图像边缘并分析轮廓形状来检测角点。Mokhtarian等提出了基于曲率尺度空间(CSS)的角点检测算法[13];He等在CCS基础上利用自适应曲率阈值完成角点检测,实现了自适应阈值选择[14];Awrangjeb等利用弦点距离累加(CPDA)技术估计曲率并检测角点,该算法对噪声鲁棒性好[15];Lin等用线性归一化替换了CPDA中使用的极大值归一化,弥补了CPDA算法的不足[16];Shui等利用各向异性高斯方向导数(ANDD)滤波器来提取轮廓像素的灰度变化信息,以此检测角点[17];Zhang等针对离散域中局部变化和噪声敏感的问题,提出了单角和双角模型的离散曲率角点检测算法[18];Wang M等通过构造多方向结构张量,提出了一种基于多尺度Shearlet变换的角点检测算法[19]。

基于强度的角点检测算法通过图像局部灰度强度变化构建测度来进行角点检测。经典的Harris算法利用图像微分相关矩阵的特征值进行角点测度;Wang Z等提出了基于迭代阈值的自适应Harris角点检测算法[20];Lindeberg使用归一化Laplace算子自动选择最优尺度来检测角点[21];Mikolajczyk等将Laplace尺度空间融入Harris检测器,提出了尺度不变的Harris-Laplace检测器[22];进一步地,Laptev将其扩展到图像序列中,可检测到尺度空间和时间序列上都有显著局部变化的角点特征[23];Lowe提出了尺度不变特征变换(SIFT)算法,利用高斯差分空间(DOG)逼近归一化的高斯拉普拉斯空间,并通过检测DOG三维空间的局部极大值来定位角点[24];Bay提出了加速鲁棒特征(SURF)检测算法,提升了角点检测效率[25];Peng等通过级联分类器实现的算法对光照比较鲁棒[26];Zhang等提出了基于二阶广义高斯方向导数的高精度角点检测算法[27];Zhang等利用图像多尺度各向异性高斯导数特征构建多尺度结构张量,并根据特征值进行角点检测[28]。

在这些算法中,基于模板和基于边缘轮廓的角点检测算法对边缘上的局部灰度变化和噪声比较敏感[29],容易造成漏检错检,而基于强度的角点测度容易被其他临近特征干扰,且对混合噪声敏感。为了克服这些不足,本文提出了基于非线性方向导数(NDD)的角点检测算法。相比于传统滤波器仅对单个类型噪声有效,本文算法引入了基于直方图分层技术的非线性滤波,同时抑制了椒盐噪声和高斯噪声的影响。此外,各向异性高斯滤波的方向选择性和多尺度特性有效提升了角点特征的检测准确率。实验结果表明,本文算法在多种图像变换和混合噪声下的角点检测精度和平均重复率均优于其他角点检测算法。

1 各向异性高斯方向导数滤波器

传统高斯微分滤波器gσ,ρ,θ(x,y)可以表示为

(1)

式中:σ是高斯尺度因子;ρ是各向异性因子;Rθ是方向为θ的旋转矩阵。

根据式(1)可以得到θ(x,y)处的一阶高斯方向导数滤波器

(2)

式中各向异性因子ρ影响滤波器的形状,ρ越大,则滤波器形状越狭长。当ρ>1时,ψσ,ρ,θ(x,y)表示ANDD滤波器;当ρ=1时,ψσ,ρ,θ(x,y)退化为各向同性高斯方向导数(IGD)滤波器。图1显示了4个方向的IGD和ANDD滤波器的权值系数图。

图1 4个方向的IGD和ANDD滤波器权值图Fig.1 IGD and ANDD filters’ weight maps in 4 directions

2 基于非线性各向异性高斯方向导数的角点测度

2.1 图像边缘轮廓提取

利用Canny边缘检测算法提取边缘E,并沿着边缘方向将每个边缘像素的坐标依次保存,形成边缘像素位置链码集合Q={(x,y)|(x,y)∈E}。

2.2 各向异性和各向同性高斯双窗的快速非线性方向导数

对于集合Q中的每一个边缘像素,分别利用各向异性和各向同性高斯导数滤波器,计算该边缘处的两种非线性方向导数,用以生成最终的角点测度。首先,需要构建滤波器窗口。确定ANDD滤波器的左子窗NL和右子窗NR的公式为

(3)

(4)

利用本文第3节提出的基于直方图分层的快速非线性滤波技术,得到沿方向θ上左右子窗口的非线性滤波结果φσ(x,y|L,θ)和φσ(x,y|R,θ)。进而通过计算左右子窗的非线性滤波结果的差分,得到θ方向上非线性各向异性导数

φσ(x,y|θ)=

(5)

令ρ=1,由式(2)得到IGD滤波器,根据式(3)~(5)得到θ方向上非线性方向导数

ζσ(x,y|θ)=

(6)

2.3 基于非线性滤波的角点响应

将滤波器方向θ量化为K个离散方向,通过计算每个方向上的导数响应,分别得到非线性ANDD和IGD响应向量

[φσ(x,y|θ1),φσ(x,y|θ2),…,φσ(x,y|θK)]

(7)

[ζσ(x,y|θ1),ζσ(x,y|θ2),…,ζσ(x,y|θK)]

(8)

(9)

(a)角点仿真 (b)边缘点e1

(c)边缘点e2 (d)角点e3图2 ANDD和IGD边缘点及角点的比较Fig.2 Edge and corner point comparison between ANDD and IGD

对于角点处的像素,沿不同方向的灰度可能变化都较为明显,所以角点沿垂直方向OD上的响应大于理想边缘处OD的响应。因此,根据OC、OD方向上角点和理想边缘微分的差异,通过两者的微分比值衡量边缘点是否为角点来建立微分比率的角点测度。由图2c可以看出,由于受到了e2下方边缘的影响,ANDD滤波器沿OD方向提取的微分信息较大,而理论上e2点沿OC方向上的微分接近于0。相比之下,IGD能够较好地提取OC方向上的微分。通过IGD滤波器提取主方向OC上的微分信息,使用ANDD滤波器提取垂直方向OD上的微分信息,能够准确提取OC、OD方向上微分信息,避免了临近边缘对于角点的影响。

(10)

2.4 多尺度非线性方向导数角点测度

尺度选取的不当会对非线性滤波产生较大的影响:小尺度下的角点测度定位性较好,但对噪声敏感;大尺度下的角点测度对噪声鲁棒,但定位精度会降低。因此,为了减少尺度选择过大或过小所带来的影响,分别计算3个尺度下的角点响应,进行几何平均,最终得到处的角点测度

(11)

2.5 基于非线性方向导数的角点检测算法流程

本文提出的NDD角点检测算法具体步骤如下。

步骤1 对图像利用Canny算法提取边缘像素,并按边缘方向保存成链码集合。

步骤2 利用式(2)产生ANDD滤波器。

步骤4 利用基于直方图分层的非线性滤波,分别计算左右子窗的各向异性非线性滤波,并作差得到非线性各向异性方向导数φσ(x,y|θ)。

步骤5 令各向异性因子ρ=1,得到各向同性高斯方向导数滤波器,根据步骤2~4计算得到非线性各向同性方向导数ζσ(x,y|θ)。

步骤9 对于每一个边缘像素,如果它的角点测度是以(x,y)为中心的5×5像素窗口内的最大值,且大于给定阈值,则它就是角点特征,否则将其剔除。

3 直方图分层的快速非线性滤波

噪声干扰是影响角点检测准确率的重要因素。基于线性滤波的特征提取算法可以有效抑制高斯噪声,如Log算子、Gabor小波等。实际中图像往往也受到脉冲噪声型的干扰,比如椒盐噪声等。传统基于滑窗技术的非线性滤波方法的时间复杂度高。为此,本文提出基于直方图分层的快速非线性滤波,可有效提升非线性方向导数的角点检测效率。

3.1 基于直方图分层的图像滤波

(12)

式中⊗表示卷积操作。本文提出了直方图分层技术,并以此重新定义图像滤波。首先,生成原始图像的直方图分层图,如果图像灰度值域包含T级,如灰度图像T=256,则原始图像可生成T个直方图分层图。利用脉冲函数提取属于第i个分层图像

φ(x,y|i)=δ(I(x,y)-i)

(13)

式中δ(·)是脉冲函数。对于原始图像中灰度值为i的像素处,其在第i个分层图中的值为1,其他分层中都为0。图3a中灰度图像对应的直方图分层结果为图3b所示。在图像直方图分层图基础上,传统线性卷积可以表示为

(14)

(a)积木原始图像 (b)直方图分层三维图图3 直方图分层Fig.3 Histogram slicing

3.2 基于选择分层的非线性滤波

椒盐噪声特性使其主要分布在分层图的最小值和最大值附近。本文通过去除多个分层图中最大值和最小值对应的二值图,可避免椒盐噪声像素参与图像滤波,从而达到抑制椒盐噪声的目的。为此,本文对T个分层图按照对应像素值从小到大进行排序,去除最初始τ层和最末尾τ层二值图像。然后,利用T-2τ个分层图分别计算各向异性子窗口滤波,并对分层图滤波结果进行累加求和,得到基于选择分层的非线性滤波结果

(15)

相比于式(14),利用选择分层的方法可以有效去除椒盐噪声的不利影响,并保持线性加权滤波对高斯噪声的鲁棒性。

3.3 非线性滤波性能对比实验

运行效率是衡量算法性能的重要指标。本文提出的基于非线性方向导数的滤波算法将局部窗口非线性操作转化为分层图像的线性卷积,十分高效。基于传统滑动窗口的算法需要对滑动窗口内像素进行中值滤波,然后对剩余像素进行加权平均,非常耗时。本文实验测试环境如下:Windows 10,IntelCore i7-10700处理器,16核CPU及32 GB内存,软件为MATLAB 2018b。实验中分别使用本文提出的非线性滤波算法和传统滑窗滤波算法对积木图像进行滤波处理,其中滤波窗口大小为21×10像素。计算200次图像滤波的平均单次滤波时间,传统滑动窗口滤波算法运行时间为2.056 s,本文滤波算法运行时间为0.172 6 s,仅为传统滑窗算法的1/12。传统算法对每个滑动窗口内像素进行非线性滤波,其中排序操作极度耗费时间;本文将滑动窗口中的非线性重复操作转化为对直方图分层图的线性卷积,大大提升了算法运行效率,整体性能优于传统算法。

3.4 直方图分层数对比实验

本文算法通过将原始图像分层为T层,并基于分层非线性滤波实现混合噪声鲁棒角点检测。为了评估分层数T对于角点检测性能的影响,本文分别设置分层数T=256,128,64,32,且剔除初始及末尾层数τ=1。对受方差(ε2)为15的高斯噪声和密度(p)为5%的椒盐噪声的混合噪声干扰的积木、树叶和实验室共3幅测试图像,计算本文算法的配准角点和错误角点数,结果如表1所示。可以看出,分层数T越小,配准角点数越少,错误角点数增多。主要

表1 混合噪声图像在不同分层数下的角点数

原因为:在进行直方图分层的非线性滤波时,分层数越大越能够有效抑制椒盐噪声的影响,同时对于图像本身所包含的细节信息能够精确保留;随着分层数变小,虽然能够有效抑制噪声,但同时也会丢失部分细节信息,导致伪角点增加。因此,本文算法采用T=256。此外,本文算法的分层是基于灰度级分层,与图像内容无关。

4 实验结果

4.1 有效性实验

本实验针对积木和树叶图像,分别在无噪声、p=5%椒盐噪声、ε2=15高斯噪声、p=5%椒盐与ε2=15高斯混合噪声共4种情况下,利用CSS[14]、CPDA[15]、ANDD[17]、Gabor[31]、MDDR[30]和NDD算法检测图像角点,通过统计配准角点和错误角点数进行性能对比。其他5种对比算法由原作者提供,并使用文章中的默认参数。两幅图像的角点检测结果如图4和图5所示。

图4 积木图像结果对比Fig.4 Corner detection result comparison of block image

图5 树叶图像结果对比Fig.5 Corner detection result comparison of leaf image

从图4和图5可以看出,在无噪声情况下,CPDA算法丢失了许多真实角点,主要原因是CPDA算法中使用的3个弦长(L=10,20,30)都对CPDA曲率具有平滑效果。当相邻角点之间的距离小于一定像素时,多弦长的平滑效果累加使得最终的CPDA测度无法区分这两个角点。CSS算法中边缘的1、2阶导数估计精度对局部边缘的变化十分敏感,而且高斯尺度和角点阈值难以选择,导致算法的错误角点数多。ANDD和Gabor通过多方向微分滤波器提取图像导数向量,增强了角点区分能力。MDDR和NDD算法能够准确的识别邻近角点,并且检测出最少的伪角点。这是由于MDDR和NDD算法通过精确估计边缘像素的主方向,利用空域影响范围较小的IGD导数滤波器提取主方向上的导数,避免了邻近其他结构的影响,降低了伪角点生成概率。在加入了椒盐和高斯混合噪声后,CSS[14]、CPDA[15]、ANDD[17]、Gabor[31]和MDDR[30]结果中均出现了大量由于噪声带来的伪角点,主要由于这些算法均不具备对混合噪声的鲁棒性。NDD算法在含噪声与无噪声情况下的角点检测结果基本一致。因此,本文算法对椒盐噪声、高斯噪声及两者的混合噪声这3种情况都具有较好的噪声鲁棒性和角点检测能力。表2~6给出了NDD算法和5种对比算法分别在无噪声、p=5%椒盐噪声、ε2=15高斯噪声、ε2=15高斯与p=1%椒盐混合噪声、ε2=15高斯与p=5%椒盐混合噪声共5种情况下的配准角点数和错误角点数。表中数据为50次实验结果排序后的中值。

由表2可以看出:无噪声情况下,CSS算法的错误角点数目较多,角点区分能力较差,出现了大量伪角点;其次是ANDD、CPDA和Gabor算法,错误点数较多,仍有部分伪角点;MDDR和NDD算法在配准角点和错误角点数上基本一致。由表3~6可以看

表2 无噪声下的角点检测数

表3 p=5%椒盐噪声下的角点检测数

表4 ε2=15高斯噪声下的角点检测数

表5 ε2=15高斯与p=1%椒盐混合噪声下的角点检测数

表6 ε2=15高斯与p=5%椒盐混合噪声下的角点检测数

出,相比于无噪声环境下,对比算法在有噪声环境下的配准角点均减少,且错误角点数增加。主要原因是对比算法中的个别算法只对高斯噪声具有一定鲁棒性,而对椒盐噪声十分敏感,导致检测出大量的伪角点。本文NDD算法所使用的ANDD滤波器具有较强的高斯噪声鲁棒性,保证了高斯噪声环境下的检测高精度。此外,基于直方图分层技术和选择加权策略的非线性滤波使得最终角点测度抑制了椒盐噪声的不利干扰。因此,NDD算法在不同噪声下的角点检测结果与无噪声环境下十分接近,算法整体性能比对比算法更优。

4.2 重复率实验

(1)非一致尺度变换。对原始图像X坐标不变换,对Y坐标进行尺度缩放,其尺度因子在[0.5,2]中进行采样,间隔为0.1。

(2)高斯噪声。对原始图像添加0均值高斯噪声,噪声标准差在[1,15]上采样,间隔为1。

(3)椒盐噪声。对原始图像添加椒盐噪声,椒盐噪声密度在[0.005,0.05]中采样,间隔为0.005。

(4)混合噪声。对原始图像添加标准差为15的高斯噪声和椒盐噪声,椒盐噪声密度在[0.005,0.05]中采样,间隔为0.005。

图6 24幅测试图像Fig.6 24 test images

实验中6种对比算法的平均重复率如图7所示。可以看出,非一致尺度变换下,角点处的边缘轮廓夹角发生了变化,使得重复率有明显下降。由于NDD算法在计算角点测度时利用了空域影响范围较小的IGD滤波器提取主方向上的图像导数,其不易受到周围其他轮廓像素影响。同时,NDD算法只利用了像素主方向及其垂直方向上的图像导数,对非一致变换不敏感,具有较高的重复率。在高斯噪声情况下,NDD算法与其他算法较为接近。在椒盐噪声情况下,NDD算法表现出了明显的优势,重复率高于其他5种对比算法。在加入椒盐噪声和高斯噪声的混合噪声情况下,NDD算法的表现也优于对比算法。这是因为NDD算法采用了基于直方图分层的思想,能有效抑制椒盐噪声对角点检测的干扰,同时通过对剩余像素进行线性加权滤波,避免了高斯噪声的影响。NDD算法在混合噪声方面获得了更高平均重复率,综合性能优于其他对比算法。

(a)非一致尺度变换 (b)高斯噪声干扰

(c)椒盐噪声干扰 (d)混合噪声干扰图7 仿射变换实验结果Fig.7 Affine transformation experiment results

5 结 论

在角点检测中,噪声干扰会导致角点检测准确率低,且出现大量漏检错检问题。针对这些问题,本文提出了一种基于非线性方向导数的角点检测算法,能够有效剔除噪声对于角点检测的干扰,适用于混合噪声情况下的精确角点检测。本文结论如下。

(1)针对椒盐噪声干扰容易产生伪角点的问题,本文构建了基于像素值排序的图像分层策略,通过去除部分上层和底层二值图的方式,避免了椒盐型噪声的影响。相对于传统基于滑窗的非线性滤波,本文算法的时间效率得到提升。

(2)针对高斯噪声对图像角点检测的不利影响,本文通过对剩余分层图像中像素进行基于各向异性高斯导数滤波器的线性加权滤波,在抑制高斯噪声的同时,能更精确提取不同方向上的图像导数。相比传统导数滤波器,本文算法提取方向导数准确性较高。

(3)针对邻近边缘干扰和不同尺度下特征难以稳定提取分别导致的伪角点和角点漏检问题,本文采用多尺度多方向和微分比率的策略,使得角点测度不易受到其他边缘结构的干扰,同时能实现多尺度角点特征的有效提取。为混合噪声情况下的稳定角点特征提取提供高效技术支持。

猜你喜欢
角点椒盐高斯
一种改进的自适应FAST 角点检测算法
多支撑区域模式化融合角点检测算法仿真
基于点云聚类的垛型角点检测方法
学做椒盐虾
角点检测技术综述①
数学王子高斯
天才数学家——高斯
从自卑到自信 瑞恩·高斯林
椒盐芝麻烧饼
椒盐卷饼