梁铭裕,刘修泉,黄 平+
(1.华南理工大学 机械与汽车工程学院,广东 广州 510640; 2.佛山职业技术学院 机电工程学院,广东 佛山 528137)
汽车加油机器人的视觉系统首先进行图像获取、油箱盖识别与定位和获取空间位置信息,然后经过控制部分做出判断,控制机器人到达指定位置抓取油箱盖。在一幅汽车油箱盖图像中,边缘包含了大量的图像特征信息。因此,油箱盖边缘检测是汽车加油机器人研究的一个重点。
图像边缘检测关键在于精确定位边缘位置和有效抑制噪声。现代边缘检测方法,如启发式算法、神经网络算法等[1,2]定位精度高且适用于各类图像,但是需要建立大量数据样本且算法实现成本大、效率低。传统边缘检测方法有Sobel算子、LoG算子以及Canny算子等,Sobel算子定位精度高,但是会产生较粗边缘[3];LoG算子在平滑图像的同时会将边缘平滑,因而无法检测出弱边缘[4];Canny算子被证明是基于像素梯度边缘检测方法中最有效的方法[5]。因此,近年来出现了很多对Canny算子的改进方法。Pawar等[6]提出采用形态学方法滤除噪声并采用图像分块的方法确定阈值。Nikolic等[7]提出结合改进的中值滤波器与动态加权平滑滤波器进行图像去噪,并人工设定阈值进行边缘检测。Xuan L等[8]利用中值滤波器与双边滤波器进行去噪,再采用微分运算对梯度幅值直方图进行处理,由此得出两个自适应的阈值对图像提取边缘。Gong Y等[9]利用二维Otsu算法和牛顿迭代法自适应选取阈值,再对图像进行边缘检测。刘丽霞等[10]采用引导滤波对图像平滑并采用4个方向的梯度算子计算梯度与方向,再用Otsu算法获取阈值。Canny算子具有较高的定位精度、较好的边缘平滑性与连续性,但也会存在伪边缘和抗噪能力差等问题。因此,采用传统边缘检测方法提取汽车油箱盖边缘仍然有改进空间。
本文根据汽车油箱盖图像中普遍存在的问题,首先提出一种基于伪球滤波和内积能量的改进Canny边缘检测方法用于提取精确边缘,再设计一种基于形态学和Otsu算法的油箱盖粗糙边缘提取方法用于去除伪边缘影响,获得完整粗糙边缘,最后将精确边缘与粗糙边缘结合从而获得油箱盖边缘。
对于油箱盖边缘检测可以看作是对油箱盖与汽车覆盖件之间环形板缝的内边缘检测。由于油箱盖表面可能存在灰尘、大颗粒污迹或涂鸦,如图1(a)和图1(b),这会为油箱盖边缘检测带来干扰。在自然光条件下采集图像,油箱盖表面的高反光区域也会产生强响应的伪边缘,如图1(c)所示。其次,油箱盖边缘容易发生高反光,如图1(d),这也会造成响应强的伪边缘。同时,图像采集时的噪声也是不可忽略的问题。因此,不能用单一的边缘检测方法来获取准确的油箱盖边缘。提出一种基于形态学和Otsu阈值的方法对图像提取粗边缘,可以剔除错误边缘。用改进的Canny边缘检测方法提取精确边缘图,再用粗边缘图和精确边缘图进行“与”操作,可以获取准确的油箱盖边缘图,图2为算法流程。
图1 汽车油箱盖图像
图2 算法流程
Canny算子边缘检测的基本步骤如下:
(1)平滑图像。采用一个环形二维高斯函数与原图像卷积以抑制噪声,得出平滑后的图像。二维高斯函数为
(1)
式中:σs为高斯分布参数。
用G(x,y)与图像I(x,y)卷积形成高斯滤波平滑后的图像fs(x,y)
fs(x,y)=G(x,y)*I(x,y)
(2)
(2)用一阶差分模板(如Roberts、Prewitt、Sobel等)计算图像的梯度幅值与方向。采用差分模板与图像卷积得出图像灰度沿水平方向的偏导数gx(x,y)与垂直方向的偏导数gy(x,y),从而计算出梯度幅值与方向。
设水平方向与垂直方向的差分模板分别为H1和H2,则
gx(x,y)=fs(x,y)★H1
(3)
gy(x,y)=fs(x,y)★H2
(4)
计算梯度幅值与方向
(5)
(6)
(3)对梯度幅值进行非极大值抑制。对图像进行梯度幅值计算后,因存在多个边缘梯度响应而造成边缘粗大且模糊,所以需要对梯度幅值图进行非极大值抑制以获得细化的边缘图,使边缘定位更加准确。将梯度方向划分为水平、垂直、+45°和-45°,邻域中心点梯度幅值与沿其对应的梯度方向的两个像素相比,若中心点梯度幅值为最大值,则保留,否则置0。这样可以抑制非极大值得出细化的边缘。
(4)用双阈值处理进行非极大值抑制后的图像。设定高阈值Th与低阈值Tl对非极大值抑制后的梯度图进行分割。其中,高阈值分割后的边缘图可以去除大部分噪声边缘和背景边缘,但是目标边缘连接不完整;低阈值分割后的边缘图保留了大量目标边缘,但同时也保留了大部分噪声边缘和背景边缘。为了提高边缘检测器的效果,以高阈值分割后的边缘图为基础,在低阈值分割后的边缘图搜索可以与高阈值边缘图连接的边缘点,使目标边缘更加完整。
为检测出定位精度高且平滑性好的油箱盖边缘,提出一种基于伪球滤波与内积能量的改进Canny边缘检测方法,主要对传统Canny算子做出3点改进。
采用基于伪球滤波的边缘检测。为了减少噪声对边缘检测的影响,传统Canny算子在用差分模板提取梯度前会先用高斯滤波器对图像做平滑处理。但是在抑制噪声的同时会造成边缘的损失,从而影响定位精度。针对滤波器的平滑性能与边缘保持性能矛盾问题,采用一种基于伪球滤波的边缘检测算子,能在平滑图像同时获得更高的边缘定位精度,而且能相对独立地调节平滑性能和边缘定位性能。
采用梯度内积能量图代替梯度幅值图。传统Canny边缘检测使用对梯度幅值图进行非极大值抑制,由于没有考虑像素点邻域内梯度大小是否因噪声而出现随机误差,会使目标边缘出现像素缺失和错位等情况。对此,采用一种计算梯度内积能量图的方法,以获得更好的噪声抑制能力。
采用Otsu算法获取阈值。传统Canny算子采用人工选取阈值的方法可以保留大部分有用的边缘,但是算法的自适应能力会降低。采用Otsu算法可以自适应地确定边缘连接时的高阈值。
3.1.1 拽物线与伪球滤波器
曲线l为拽物线,如果其函数满足微分方程
(7)
式中:σ为常数,可以将上式方程的解写成
(8)
图3为σ取3时的拽物线。
图3 拽物线曲线
将拽物线绕对称轴旋转得出的曲面就是伪球面,其数学方程为
(9)
图4为σ取3时的伪球面。
图4 伪球面
拽物线在原点处无定义,在原点可以近似为冲激函数δ(x),所以直接用拽物线作为滤波核,在原点处会得出的响应与原信号基本相等。为了使其具有滤波性能,必须在原点处补充定义[11]。采用双二次函数对其进行补充。
在一个充分小的对称区间内定义函数q(x)为
q(x)=ax4+bx2+c,x∈[-ε,ε]
(10)
f(x)与q(x)满足以下约束关系
(11)
由式(11)求解得出参数a、b、c可以得出拼接后的函数
(12)
对式(12)绕对称轴旋转并作归一化可以得出拼接双二次函数的2D伪球滤波器的核函数
(13)
式中:S为归一化常量。伪球滤波器中σ为常数,ε为边缘控制参数,通过选取两个参数可以相对独立地调节平滑性能与边缘保持性能。对式(13)的滤波函数离散化,在区间[-σ,σ]×[-σ,σ]内均匀取样可以获得滤波模板。获取滤波模板后与原图像进行卷积操作就可以得出伪球滤波器平滑后的图像。
3.1.2 伪球边缘检测算子
式(13)所示的滤波函数PSF(x,y)处一阶可导,分别对x、y求偏微分得出
(14)
(15)
与其它边缘检测模板相似,对式(14)、式(15)离散化并进行取样即可获得两个方向上的边缘检测模板
(16)
(17)
式中:i,j=1,2,…,2T+1,T为滤波器的大小;式(16)和式(17)分别为水平、垂直方向上的伪球边缘检测器。采用卷积操作即可获得水平、垂直方向上的梯度。
(18)
从直观上看,由于在噪声点附近梯度方向呈随机分布,方向难以与边缘点一致,故能量内积响应小;在边缘点邻域内各点的梯度方向与边缘点较一致,故能量内积响应大。
通过将伪球滤波、伪球边缘检测器、内积能量与Canny算子相结合,得出改进的Canny精确边缘检测方法,步骤如下:
(1)采用伪球滤波器平滑图像。
(2)采用伪球边缘检测模板计算各点梯度。
(3)利用式(18)计算图像各点的内积能量得出内积能量图。
(4)利用梯度方向与内积能量图进行非极大值抑制。
(5)采用Otsu算法获取高阈值,并取高阈值的0.3倍为低阈值,双阈值处理获取连续目标边缘图。
为去除非目标边缘,提出一种基于形态学和Otsu阈值的粗糙边缘检测方法。数学形态学方法可以根据图像感兴趣目标的形态特征增强图像,保留有用信息的同时可以去除噪声[13-16]。首先采用伪球滤波器平滑图像并进行多尺度底帽变换增强图像,再用最大类间方差进行阈值分割,然后进行连通区域去噪以获取油箱盖板缝区域,最后获取板缝内边缘并进行膨胀获得粗边缘。
由于汽车油箱盖与覆盖件之间的板缝区域比周围的灰度值低,为了增强板缝与覆盖件之间对比度以及去除图像中的噪声,选用多尺度底帽变换对图像处理,提取具有最小灰度值的板缝信息,同时可以消除光照不均和解决覆盖件存在高反光区域的问题。
设f是输入图像,B为结构元素,Df和DB分别是f和B的定义域,则:
灰度膨胀
(19)
灰度腐蚀
(20)
灰度开运算
(f°B)(x,y)=(f⊖B)⊕B
(21)
灰度闭运算
(f•B)(x,y)=(f⊕B)⊖B
(22)
开运算是先用结构元素B对原始图像f进行灰度级腐蚀操作,再进行膨胀,可以用来去除灰度图中比结构元素小的灰度值较高的区域;闭运算是先进行膨胀后进行腐蚀操作,可以用来去除灰度图中暗细节部分。
用闭运算结果减去原图像,这种操作称为底帽变换(Bottom-hat,BTH),可以提取小于结构元素的暗细节特征并去除光照不均匀的影响,定义为
BTH(x,y)=(f•B)(x,y)-f(x,y)
(23)
数学形态学的重点是结构元素的选择,底帽变换的结构元素是提取板缝信息的决定性因素,结构元素过大会加入较多的噪声,过小会漏掉有用的信息。采用多结构元素提取图像不同尺度下的暗细节特征,多尺度结构元素定义如下
Bn=B0⊕B0…⊕B0…(d-1)times
(24)
其中,B0为初始选择的结构元素,d为尺度参数,即大尺度结构元素由初始结构元素膨胀得到。因此,第i个尺度下由底帽变换提取的图像暗区域BTHi定义如下
BTHi(x,y)=f•Bi-f
(25)
不同尺度下,运用BTHi得到当前点(x,y)的BTHi(x,y)值,并以最大值作为当前点的最优图像暗区域特征,定义如下
(26)
图5为基于底帽变换提取暗细节特征的图像,采用多尺度圆形结构元素进行底帽变换,油箱盖的板缝信息在局部区域更加突出,并且可以减少光照不均和高反光区域的影响。
图5 底帽变换效果
Otsu算法是一种图像分割的自动阈值选择算法[17],可以将板缝与非板缝区域区分的有效方法。利用最大类间方差法可以自动确定图像的分割阈值,把图像分为目标和背景并使两部分之间的方差值最大,避免人为设定参数。
设图像灰度级范围为[0,1,…,L-1],大小为M×N,其中L为图像灰度级个数,令ni表示第i灰度级的像素点数,图像归一化灰度直方图概率分布为
(27)
假设阈值t将图像划分为两部分,一部分为图像背景C0={0,1,…t},另一部分为图像目标C1={t+1,…,L-1}。定义图像类概率与类均值分别为
(28)
(29)
定义图像灰度总均值为
(30)
定义图像类间方差为
(31)
则最大类间方差阈值t*为
(32)
以图5为例,对底帽变换后的图像利用最大类间方差阈值进行分割,结果如图6所示,可以较好地从油箱盖图像中提取出板缝目标。在二值图像中存在一些不属于目标的信息,为了剔除非目标的干扰并获取板缝内边缘需要进一步处理。
图6 Otsu阈值化结果
阈值分割后的汽车图像由板缝像素点、干扰噪声像素点、背景像素点组成。根据油箱盖板缝的特征信息,采用提取连通区域方法进行去噪,选面积最大连通区域为板缝区域。
采用形态学方法提取边界,对二值图像进行膨胀,膨胀后的结果与原二值图作差得出板缝边界图,选取连通区域长度较短的为板缝内边缘。由于采用阈值分割后的二值图像边缘并不是准确定位的油箱盖边缘,为确保粗糙边缘与准确定位的油箱盖边缘有交集且不会包含较多伪边缘,采用圆形结构元素对内边缘进行膨胀操作,得出油箱盖粗糙边缘,如图7所示。
图7 油箱盖粗边缘
本文实验采用的汽车油箱盖图像来源于自然环境下的实拍图片,从不同拍摄角度、不同拍摄距离、不同拍摄背景、不同颜色采集大小为1920×1440的汽车图像,采用检测出的油箱盖区域做边缘检测,示例如图8所示。对多幅图像统计得出油箱盖区域图像大小约为384×384。
图8 汽车图像及油箱盖区域示例
采用Otsu阈值进行二值化,再结合连通区域统计,提取出油箱盖板缝区域,采用形态学方法提取油箱盖粗边缘,提取出的油箱盖粗糙边缘如图9(a)。采用改进的Canny精确边缘检测方法提取图像中准确的边缘,如图9(b)所示。由图像可以看出,该方法可以获得较为精细的边缘,但是油箱盖表面高反光区域、大颗粒污迹或涂鸦等情况造成的伪边缘也被检测出来。对粗糙边缘图像与精细边缘图像作“与”操作,准确定位出板缝内边缘。对图9(a)与图9(b)的结果进行“与”操作,将其效果如图9(c)所示。
图9 提取汽车油箱盖边缘
由结果可以看出,提出的汽车油箱盖边缘检测方法可以准确检测出油箱盖边缘并消除高反光区域、大颗粒灰尘或涂鸦的影响。
为验证本文提出的改进Canny边缘检测方法在汽车油箱盖边缘检测中的应用,在消除边缘噪声、边缘缺失、边缘错位以及边缘冗余的效果,对拍摄的4幅图像,如图1所示,分别用Sobel算子、LoG算子以及Canny算子进行仿真实验。图9(d)~图9(f)分别为用Sobel算子、LoG算子和Canny算子进行边缘检测并取反后的结果,其中图9(d)与图9(e)取最大值的20%作为阈值进行二值化操作。从图9(d)~图9(f)可以看出,Sobel算子检测的边缘粗大,定位精度最差;LoG算子可以检测出精细边缘,但是噪声多且边缘连通性差;Canny边缘检测方法边缘效果较好,但还是会有边缘噪声、边缘缺失、边缘错位以及边缘冗余的情况。图10为图9(f)中方框内的局部放大,图11则为改进Canny边缘检测方法结果的对应局部放大,改进的方法对消除边缘噪声、边缘缺失、边缘错位以及边缘冗余有一定的效果。
图10 Canny边缘图局部放大
图11 改进Canny边缘图局部放大
为了验证改进的Canny算法的去噪能力,对15幅汽车油箱盖图像添加不同程度的噪声后进行边缘检测,再计算峰值信噪比(PSNR)并取平均值,结果见表1、表2。
表1 不同程度高斯噪声下的PSNR值
表2 不同程度椒盐噪声下的PSNR值
由表1与表2可以得出随着高斯噪声大小或者椒盐噪声浓度的增加,本文的改进Canny方法客观指标PSNR比传统Canny高,具有更好的去噪能力。
综上可以看出,改进Canny边缘检测方法的边缘较为连续清晰和平滑,且在噪声抑制方面具有更好的效果。
针对汽车油箱盖图像精确提取油箱盖边缘过程中存在难以有效去除伪边缘和抑制噪声等问题。本文先提出一种基于伪球与内积能量的改进Canny边缘检测方法,利用伪球滤波器与伪球边缘检测器可以平滑图像并具有较好边缘定位能力的优势,再考虑因随机误差引起的梯度大小差异而采用计算梯度内积能量图,使得改进的边缘检测方法具有良好的去噪和定位精度。再提出一种基于形态学与Otsu阈值的粗边缘提取方法,利用多尺度底帽变换可以突出汽车油箱盖与覆盖件之间板缝区域的能力,再结合Otsu算法可以自动确定分割阈值的优势,使得该方法可以获得粗糙目标边缘。最后将精细边缘与粗糙边缘进行“与”操作,获得油箱盖准确的目标边缘。
实验结果表明:改进的精确边缘检测方法可以获得连续清晰和平滑的边缘,并且较传统的Canny边缘检测在边缘噪声、边缘缺失、边缘错位以及边缘冗余的问题上都有更好的改进。粗糙边缘检测方法可以完整提取出油箱盖边缘,可以去除因高反光和大颗粒灰尘等引起的伪边缘。粗细边缘结合可以得出精确的汽车油箱盖边缘图像。