文/潘宇 腾菲 毋静霞
某糖厂生产的糖包传送线末端需要机械手搬运堆垛时,糖包需要快速准确的搬运到指定区域按规律进行堆垛,现今现场操作基本都是手动完成,这样操作不安全、速度慢,工人劳动强度大,所以预设计一套自动抓取搬运机械手来替代工人进行快速准确的工作迫在眉睫,机械手可减少人力,提高生产率。这一机构需要对糖包编织袋平放时平面内的平面大小及位置进行识别,以便于抓手抓取张角宽度及位置的目标控制。本文基于MATLAB 图像处理技术,设计了一种识别编织袋平放时平面大小及位置的处理算法,为机械手传输准确的搬运编织袋时的张角宽度及位置信息。
编织袋平放时平面大小及位置的识别技术是通过图像摄取装置获得RGB 图像,利用RGB 图像的一些特性(形状、纹理、颜色、光谱等)来分割编织袋和传送带背景,得到编织袋的二值图,通过边缘检测识别其四角信息并计算其大小及位置信息。方案由图像采集、图像增强、图像灰度化、图像分割、形态学处理、边缘检测以及角点识别组成。
图像采集是进行图像处理的首要任务,为验证本文所研究的识别算法的普遍适用性,尽量使拍摄环境与工厂的生产环境基本一致。因工厂里传送带的工作环境光线比较暗,所以选了一个阴天光线不是很强的环境进行图像采集。把编织袋放在传送带上,共采集6 幅图像作为样本来研究。经过分析,选择一副图片较清晰、传送带反光较少的图像(如图(a)所示)进行识别研究。
表1:样本6 幅图片的处理结果
因图像是阴天拍摄的,会存在曝光不足或者过曝的现象,这种图像对比度效果较差。为了让图像得到一个满意的结果,可采用图像增强技术。这里通过imadd 函数来实现图像的算术叠加增强运算,可得到一副编织袋和传送带有明显区分的图像(如图(b)所示),之后再进行灰度化处理。
图像阈值分割的原理如下式:
其中数字0、数字1 以及T 均代表图像中的灰度级,设T 为阈值,且T∈[0,1],则可根据式(1)的关系将包含多个灰度级的图片转换为仅含0(黑色)、1(白色)两个差异明显的灰度级的图片,将所有的不利于计算机储存和识别的图像信息简化为利于计算机处理和识别的二进制信息来表达图像的特征。采用im2bw 函数将灰度图像转换成二值图像,发现利用最大类间方差法的分割效果优于局部阈值分割,并采用graythresh 函数选择合适的阈值,得到如图(c)所示的经过二值化阈值分割处理后的图像。
分析图(c)可知,经过二值化阈值分割处理后的图像,还有一些反光、灰尘等影响边缘检测结果的因素。可采用腐蚀运算的方法来消除这些瑕疵,使得传送带背景变成完全的黑色。经过二次腐蚀运算,如图(d)所示,传送带上面的小反光以及编织袋边缘的小毛刺都消除了,两者区分非常明显;但同时也腐蚀出了编织袋下端的小孔洞,所以要对孔洞进行填补,可采用图像的封闭区域填充操作,如图(e)所示为区域填充后的图像。
边缘检测不但可以得到编织袋的轮廓信息,还能减少数据处理所需要的时间。检测边缘原理是逐一搜查一个地方之内灰度的改变,用变动的规律来进行检测边缘。边缘检测采用Canny 梯度算子,可最好的优化对受白噪声的影响。边缘检测如图(f)所示。
为了能准确的让机械手抓取编织袋,需要计算编织袋的边界距离,以及求出编织袋的中心坐标。编织袋的边界距离中的宽度距离决定了机械手张角的宽度,编织袋的中心坐标决定了机械手抓取编织袋的位置。
为了方便图像中像素的扫描,先把边缘检测的图像进行取反,再求四个角点的坐标。采用循环结构来扫描像素点,并且记录黑色像素点行最开始的点和最后结束的点;列最开始的点和列最后结束的点。以此来得到编织袋四个角点的坐标。
首先,采用size 函数求出图像的尺寸。
然后,使用for 循环来扫水平、竖直方向黑色像素点的信息。设置p 为编织袋最左坐标,r 为编织袋最右坐标,s 为编织袋最上坐标,t为编织袋最下坐标,为了确定某区域的分布位置,把水平或竖直投影结合起来用。编程由水平方向投影统计信息找到p 值和r 值,由竖直方向投影统计信息找到s 值和t 值。那么,就大概得到了四个点的坐标:左上角坐标(x,y)=(s, p),左下角坐标(x,y)=(t, p),右上角坐标(x,y)=(s, r),右下角坐标(x,y)=(t, r)。
最后,编织袋的宽度为:B=r-p;长度为:L=t-s。以及用如下方程式求出中心点坐标:
为了验证初步结论的可靠性与可适用性,对采集的样本6 幅图像进行以上的处理。因编织袋的宽度距离决定了机械手张角的宽度,所以仅列出了编织袋平面大小的宽度信息,可得表1处理的结果。为了更直接的计算出编织袋的宽度(mm),根据实际尺寸(英寸)=像素/分辨率,进行了像素与毫米的转换。得知,此摄像头的单个像素尺寸为1.22 毫米。为了与编织袋实际宽度(40 厘米)进行比较,计算宽度误差率。
由表1可知,编织袋宽度识别的误差率都在5%以内,可初步得出识别程序有效,基本可靠。编织袋的位置信息可由上表的“中心点坐标像素值”乘以单个像素值1.22 毫米,就可得到识别的中心点位置到图像边界的距离,间接的得出编织袋的位置信息。
本课题采用MATLAB 软件对编织袋的图像进行识别。首先通过实物模拟采集图像,用加运算进行图像叠加,增强图片的对比度;然后使用最大类间方差法进行分割,转化为二值图像;再通过腐蚀运算对二值化的图像进行去噪处理,通过区域填充对被不该腐蚀掉的地方进行填充;接着开始边缘检测,获得编织袋的边缘轮廓。对编织袋的边缘轮廓取反,使用循环结构扫描图像行像素点和列像素点,得到编织袋四个角点的坐标;再用坐标求出编织袋的大小和中心点坐标。
测试结果初步表明,该算法识别效率高,识别质量准确,能够满足机械手控制的信号需求,使自动化作业快速准确安全。但研究离实际应用还有一定差距,只是通过图像识别解决了人工搬运编织袋的一部分问题,也存在着缺陷,如生产线上编织袋摆放位置若有倾斜,那么此算法的使用效果就会稍有欠缺。