张久超,徐晓光,叶 炯
(安徽工程大学a.高端装备先进感知与智能控制教育部重点实验室;b.电气工程学院,安徽 芜湖 241000)
在现代工业生产中,机器人通过机器视觉引导抓取工件,若要提高速度和准确率就需要更为可靠的视觉算法。在视觉引导下,如何对工件快速完成识别与检测,并将信息准确传递给机器人是目前需要解决的问题。视觉处理中边缘检测是关键之一[1]。边缘检测算法,简单来说就是处理图像边缘信息的一种方法。获取到一幅图像后,往往像素变化较大的地方就在图像边缘处,因此接下来的处理方向是找出一种合适的算法来将边缘处的信息清晰准确的提取出来。而目前在边缘处的信息提取的方法一般可分为一维边缘提取方法和二维边缘提取方法。一维边缘是指该图像在某一方向的一阶导数值最大的位置,而二维边缘指的是在二阶导数中某个零点位置且该零点两侧的数值符号相异(由正到负或由负到正均可)。与之对应的则是一维边缘算子和二维边缘算子。目前常用的一维边缘算子有Roberts算子[2]、Sobel算子[3]和Prewitt算子[4]等;二维边缘算子有LOG算子[5]、Laplacian算子[6]等;需要另外说明的就是传统一维Canny算子[7-8],它是基于图像平滑处理之后再求一阶导数的边缘算子。对比以上几种算子后选择Canny算子进行图像处理。但通过对测试工作环境下的图像进行识别与检测分析发现:检测结果中的图像存在部分边缘细节丢失,图像显示不完整问题;图像中仍有干扰信号存在,高斯滤波器处理效果不明显。为了得到边缘细节保留完整且干扰信号处理完整的图像,需要对Canny算子进行改进。通过选择可分解信号并能分别做出处理的小波变换来最大化处理干扰信息,并联合边缘细节保留效果更优的双边滤波(一种非线性滤波方法)来代替单一的高斯滤波器,由此得到处理效果更好的图像。
Canny算子应用更为广泛,它是一种多级边缘检测算法,不仅具有良好的信噪比,同时对于高边缘检测也有良好表现。Canny最初是为了寻求一个最优的边缘检测算法,也因此形成了判断边缘检测算子好坏的标准:具有良好的检测率;能够精准定位;具有最小响应。
由此,实现Canny边缘检测算法的基本步骤如下。
1)滤波降噪。通过使用合适的高斯滤波器对图像进行平滑处理,即对原始图像f(x,y)进行二维高斯函数G(x,y)卷积操作。
(1)
S(x,y)=G(x,y)*f(x,y),
(2)
其中:*表示卷积运算;σ是高斯滤波的系数,σ值越大,平滑效果越好,抑制噪声能力越好;S(x,y)表示卷积后的图像。
2)通过一阶导数计算梯度幅度值和幅度值方向。以A(x,y)为水平方向x导数,B(x,y)为垂直方向y导数,计算出函数f(x,y)的梯度幅度值C(x,y),确定该函数图像的方向为θ(x,y),其中梯度幅度值C(x,y)和θ(x,y)由下式(3)确定。
(3)
3)边缘细化非极大值抑制。一般认为梯度幅度值中的极大值点是边缘点,但并不是所有梯度幅度值较大的点都是边缘点。通过该方法,将每个像素点的梯度幅度值与该点在每个梯度方向上的幅值进行比较。如果不是最大值,则使用0表示当前灰度值,该灰度值属于非边缘点。如果它是最大值,它将被保留为边缘点,以获得细化的边缘。
4)采用高低阈值确定边缘。先预设好高低阈值,再对图像中每个像素点进行判断,大于高阈值的像素点保留,小于低阈值的像素点舍弃,位于中间的则看它与高阈值点间的联系程度,有联系则视为边缘点,无联系则舍弃。
此方法受噪声影响较小,图像处理后边缘连续性好,但是容易产生假边缘信息,也会忽略掉部分有用边缘信息。
采用的改进视觉算法(改进的Canny算法),与传统Canny算子相比较,第一步降噪处理它采用一种基于小波变换[9-10]与双边滤波的方法代替传统高斯滤波器。一个原始图像信号通过小波分解后变为高频和低频部分,高频部分经过分离后,可以选择合适的小波系数进行阈值去噪处理;之后将它与低频部分进行重构,得到高频去噪图,再利用双边滤波对高频去噪图中的低频信号进行去噪处理,最后通过小波逆变换得到去噪后的图像。此方法不仅提升了对图像中高频和低频噪声信号的滤波效果,还解决了高斯滤波导致图像边缘模糊的问题。第二步为了适应工件摆放的随机性,适应大范围角度变化,在Sobel算子基础上增加了更多梯度方向的计算。
小波变换不同于傅立叶变换,它采用长度有限具有衰减特性的小波基来表示信号,并能实现信号分割,可将一个图像信号转换成高低频两部分信号。小波变换基于它的二维特性可以同时定位时域和频域。频率分辨率和时间分辨率可以在处理低频和高频信号时分别达到最好效果。小波变换(WT)公式为
(4)
其中:R表示实数域;涉及小波变换中的两个变量参数为尺度因子α和位移参数τ,分别对应于控制小波函数的伸缩与位移;ψ(t)表示小波函数。一般地,当取α=1,τ=0为标准波时,据此可以得出当0<α<1时,波形瘦且高,震荡时间短;当α>1时,波形胖且矮,震荡时间长。在对具体图像信号做分解时这种取值方式在0<α<1时要特别注意,因为结果波形受尺度因子α影响很大,约为α2的反比。因此分解信号的基波函数选择至关重要。
根据定义,对原图像处理时,需要选取合适的基函数(基小波ψ(t))对图像信号进行分解,获得高频、低频信号,这能得到高低频信号在时域的位置,有助于定点消除。然后在不同的尺度下,依据不同小波基的选择差异提取信号的小波系数,剔除噪声对应的小波系数从而实现去噪。具体的图像处理方式是先通过小波分解,由小波变换完成高频部分信号的滤波处理,然后留下低频部分信号,由双边滤波处理。
小波变换去噪图像的一般模型为
X(i)=f(i)+σe(i),
(5)
其中:X(i)为噪声图;f(i)为纯净图;σ为方差;e(i)为噪声,i表示图像中的像素,i=0,1,…,n-1。
为了更好地处理工作环境中的工件图像信号,采用coif2小波基完成小波变换相关处理。对图像采用两层小波分解,并设置尺度向量和阈值向量,对高频小波系数进行阈值处理,即在处理中将分解得到的所有高频部分信号做阈值处理,这样可以最大化消除高频段无用干扰信息,再与低频部分信号重构,就可得到已去除高频部分干扰信号的工件图像。
双边滤波是一种非线性滤波方法。该方法使用的函数由两个高斯滤波函数组合成,它不仅能实现平滑降噪还可以保留边缘细节信息,从效果对比来看该算法优于高斯滤波。在对含有高频信号的图像使用小波处理过后,剩下的低频信号可以通过双边滤波解决。双边滤波中对含有空域分量kd和值域分量kr两部分图像滤波后的公式为
(6)
其中:积分号前的部分是归一化因子,式中包括空域分量kd和值域分量kr,c和s指 closeness 和 similarity 函数,研究只考虑对像素点进行加权计算,x是检测点,f(x)代表x点的像素值。f(x)和h(x)代表滤波完成前后的图像。所以由公式(6)推导出双边滤波函数公式为
(7)
它可以实现对图像的进一步滤波,并保留细节边缘信息。
由于工业生产中,工件在运输过程中摆放随机,方向无规律。由于机器人抓取的工件角度是任意的,为了让图像处理更简洁方便,增加了工件图像多方向梯度计算。具体地,改进的工件图像方向梯度算式为
(8)
其中:S(x,y)表示原始图像卷积后的图像;G(x,y)表示该图像所在的方向梯度。通过以上算式,可以得到梯度幅度值公式为
(9)
其中:D(x,y)表示梯度幅度值;同时梯度方向上θ的公式为
(10)
具体地,依据以上相关算法操作程序及讨论结果,得到所改进的算法处理流程如图1所示。
图1 改进Canny算法处理流程
在图1的处理流程中,先对原始图像中信号进行小波分解,得到分解出的高低频两部分信号,再对coif2小波基分解得到的高频信号中的干扰信号进行全面处理,剩余的低频信号和已处理完成的高频信号用小波重构进行信号还原就得到了高频去噪图像,高频去噪图像中剩余的低频信号干扰通过双边滤波进行去除,最后,由小波逆变换进行处理可得到高低频部分干扰信号都已去除的图像,后续处理仍按照Canny算子步骤进行,最终得到边缘保留完整且去除干扰信息的结果图像。
以上得到了改进的Canny算子,为了验证改进的Canny算法的图像处理效果,本研究采用测试环境中的两组效果图(图2中的(b)和(e)以及图3中的(b)和(e))进行验证。
(a)灰度原图 (b)传统Canny算子处理结果
(c)小波重构处理结果 (d)双边滤波处理结果 (e)改进Canny算子处理结果 图2 第一组图片处理效果对比
(a)灰度原图 (b)传统Canny算子处理结果
(c)小波重构处理结果 (d)双边滤波处理结果 (e)改进Canny算子处理结果 图3 第二组图片处理效果对比
通过上述两组图可以看出,传统Canny算子图像噪声去除较好,但边缘处图像信息仍有残缺;而改进后的Canny算子检测效果更好,不仅图像噪声消除率高,而且边缘信息保留更完整,提高了边缘检测准确度。此改进方法处理信息的环节是,先通过小波变换实现高频部分干扰信息的去除,再通过双边滤波实现低频部分干扰信息的去除并很好地保留了原图的完整性。在该系统所需的图像边缘检测中,此改进视觉算法既有效抑制了噪声,也实现了很好的边缘定位。
针对传统Canny算法图像处理边缘模糊,细节丢失问题,在传统Canny算法基础上进行了改进:1)采用小波变换与双边滤波联合的方法代替传统高斯滤波器处理方法;2)为了适应工件摆放的随机性,适应大范围角度变化,在Sobel算子基础上增加了更多工件图像梯度方向的计算。通过实验将改进的Canny算法与传统Canny算法进行对比,结果表明,改进方法有效改善了边缘模糊,细节丢失问题。对于后续如何将图像处理效果变得更优,还有待于进一步研究。