1.2 特征线检测
作为最常见的图像底层特征,图像边缘包含丰富的信息,人眼可通过简单的边缘轮廓识别出复杂的目标。而在现实生活和工业生产中需要处理大量的人工环境图像,如道路两旁的交通标志牌、工业产品质量自动检测中的规则产品、建筑物等,这些人工环境图像中包含大量的线和规则图形信息。有效提取这些线和图形信息,可辅助完成相关的计算机视觉任务。
1.2.1 Canny边缘检测
Canny提出了衡量边缘检测算法性能的三个理论标准[23]:检测性能、定位精度和单边响应,理论上,只有当三个准则同时被最大化时边缘检测算法才具有最优的性能。检测性能包括对真实边缘的检测性能和对虚假边缘的抑制性能两个方面,用信号输出和噪声输出值比(SNR)来度量:
式中,f(x)表示优化算子;G(x)表示理想边缘;n0为噪声方差水平,假设检测算子具有有限的边缘响应[-W,W]。SNR越大表明算法的检测性能越好,反之算法的检测性能越差。
边缘定位精度的度量准则为(式中f′(x)表示f(x)的导数):
边缘检测算法对于单一边缘应该具有单一的边缘输出,因此边缘响应在真实的边缘处应达到极大值。但是由于噪声的影响,同一边缘附近边缘响应可能出现多个极大值,相邻的两个极大值之间的偏差为:
噪声可能引起的虚假边缘的个数为Nn=2W/xmax=2/k,为使边缘检测算子对同一边缘具有单一边缘响应,应最大化xmax以使检测算子对噪声响应的极大值个数Nn趋近于零。
理论上已经证明,Canny算子是对上述三个检测准则同时优化的结果,因此,理论上Canny算子是一种最优的边缘检测算子,实际上Canny算子已经成为边缘检测的标准算法。经典的Canny算子主要由四个步骤组成:首先用高斯滤波器平滑图像;接着用高斯一阶偏导的有限差分来计算梯度的幅值和方向;然后对梯度幅值进行非极大值抑制(NMS);最后用双阈值算法检测和连接边缘。
但是,Canny算子在高斯滤波过程中在抑制噪声的同时也使图像损失了部分边缘信息,因而影响了边缘的定位精度。噪声抑制性能和边缘定位精度成为所有边缘检测算子相互矛盾的两个性能要求,这也是导致边缘检测成为最困难的问题之一的主要内在原因。通常进行边缘检测时通过参数调整来获得噪声抑制性能和边缘定位精度两方面的折中效果。
近几十年来,对边缘检测的研究大多集中在解决噪声抑制性能和边缘定位精度之间的这种矛盾上,文献中提出了大量的方法来使得在有效地抑制噪声的条件下能够对边缘保持较高的定位精度。中值滤波是最常用的简单滤波方法之一,它在保持边缘定位精度的条件下具有一定的去除图像中噪声的能力。频域变换为图像的内容分析提供了有力的工具,通过整体变换进行噪声估计和局部变换进行边缘分析相结合,能够同时达到平滑噪声和保持边缘的目的。Lindeberg[7]分析了边缘检测算子的平滑性和定位精度之间的矛盾,认为选取合适的尺度是取得较好折中效果的有效步骤,并通过在尺度空间内搜索使边缘强度达到极大值的位置来自动选取合适的局部尺度参数,一定程度上缓和了这一矛盾。Rivera和Marroquin[24]从图像复原的角度利用边缘保持的正则化方法对这一问题进行了深入的探讨。Gijbels等[25]将灰度图像视为图像曲面,通过估计其表面的不连续性并采用局部线性核平滑的方法,在保持图像边缘的同时能够有效地去除平滑区域的噪声。
尺度选择是进行边缘检测最为重要也是最为困难的问题之一,尺度选择过大可能会导致许多对比度较小的边缘检测不出来并且影响边缘的定位精度,尺度选择过小又将导致所检测出的边缘点中包含大量噪声点。如何对图像进行多尺度分析和选择合适的尺度目前是边缘检测最为热门的方向之一。早期在边缘检测多尺度分析方面的工作主要是边缘聚焦法,该方法利用一系列从粗到细的尺度参数分别进行边缘检测,同时通过对边缘进行跟踪来确定边缘检测的合适参数和边缘的相对准确位置。通过在尺度空间中分析图像边缘的极值特性,Lindeberg提出了一种进行自动边缘尺度选择的基本思想:在没有其他任何先验知识的前提下,如果定义的正则化能量函数在某一尺度上达到局部极大值,则这一尺度可以看作该点处的特征尺度之一。Lindeberg构造了两个基于高斯函数的正则化能量函数来进行自适应边缘尺度检测:
式中,σ表示计算梯度时所用高斯函数的尺度参数;Lx、Ly、Lxxy和Lxyy分别是图像与高斯函数的各阶偏微分模板卷积后某一像素点处的值。同Lindeberg的思想完全不同,Elder和Zucker[26]提出了一个完全基于局部信息的尺度选择算法。Elder认为,在边缘检测过程中边缘点和噪声点仅仅基于图像内容信息很难区分开来,边缘检测算子应该检测出图像中所有的真正边缘,同时控制由噪声引起的虚假边缘点以最小概率检测出来。通过对高斯函数的扩散方程进行概率分析,Elder引入了最小可靠尺度来保证大于这一尺度进行边缘检测获得的边缘点是噪声点的概率小于某一设定值。
目前常见边缘检测算法大体上可以分为四类:基于高斯函数的算法、形态学的算法、基于频域的算法和彩色边缘检测算法。Nguyen和Ziou[27]通过实验系统地比较了常见的边缘检测算子的性能,并指出绝大多数情况下Canny算子具有最好的检测性能。但是,Canny算子也有一定的局限性,Basu[28]分析后指出:“Canny算子在进行非极大值抑制时简单地将梯度幅值比其梯度方向上相邻点梯度幅值大的像素点检测为边缘点,而没有考虑到这种差异是否大于随机误差导致的变化”。因此Canny算子对于较弱边缘附近的噪声非常敏感,当图像中存在较大的随机噪声时,算法的抗噪能力急剧下降。
1.2.2 规则图形检测
在圆检测方面,基于Hough变换的方法被广泛地应用[29],该类方法使用边缘检测的结果将直线的检测问题转化为参数空间的投票问题,对投票结果进行局部极大值检测,确定圆心的位置和圆半径值,实现圆检测。但该类方法存在计算量大、占内存空间大、效率低下的缺点。为了克服该缺点,其他的方法被提出来,如模板匹配技术、遗传算法和最小二乘方法。大部分的方法在噪声条件下能获得较好的准确性。
针对椭圆检测,根据其检测原理相关方法可分为三类:基于拟合的方法、基于Hough变换的方法和基于曲线弧的方法。第一类方法主要利用边缘点,基于代数拟合、正交最小二乘法拟合或最大似然估计建立椭圆数学模型。基于Hough变换的方法通过在变换空间中找到局部极值点获取椭圆的参数。尽管要考虑鲁棒性,但利用标准Hough变换产生一个五维椭圆参数空间是不切实际的,涉及大量计算成本与内存需求。为了提高效率和减少空间需求,随机Hough变换(Randomized Hough Transform,RHT)和概率Hough变换(Probabilistic Hough Transform,PHT)利用边缘点的子集求解椭圆参数。降低时间成本和内存的另一种方法需求是分解五维参数空间至低维子空间,从而逐步确定椭圆参数[30]。最近,基于曲线弧的方法被提出[31]。该类方法首先基于连续性找到曲线弧,然后验证有效的曲线弧,最后利用RANSAC等算法进行拟合,获取参数值。该类方法需要少量的计算和存储负载,对于图像内容较为简单的应用,要优于基于Hough变换的方法。但是,由于其严重依赖边缘弧检测的准确性,对于包含复杂轮廓的图像检测精度将下降。
多边形检测方面,广义Hough变换(GHT)利用多边形的几何特性,将变量空间图形的检测问题转化为参数空间的聚类问题,实现多边形的直接检测。其特点是简单直接,但由于计算量大,一般只适用于三角形等边数较少的多边形检测。Lara等[32]提出了平行算法识别图像中的多边形, 该算法在已知图像中直线及其端点的条件下,首先计算直线间的交叉点,并设计四个矩阵来表示端点及交叉点的相互位置关系,然后由一个端点出发,按照规则遍历各端点或交叉点,直至构成封闭序列,从而实现多边形检测。该方法可检测出图像中独立的多边形,不适用于图像中多边形有嵌套的情况。Barnes等[33]提出的方法首先获得图像边缘,然后依据正多边形的几何特性,利用后验概率定义正多边形的概率密度函数,接着通过计算正多边形边数和方向偏角来实现道路标识牌中正多边形的检测。Manay等[34]采用梯度方向匹配的方法获取图像角点及其夹角、方向等信息,对比给定多边形的边数、夹角等信息,基于模板匹配实现航拍图像中指定多边形的检测。施俊等[35]利用可调滤波器获取图像的能量图和方向角度图,在此基础上,计算图形边缘的角度信息和线条数量,实现指定多边形的检测。此外,文献[36,37]中还提出了少量其他多边形检测方法。