一种使用轮廓差分的直线探测算法
2020-12-18邓梦薇钟培华
伍 健,邓梦薇,钟培华
(江西农业大学计算机与信息工程学院,南昌,330045)
引 言
在有关机器视觉的应用领域中,由于直线为目标的定位和识别提供了直接的线索和提示,因此,直线形的目标探测是一个关键的问题。例如,包明和路小波[1]通过直线的探测来定位并提取出车牌;朱光[2]和王海军等[3]通过探测直线的方式从遥感影像中分别提取道路和桥梁等。可见,直线作为各类目标的一种基本形态,其探测问题已是机器视觉系统中的一项基本任务,具有很强的实用性。
通常,直线形目标采用Hough 变换及其改进算法来探测和定位。例如,樊玲和张晓玲[4]用Hough 变换方法来估计微弱目标的航迹;孙明等[5]用Hough 变换方法定位QR 码等。对于直线形目标的探测问题,除了基于Hough 变换类型方法之外,基于链码的直线探测方法(如文献[6]等),和基于Radon 变换的直线探测方法(如文献[7]等),都是较为经典实用的算法。近年来,研究者致力于开发无参数或实时的检测方法,如Lu 等[8]提出一种无参数的直线探测方法;Akinlar 和Topal[9]提出一种可实时运行的无参数检测方法等。然而,由于大多数探测方法都需要进行各种图像预处理,例如图像滤波,阈值化,边缘提取等操作。因此,其探测结果毫无疑问会受到预处理结果的影响,探测可靠性与这些预处理的质量紧密相关。
在精准农业的应用场景中,基于视觉的田间机器人需要探测作物以便自主行动,包括避开植株以免受到碾压,进行精准灌溉、施肥、收割等各类操作。目前对植株定位的研究多数倾向于提取条播作物的行。如刁智华等[10]对玉米行的提取技术;姜国权等[11]先用点粒子群聚类算法对作物按行分类,再用最小二乘法拟合出麦田作物的行等。用这类方法获取植株位置,在条播行中,需要用等间隔方式粗略地估算,如Tellaeche 等[12]就用这种方式进行选择性地喷洒除草剂,达到控制杂草生长的目的。除此之外,有研究者则不通过这类方法进行植株定位,而是采用图像分割方法进行定位。如闫如忠和林宇超[13]通过植株与杂草之间的颜色及形态特征来实现植株的定位,这类方法在具有彩色感知的视觉系统上,对较稀疏种植的小型作物的定位比较有效。考虑到许多直立状态下的植株定位问题可以归结为直线段的定位问题,因此,视觉感知系统也可以通过直线探测的方法来进行植株定位。从田间图像中定位植株,用通常的直线探测方法往往还不够好,这是因为田间图像具有交互的遮挡,复杂交织的光影等各类因素干扰。从这些含有大量杂乱信息的田间图像中定位植株,对图像滤波,边缘提取等预处理方法提出了很大的挑战。为了避免图像预处理结果的不利影响,本文尝试了一种无需任何预处理的直线段探测研究,提出了轮廓差分的概念,用于探测给定方向的直线段。该方法将直线段的搜寻问题转化为轮廓差分极大值的搜寻问题。针对田间图像的实验表明,本文方法在大部分情况下都能准确地标记出直线形目标的位置,而且对噪声和模糊具有较强的抗干扰能力。
1 基于轮廓差分的直线定位算法
如图1 所示,倾角为θ的直线段L 一端点安放在灰度图像f(x,y)的点p= (xp,yp)处,则图像f(x,y)在p处关于直线段L 的轮廓差分(Contour difference,CD)定义如下
式中:参数blurVal是一个用来刻画直线边缘模糊程度的度量,即直线段L 越模糊,其值应越大;q′是图像f(x,y)上的点,它满足
欲求p处的轮廓差分,可先通过
来计算距离p点为l的q点坐标;再通过
来确定q'坐标。其中rot(,90°)表示对向量以q点为中心,顺时针旋转90°,具体地,当p及q点确定后,q'坐标可以这样确定
图1 在p 点处轮廓差分的定义Fig.1 Definition of contour dif‑ference at point p
通过上述定义可知,轮廓差分就是沿着直线L 在法方向上累积对应点之间的绝对差。
图2(a,b)所示的分别是一幅室内走廊场景图及其各点处的轮廓差分值,其中待检目标长为L=70 像素 的竖直直线段(θ=90°,blurVal=2 像素)。从轮廓差分灰度图(图2(b))可见,场景内的各竖直门框处的轮廓差分值可以明显观察到,这一点在图2(c)中更能反映出来,它展示了轮廓差分在第251 行的曲线图。在图2(d)中,也展示了Hough 变换在θ=90°处的数据曲线图。对比这两幅曲线图的峰值突出程度,容易发现:当用Hough 变换来检测该幅图像的竖线时,由于这些变换值相差不大,将导致其阈值选取更困难;而轮廓差分于潜在直线段处的值远远比周围的值更突出,因此其阈值的选取更容易。由此可见,轮廓差分的概念能更好地反映直线段存在的可能性。
图2 轮廓差分数据与Hough 变换数据的比较Fig.2 Comparison between curves of contour difference and Hough transform
2 基于轮廓差分的直线定位算法
以下考虑如何从轮廓差分数据中搜寻目标直线段。从图2(b)的轮廓差分灰度图可以发现,轮廓差分值越大,直线存在的可能性就越大。因此,搜寻直线段只需在轮廓差分数据内搜索极大值即可。为了减少搜寻时间,这里先用一个轮廓灰度阈值Thr来排除明显没有直线段的位置,即当
时,则当前点p被视为不可能出现待检直线段的地方。注意,上式中的#L 表示直线段L 像素点的数目,Thr可以认为是目标直线段相对于周围环境的平均灰度差。经过式(6)过滤后的点,有时并不全适合被视为待检目标之处。实际上,经过许多实验验证,在这些经过Thr阈值后剩余的点中,偶尔有一些过度较突然的边缘,但并不是想要的待检直线段。为了避免此类误检,这里引入另一个参数——轮廓方差σ2,其定义如下:假设待检直线段L 当前安放在图像的p点处,则在p点处的轮廓方差为
图3 用轮廓差分探测直线的算法流程图Fig.3 Flowchart of contour difference based algorithm
则认为在点p处出现了目标直线段。
根据上述讨论,基于轮廓差分的直线段检测算法的流程总结如图3 所示。
3 实验结果
由于Hough 变换方法是各类应用场景下的成熟并广泛使用的直线探测方法,以下采用Hough 变换法作为本文实验对比的对象。在全部实验中,为Hough 变换方法选取最合适的实验参数,获取其最优的探测结果。
基于轮廓差分的直线探测方法需要5 个参数,分别为直线段长度L,倾角θ,边缘模糊值blurVal,轮廓灰度阈值Thr,以及轮廓方差容许值Tol。其中前3 个参数决定了待探测直线的属性,是由待检目标直线段来确定,而轮廓灰度阈值Thr及轮廓方差容许值Tol由具体的田间场景确定。一般地,对于8 bit的灰度图像而言,轮廓灰度阈值Thr及轮廓方差容许值Tol取值范围为
其中Tol=+∞表明忽视轮廓方差的限制。参数blurVal值的选取应视目标边缘的模糊程度而定,其值通常介于2 ~8 之间。目标边缘越模糊,其值就应越大。实验表明,该参数会影响目标定位的精确度,越大的blurVal值,目标定位将越不准确,定位的偏离就越大。
在图4 和图5 中,分别展示了一组竖直和水平线段探测的结果。从这些图像上可以发现,基于轮廓差分和Hough 变换的直线探测方法,均能较准确地标记目标直线段。在探测过程中,基于Hough 变换的直线探测方法能成功检测出目标直线,是因为它所利用的诸如Canny 等边缘算子成功地提取了目标边缘和细节。基于轮廓差分的直线探测方法,它完全不需要边缘提取过程,只需计算出每一点的轮廓差分,标记出合适的极大值即可。
图4 竖线探测对比Fig.4 Detection of vertical lines
图5 水平线的探测对比Fig.5 Detection of horizon lines
图6 展示了另一组情形——斜直线段的探测结果。从第一幅输入图像的探测结果来看,Hough 变换方法对桥梁斜拉线的探测基本失败,这是由于在边缘提取过程中,Canny 算子并没有全部正确标记出这些斜拉线(θ=25°),导致Hough 变换方法的探测失败。而基于轮廓差分方法对输入图像无需任何预处理过程,直接将大部分斜线探测出来了。在第二幅输入图像中,试纸以倾角为θ=60°叠放在白纸上。从探测结果来看,这两种探测方法基本都能正确标记出试纸的位置。在光和影的影响下,基于轮廓差分方法对试纸下半部分的标记并不理想之外,Hough 变换方法对试纸下方部分的探测也不准确。
然而,在田间场景下,基于边缘提取过程的直线探测方法,会因过多干扰因素而出现错误标记。图7 展示了两种方法从田间图像中探测植株的结果。从探测结果中可以看出,基于Hough 变换的直线探测方法,可以正确地检出大部分植株,但是出现了少部分误检现象。从田间图像中准确提取目标的边缘,需要克服枝条分叉,互相遮挡,光影交织,信息过量等诸多影响,对边缘提取算子提出了较高的要求。在包含了大量干扰的田间图像中,不合适的边缘提取技术,无疑会直接影响植株的定位。在Hough变换方法的实验中,本文采用了广泛使用的Canny 算子来提取边缘,并试图调整其参数避免田间干扰因素,但仍然不能完全正确地标记植株。而用轮廓差分检测植株,则可以避免边缘提取过程的影响,正确地标记出植株的位置。
图6 斜线探测对比Fig.6 Detection of slant lines
在田间图像中,除了上述提到的因素干扰边缘提取外,其他降质因素,如噪声和模糊,也会对目标定位产生重大影响。在图8 的实验中,对上例中的一幅田间图像加入噪声干扰进行了测试,这些高斯噪声是通过MATLAB 的imnoise 命令加入的。由于噪声的影响,轮廓方差σ2的控制意义不大,这里将其轮廓方差的容许值置为Tol=+∞。随着噪声水平的逐步增加,Hough 探测方法的结果正确标记的直线数目分别为3 株、2 株、1 株,与没有噪声情形探测出3 株的情况相比,明显随噪声增强而探测数目减少,并且探测结果也不稳定,这说明噪声对Hough 探测方法影响严重。基于轮廓差分的直线探测方法,即使采用相同的探测参数,其结果随着噪声水平的增加也变化不大,都能较准确地定位植株。类似地,加入模糊干扰后,如图9 所示,模糊对基于Hough 的直线探测方法影响更严重,但对于基于轮廓差分的直线探测方法来说,可以通过blurVal参数的调节来克服模糊的干扰,达到直线段探测的目的。
图7 植株探测Fig.7 Detection of plants’location
图8 在噪声环境下的植株定位Fig.8 Detection of plants’location under Gaussian noise
图9 在模糊干扰下的植株定位结果Fig.9 Detection of plants’location under blurred cases
直线探测的错误可以分为两种:一种称为遗漏,把本应检测出来的目标当非目标对象而遗漏了;另一种称为误检,把非目标对象当成目标而标记出来了。为了对比两者在探测误差上的差异,用这两种算法分别对10 幅图像(参见http://wudging.ys168.com)的特定目标直线进行了实验。表1 记录了这两种算法的探测数据,其中遗漏可以通过直线总数与命中数之间的差值获知,误检则可以直接从失误数这一列中获知。通过表1 可以发现,基于轮廓差分的直线探测方法在遗漏和误检两类错误中都比Hough 变换法较为优秀。
最后,就目标直线为水平情况下,以图5 的第一幅输入图像作为实验对象,对倾角θ做了灵敏度实验(即其他参数不变的情况下,变动倾角参数),实验结果如图10 所示。其中图中的命中率是指正确探测出的直线数目与实际水平线数目(20 条)的比值。从曲线的走势图可以发现,在其参数设置得当的条件下,若倾角的误差小于±4°时,则命中率≥75%。也可以认为,用本文所述的基于轮廓差分法来探测目标直线,其角度分辨率为3°,即:在实际应用中,为了探测的可靠性,建议目标与非目标直线之间倾角差距应大于3°。
表1 两种算法的探测精度比较Table 1 Comparison of accuracy between contour difference and Hough transform methods
4 结束语
在直线探测问题中,通常的图像预处理方法会对直线探测有重大影响,特别地,在田间图像中定位植株问题中,这些影响难以用寻常的预处理方法消除。本文提出了基于轮廓差分概念的直线探测方法,它不依赖图像预处理过程,可直接从图像平面进行直线段的探测。对田间图像的实验表明,本文所述方法能准确地定位植株,对噪声和模糊的干扰也较鲁棒。
图10 倾角θ 的灵敏度曲线图Fig.10 Target-hit curves with various pa‑rameters