APP下载

基于Halcon的汽车连杆工件WD-2的图像处理方法研究

2022-01-28丁建军朱勇杰马俊智

计算机应用与软件 2022年1期
关键词:直方图高斯灰度

丁建军 苏 通 朱勇杰 马俊智 孙 超

(江汉大学物理与信息工程学院 湖北 武汉 430056)

0 引 言

图像处理技术发展至今,形成了多种方法,使人们可以根据实际需求选择。野外失火时需要检测火焰发生地点,用到基于火焰颜色像素值的通道检测法,这种方法由于涉及到多种阈值的设定而效率较低[1];进行路面裂纹检测时用到的方向可调滤波方法,是一种方向可选的卷积算法,本质上则是2D高斯滤波,这种方法会造成一定程度的边缘模糊[2];常见的是自动化生产中机械手对工件的识别抓取,获取的图像常用中值滤波进行处理,当工件边缘细节不明显时也能较好地去除噪声,然而在处理细节较多的工件时表现不甚理想[3-5]。

Akar等[6]用Matlab软件对图像滤波方法进行了比较分析。各种方法的优缺点在一种五金工件的图像处理过程中也有提及,遗憾的是,文章中选择的方法是常用方法——中值滤波[4]。根据以上比较分析,考虑一种方法可以在图像处理时模糊其他不重要的区域,强化边缘和细节部分。

得益于计算机软件技术的快速发展,图像处理可以通过很多程序实现,其中Halcon软件拥有很多功能强大的算子,通过组合使用能够达到我们的目的[7-9]。早前,Kamei等[10]在滤波设计理论方面就提供了帮助,现在本文结合该理论和Thi等[11]的机器学习思维模式,对高斯滤波进行优化,将其加入一个新规则后,设置合理阈值和步长进行测试。最后结合现在的图像处理技术进行特征提取[5,12-13],实现目标。

1 Halcon图像滤波方法

1.1 常用滤波方法比较

Halcon中包含的的滤波方法很多,通过比较常用的三种滤波方法找到基本思路和改进点。表1中列出了这三种滤波方法的原理和特点。

表1 三种滤波方法比较分析

三种滤波方法的公式化描述依次如式(1)-式(3)所示。

(1)

g(x,y)=med{f(x+k,y+l),(k,l∈W)}

(2)

(3)

式中:g(x,y)和f(x,y)分别代表坐标(x,y)位置经过处理后和处理前的图像像素值;m代表邻域窗口点的数量;med代表取中值;W是邻域窗口大小,通常是3×3或5×5;(x+k,y+l)代表该邻域窗口里不同位置点的坐标值;σ是邻域窗口里像素值的标准差。

不采用均值滤波和中值滤波是因为汽车连杆工件WD-2的细节部分比较多,这两种方法在去噪的同时容易破坏细节,使特征识别趋于困难。

权重因子的加入使高斯滤波在处理图像细节方面更具有合理性,离目标像素越近的点对最终结果的贡献越大,然而图像的整体出现模糊现象,不能有效突出工件边缘轮廓,所以特征识别就仍然有改善的空间。

1.2 改进方法设计

从上面三种常用滤波方法可以看出,滤波的思路是用模板中特定的像素值来替换模板中心点的像素值。而高斯滤波表现相对较好是因为加入了权重因子,从这个思想出发,研究一下高斯滤波权重的分布,其公式化描述如下:

(4)

(5)

式中:c是基于原像素点空间距离的权重函数;kd是用来将结果进行单位化的功能函数。

高斯滤波中加入的是与空间距离相关的权重因子,如果对某一图像的全局采用这种加权计算,必然会引起全图的模糊。思考的方向是,在汽车连杆工件WD-2的边缘处强化某一种滤波处理,而在其他背景里弱化这种处理。于是新的权重分布加入进来以便解决这个问题,这个权重分布比较可靠的是像素间相似度,因为工件边缘与背景的像素值差别通常很大,意味着可以将边缘有效强化,新规则加入后的公式化描述如下:

(6)

(7)

式中:s是基于原像素点相似程度的权重函数;k为将结果进行单位化的功能函数。

