发明内容
本发明的目的是解决目前陶瓷阀芯装配生产线中陶瓷镜片的正反和相对位置或角度随机波动,很难进行自动化装配,且无法自动剔除问题镜片的技术问题。
为实现以上发明目的,本发明提供一种基于机器视觉测量陶瓷镜片正反及角度的方法,包括如下步骤:
(1)图像获取及预处理:通过工业相机获取所述陶瓷镜片的RGB图像,并从所述图像中选取ROI区域,对所述ROI区域的RGB图像进行平滑滤波,然后将所述ROI区域的RGB图像转换成灰度图像;
(2)图像处理及确定所述陶瓷镜片的正面和其清洁度:获取所述灰度图像的总灰度,通过所述陶瓷镜片的正面或反面的灰度阈值判断出所述灰度图像对应的所述陶瓷镜片为正面还是反面,同时通过清洁度阈值判断出该面的清洁度,从而筛选出为正面且清洁的所述陶瓷镜片;
(3)确定所述陶瓷镜片的角度:采用第一阈值对筛选出的所述陶瓷镜片正面的所述灰度图像进行二值化处理,得到第一二值化图像,从所述第一二值化图像中取出两个通孔的轮廓及最外周轮廓,将所述两个通孔轮廓的几何中心进行连线求得所述陶瓷镜片的角度值。
进一步地,所述步骤(2)中还包括:
采用第二阈值对所述陶瓷镜片的所述灰度图像进行二值化处理,得到第二二值化图像,从所述第二二值化图像中统计出轮廓数量,并求出各所述轮廓的面积,若同时满足以下两个条件:
(a)所述轮廓数量为3;
(b)三个所述轮廓中,各轮廓的面积分别对应于所述陶瓷镜片的两个通孔的轮廓及最外周轮廓的面积;
则所述第二二值化图像所表现的面为所述陶瓷镜片的反面;
若不同时满足上述两个条件,则所述第二二值化图像所表现的面为所述陶瓷镜片的正面。
进一步地,所述第二阈值为150。
进一步地,所述第一阈值为60。
与现有技术相比,本发明的有益效果是:
本发明通过获取陶瓷镜片正反面的外观图像,对图像进行分析处理得到检测结果,节约人力;通过灰度图像、二值化图像、关键轮廓数量及面积,多次验证陶瓷镜片正反,增加检测结果的合理与准确性,减少生产中的装配误差;通过生成角度的特征点得到的中心点与直接对陶瓷镜片外轮廓取值得到的中心点进行对比判断,进一步判断生成的角度的正确程度,进一步减少生产中的装配误差。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如图1所示,本发明的基于机器视觉测量陶瓷镜片正反及角度的方法,包括如下步骤:
S100:图像获取及预处理:通过工业相机获取陶瓷镜片的RGB图像,并从图像中选取ROI区域,对ROI区域的RGB图像进行平滑滤波,然后将ROI区域的RGB图像转换成灰度图像;
S200:图像处理及确定陶瓷镜片的正面和其清洁度:获取灰度图像的总灰度,通过陶瓷镜片的正面或反面的灰度阈值判断出灰度图像对应的陶瓷镜片为正面还是反面,同时通过清洁度阈值判断出该面的清洁度,从而筛选出为正面且清洁的陶瓷镜片;
S300:确定陶瓷镜片的角度:采用第一阈值(如,60)对筛选出的陶瓷镜片正面的灰度图像进行二值化处理,得到第一个二值化图像,从第一个二值化图像中取出两个通孔的轮廓3和5及最外周轮廓1及其中心点2(见图6),将两个通孔轮廓的几何中心4和6进行连线求得陶瓷镜片的角度值,求角度的原理如图6所示,即可利用以下公式
xx = abs(center_contour[0].x - center_contour[1].x);
yy = abs(center_contour[0].y - center_contour[1].y);
angle=arctan(yy,xx)*180/π。
其中center_contour[0].x表示第一个通孔内轮廓几何中心4的X坐标,center_contour[1].y表示第二个通孔内轮廓6几何中心的Y坐标,abs()表示求绝对值,arctan(a,b)表示求a,b两个坐标点的反正切,angle为图6中内轮廓几何中心连线7与图像坐标系X轴之间的夹角,其中图像坐标系中为图像坐标,即以摄像机拍摄图片左上角的第一个像素位置为零点,向左为X轴正方向,向下为Y轴正方向。
其中,步骤S200中,还可包括采用第二阈值对陶瓷镜片的灰度图像进行二值化处理,得到第二二值化图像,从第二二值化图像中统计出轮廓数量,并求出各轮廓的面积,若同时满足以下两个条件:
(1)轮廓数量为3;
(2)三个轮廓中,各轮廓的面积分别对应于陶瓷镜片的两个通孔的轮廓及最外周轮廓的面积;
则第二二值化图像所表现的面为陶瓷镜片的反面;
若不同时满足上述两个条件,则第二二值化图像所表现的面为陶瓷镜片的正面。
本发明工作之前,先搭建硬件平台,此处选用70万像素的USB工业相机,镜头选择25mm的定焦镜头,光源选择70度白色环形LED光源,采用垂直照明。开发平台先用树莓派2代b型,用linux操作系统,开发环境为qt框架和opencv开源库。
步骤S100中,为了保证能获取清晰的图像,相机选用全帧曝光的工业用相机;为了使获取图像范围尽可能适宜,采用25mm的镜头同时对获取图像选取ROI感兴趣区域;接着开始拍摄图片,将陶瓷镜片通过气爪及气缸移至拍摄平台后,拍摄平台上方280mm处的相机得到拍摄许可的命令,对图像进行单次拍摄,同时LED光源一直打开,强化镜片特征;对拍摄得到的图像进行中值滤波,减少干扰特征,接着将RGB图像转换成灰度图像,便于后续处理。
步骤S200中,通过遍历整个预处理完毕后的图像一,获取图像一的总灰度,由于陶瓷镜片反面光洁度高于正面,清洁的反面的光照反射强度比清洁的正面高20%,正面的总灰度在一定光照下不超过52000000,而洁净的反面总灰度很轻易就达到58000000,所以可以通过阈值判断出这个镜片是否为洁净的反面,如果不是,则进入下一步处理过程,判断出不洁净的反面。同时,如果总灰度和小于48000000,则认定这个镜片无论正反,洁净程度都不满足要求,额外处理掉;
还可进一步通过关键轮廓再次判断陶瓷镜片的正反面,对于预处理完毕后的图像一,由于寻找轮廓算法在不同的二值图下轮廓会不一样,而灰度图像二值化对于不同的阈值也会转换成不同的灰度图。
所以首先进入再次判断正反阶段,先将图像一转换成二值图,取阈值为150,得到二值图二后,进行取轮廓阶段,正反面分别为如图4和5所示。
从图4和5可判断,正面因为凹槽的存在,所以取轮廓后,轮廓形状比较多元化,而反面则相对来说比较单一,所以通过以下限制条件来进一步判断反面:
(1)反面轮廓数量为三,由于杂质存在的原因,将轮廓面积小于500的轮廓数量不算在轮廓总数量之中。
(2)最大、第二大及第三大面积的轮廓分别对应反面图像中的外轮廓和两个通孔的面积应在一个范围之内。
求得的最大、第二大及第三大面积的轮廓分别对应于陶瓷镜片反面图像中的外轮廓和两个通孔。因此最大、第二大及第三大的面积是在一个基于固定光照条件下的分别的数字范围之内的。并且这个范围由于反面图像的稳定性,所以数值上趋近于这个外轮廓和两个通孔在图像上的实际面积。
如果不同时满足两个上述条件,则判定为正面。当然这种方法仍然存在一定误判率,但是由于正常工作条件下,首先洁净度较高的陶瓷镜片所占比例为95%,同时由于振动盘的存在,90%以上的陶瓷镜片也为正面,所以相对来说,整个误判率就降低到极低的存在,同时在实际验证阶段,通过以上初步和再次判断反面,整个正确率也能有很好的保证。
步骤S300中,判断出反面和洁净度较差的陶瓷镜片后,将其处理掉,剩下的为正面的,即后续装配过程所需的陶瓷镜片。将上述步骤获取到的图像一,进行阈值为60的二值化后,取轮廓,同时找到轮廓面积从160000到180000与15000到16000的轮廓,即最外轮廓与两个通孔轮廓,然后分别找两个通孔轮廓的几何中心4和6,通过两个通孔轮廓的几何中心连线7求角度,就是陶瓷镜片的角度,该角度即为上文出现的angle值,如图6所示。
在二值图像较为适宜的情况下,取轮廓算法所得到的轮廓也十分精准,得到结果的准确性也较高。
从上一步骤得到获取角度的两个特征点,获取两个特征点的中心点,与通过外轮廓获取几何中心的中心点进行比对,如果两个点在一定范围内重合,则判断结果比较正确。具体为,从上一步骤中获取到两个通孔轮廓的几何中心点分别为center_contour[0]和center_contour[1],利用公式
(x,y)=((center_contour[0].x-center_contour[1],x),(center_contour[0].y-center_contour[1].y)),获取以上两点的中心点。
再通过上一步骤获取到的整个外轮廓,得到外轮廓的几何中心点,将(x,y)与外轮廓的几何中心点进行对比,如果两个点在一定范围内重合,则判断结果比较准确。
获取轮廓几何中心点的算法为遍历轮廓中的特征点,分别求所有特征点的x与y坐标的平均值,其获得的两个值即为轮廓的几何中心点。
将所得的陶瓷镜片的角度和正反特征通过MODBUS通讯协议用RS485总线传递至PLC上,控制机械手将反面及干净程度不满足要求的镜片处理至废品区,将得到的陶瓷镜片的正面角度信息传递给PLC,控制机械手旋转对应的角度来对镜片进行抓取,以便后续的装配处理。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。