加入这个权重后,像素值相差大的地方(汽车连杆工件WD-2边缘部分)会被直接分辨出来,从而使工件轮廓变得清晰;图像中的其他区域因为像素间相似度很高,新权重因子的值接近1,则相当于进行高斯滤波。然而由于权重因子的增加,算法的效率会有所降低,实验中利用图像的一些特性设置不同阈值,将函数分解,来实现方法的加速。

灰度最大化处理方法选用直方图法,由于将图像中相同灰度值的点放在一个直方图中,所以计算代价较小,利用了这种方法在灰度最大化处理中的高效率性。

最后的特征提取选用Halcon中的累计直方图方法,这个方法的好处是确定一个阈值后,采用机器学习思维模式,设置一个合理步长,不断尝试后能得到较理想的另一阈值,同一环境下的后续实验均可以设置为相同的阈值。

2 实验过程与分析

本文研究路线如图1所示。

图1 研究路线

2.1 图像采集

本文利用已有的机器视觉检测系统获取工件图像,检测系统如图2所示。

图2 机器视觉检测系统

图2中各设备参数及工作条件如下:计算机的处理器频率为3.40 GHz,双目相机为德国Basler相机,相机分辨率1 280×960,使用镜头视角8 mm,两相机水平距离120 mm,相机竖直放置,距离待测工件平台450 mm。获取图像时的具体环境为:实验室面积30 m2,六盏40 W日光灯正常照明。待测工件所在平台的反光会使相机接收到的光照亮度不均匀,从而产生一些高斯噪声。图像获取方法为:将工件摆放在相机下方平台上,对该工件连续拍摄2幅图片,作为对比实验的原始图像A1、B1,然后将该工件摆放其他位置重复操作,直到获取100幅原始图像。图像的前期处理为:将图像像素统一设置成800×600,按位置信息分成两组,依次为A1、A2、A3、…、A50,B1、B2、B3、…、B50。选择原始图像A1作为对比实验的处理对象进行说明,原始图像如图3所示。

图3 待测工件原始图像

2.2 高斯滤波实验

先用高斯滤波方法来对图像进行处理,试图消除噪声,主要的程序为:

gauss_filter(Image,ImageGauss,5)

算子中最后一个值设置的是滤波器大小,值越大,则分配权重越均匀,图形越平滑,但同样意味着图像会更模糊,增益大于5时容易导致滤波溢出,输出效果不理想,所以实验中选取Size=5。

将得到的图片ImageGauss进一步做二值化处理,主要的程序为:

equ_histo_image(ImageGauss,ImageEquHisto)

scale_image(ImageEquHisto,ImageScaled,1.0,0)

equ_histo_image将图像灰度直方图均衡化,scale_image中的后两个值Mult和Add根据最佳选取规则确定,实验中通过式(8)和式(9)计算得出。

Mult=255/(Gmax-Gmin)=1.0

(8)

Add=-Mult×Gmin=0

(9)

式中:Gmax和Gmin分别是图像的最大像素值和最小像素值。

最后进行工件轮廓提取,选取工件前半部的圆作为特征,主要的程序如下:

edges_sub_pix(ImageScaled,Edges,‘canny’,1,10,43)

这个算子存在两个阈值,实验中通过灰度直方图中像素值的分布确定低阈值为10后保持不变,对高阈值设置步长为1,从10开始增加,不断尝试得到较理想的高阈值。

最后得到的结果如图4-图8所示。

图4 ImageGauss

图5 ImageScaled

图6 ImageGauss灰度直方图

图7 ImageScaled灰度直方图

图8 特征提取1

2.3 改进方法滤波实验和结果分析

实验步骤与高斯滤波实验相同,开始时调出图像灰度分布,锁定程序应用窗口范围,在滤波程序中用到改进方法,核心程序为:

bilateral_filter (Gj,Gj,ImageBilateral,5,20,[],[])

equ_histo_image(ImageBilateral,ImageEquHisto)

scale_image(ImageEquHisto,ImageScaled1,1.0,0)

edges_sub_pix(ImageScaled1,Edges,‘canny’,1,12,41)

程序说明及相关参数选择情况如下。

bilateral_filter称为双边滤波算子,在原有的高斯滤波中加入了连接图像进行过渡,连接图像一般为原始图像,可以凸显边缘,同时模糊其他区域。第一个参数值代表的是高斯滤波器大小,考虑到平滑度和输出效果,仍然设置成Size1=5。第二个参数值代表的是相似度权重,观察图像灰度值分布,相似度的变动幅度在15到25之间有较好输出效果,以15为起点、步长为0.5逐渐增加相似度权重,在其为20时得到较好的输出图像,因此设置Size2=20。需要说明的是,步长设置根据机器学习的思维,值太小则尝试次数过多,值太大则容易错过最佳值,兼顾效率和结果质量,步长取0.5是合适的。

equ_histo_image将图像灰度直方图均衡化,输出像素值分布较均匀的图像。scale_image对图像做比例运算,其中乘数因子(第一个参数值)和加数因子(第二个参数值)选取规则和高斯滤波相同,该运算实现图像的二值化处理。

edges_sub_pix进行轮廓特征提取,经过程序(未列出)锁定工件前半部的圆,‘canny’使紧接着的参数alpha值越大,边缘细节越少。本文的目的是使细节尽可能多地体现出来,所以alpha应尽量小,然而其值过小会导致图像变黑,实验中选取alpha=1是合适的。低阈值和高阈值的选取规则同高斯滤波实验一样,通过灰度直方图的分布确定低阈值为11,对高阈值设置步长为1,从11开始增加,不断尝试得到较理想的高阈值。这里,理想的图像输出结果是根据显示的轮廓边缘线条判断,高阈值过大会导致边缘线条数量多且杂乱无序,实验中观察到高阈值为41时比较理想,且偏差在3以内对结果的影响可忽略。

最后得到的输出结果如图9-图13所示。

图9 ImageBilateral

图11 ImageBilateral灰度直方图

图10 ImageScaled1

图12 ImageScaled1灰度直方图

图13 特征提取2

能直观感受到图13相对于图8,模糊了其他背景区域,而在边缘部分更加凸出。从滤波后的灰度直方图也能发现,图11相对于图6,相邻灰度的直方图高度变化没有这么平滑,灰度变化的范围也相对缩窄,图11中某些灰度对应的点明显多于相邻区域,这些点处于变化较快的边界上。最后用Imagetest软件做评测,这个软件便于我们从数据上了解图像变化,而不仅限于直观感受。评测结果如图14和图15所示。

图14 ImageGauss解像力

图15 ImageBilateral解像力

从两幅解像力数据图中可以看出,改进方法处理后的图像,解像力的分值发生了突变,选取3个突变峰值,通过对比,这些分值突变对应的点所在位置就是工件的边缘轮廓点。以上结果说明,本文方法在图像特征识别上的表现更好。

同时对之前分组的图像分别进行两种方法处理,A组采用高斯滤波方法,B组采用加入新权重的滤波方法,得到输出图各50幅,利用圆的特征识别程序进行测试,高斯滤波方法有效识别图像48幅,识别率为96%,改进方法有效识别图像50幅,识别率为100%。结果说明,本文方法提升了识别率。

识别率的提升有助于通过计算机将程序连接机械臂,应用于工件的分类抓取,实现生产自动化,这将作为下一步的工作。

3 结 语

本文对WD-2汽车连杆工件的图像进行了分析处理,结合滤波方法的理论,使用Halcon完成了新规则的加入算法实现。通过两组对比实验,加入新规则的方法得到了最想要的结果,即模糊其他不重要的区域,强化边缘和细节部分,验证了本文方法更适用于处理WD-2汽车连杆工件的图像。

猜你喜欢

直方图高斯灰度
基于二值化灰度图像的大豆蛋白液喷雾相对雾化程度的研究
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
数学王子高斯
用直方图控制画面影调
例析频率分布直方图
中考频数分布直方图题型展示
从自卑到自信 瑞恩·高斯林
一种基于灰度分割的调焦评价函数