基于OpenCV的工件亚像素内径测量研究
摘要
本文提出了一种基于OpenCV的非接触测量方法,实现了工件的亚像素内径测量。 设计并实施内径可视测量系统测量工件的过程。 在图像中,噪声和目标的灰度非常接近,以至于很难被正确的阈值分开。 对于处理这个难点,提出了两个步骤中获取两个不同阈值的方法。首先,用较小的阈值去除背景中的噪声; 第二步,使用更大的阈值使二值化图像接近目标的实际轮廓。 系统处理图像进行二值化,对所需区域进行截取,轮廓提取等过程,最终实现工件的高精度内径测量。 在视野中不同位置重复测量工件多次,实验结果表明该方法的一致性优于HALCON机器视觉软件。
关键字:计算机视觉;轮廓检测;子像素测量;
一、介绍
计算机视觉在工业检测,电子包装,空间科学等领域中起着非常重要的作用。机器视觉检测技术具有非接触,速度快,精度高,现场抗干扰能力强,成本相对低,维护方便等优点。它在各种精密零件的实时尺寸检测中有广泛的应用。图像的获取和显示都是以像素为单位进行的。每个像素都有一定的尺寸,决定了图像测量的精度大小。在实际测量中,可以进一步划分像素以提高尺寸检测的精度。这就是所谓的子像素大小检测技术。随着检测精度的提高,亚像素尺寸检测已成为决定最终测量技术的关键因素。
OpenCV(开源计算机视觉库)实现了各种用于图像解释的工具。它与英特尔reg;图像处理库(IPL)兼容,可对数字图像实施低级操作。尽管进行二值化,过滤,图像统计,金字塔等处理的原始数据,OpenCV同时主要是一个高级库,实现校准技术(相机校准),特征检测(特征)和跟踪(光流),形状分析(几何,轮廓处理),运动分析(运动模板,估计器),3D重建(视图变形),对象分割和识别(直方图,嵌入式隐马尔可夫模型,特征对象)。
现在制造商要求在生产过程中测量工件的内径,测量精度必须在5mu;m以内。 这个工件的形状不是板材状,而是具有一定高度的块体。 针对此要求,我们专门设计了机器视觉平台,如图1所示。
图1 计算机视觉平台
二、计算机视觉平台
一般来说,测量工件往往需要背光传播,这意味着将光放在工件下方的玻璃板后面,并将CCD放在工件上方。这样,工件的边缘就会变得非常清晰。以下过程中的计算算法将更容易实现。对于生产线上的工件是半制造的,其表面可能是粗糙的,并且在其上有一些油污。背光传播方式不适合这种情况,因为油污会污染玻璃板,粗糙的表面会损坏玻璃板。因此,已经为测量系统选择了前光传播的方法。
对于具有一定高度的工件,由普通镜头拍摄的图像将包含圆孔的内侧,其中孔的边缘将是同心圆。并且对于普通镜头的大小对象距离变化,圆的大小将改变。因此测量系统将非常不稳定以供使用。这将在以下计算算法中造成许多困难。对于适合该情况的远心镜头的不同对象距离,图像高度不会改变。并且测量系统在实际制造情况下将非常稳定。这样,工件就不会碰到光线,从而保证了测量系统的精度。
计算机视觉实验平台选择如下:
相机:由德国Allied Vision Technologies制造的Stingray F-504B相机,分辨率为2452times;2056。
镜头:WWH03-110AT远心镜头,放大系数为0.3。
灯:DH-RN12045-W圆形LED白色光。
由于使用了前光传播,车床工具的制造痕迹非常明显,并成为图像的噪声,如图2所示。
图2 噪音图像
三、噪音删除和子像素测量
A.去除噪音:
从图2中可以看出,靠近孔内边缘的制造痕迹的不规则噪声非常强。噪声的灰度非常接近目标的灰度。因此它会导致以下过程出现问题。在二值化过程中,很难被一个正确的阈值分开。在实验中,可以得出结论:较高的阈值不能消除背景噪声;并且下限阈值无法获得精确的目标边缘,它会使测量结果变小,并同时产生更大的误差。
针对这一难点,提出了一种两步阈值的方法:
首先,用较小的阈值去除背景噪声;第二,使用更大的阈值使二值化图像接近目标的实际轮廓。
- 首先,用较小的阈值去除所有背景噪声,得到内径R1。将R1增加一点,大于实际内径,得到所需要的测量区域(ROI)。将所有像素值设置为255(8位灰度图像),去除大部分背景噪声。
2)其次,使用更大的阈值使二值化图像接近目标的实际轮廓。 并使用正确的算法来获得精确的内径R2。
B.子像素算法
现在流行的子像素算法都是先在像素级获取轮廓,并使用子像素算法来提高精度,从而获得子像素级的轮廓[2-9]。 对于该工件的图像,内孔边缘的灰度逐渐变化,这意味着目标的灰度值和噪声非常接近。 如果在所提到的参考文献中使用目前流行的子像素算法,则会产生很大的错误。
针对处理这一困难,提出了一种先插入原始图像并直接得到子像素级轮廓的方法:
1)首先插入原始图像,分别在X和Y的坐标处增加2倍的分辨率,保留图像的边缘信息,减少测量误差。 在本文中,我们选择基本的线性差值算法来实现这一点。
2)分两步使用两个阈值的方法得到二值化图像。 并使用高斯模糊算法去除背景噪音。
3)使用Canny算子检测边缘,找到轮廓,并获得轮廓的点坐标。
4)计算点的最小环绕圆,并得到工件内径的精确值。
四、实验结果
在镜头视野的不同位置重复测量工件多次,多次拍照得到10幅图像,如图3所示。
图3 不同位置下的图像
对于10幅图像,已经应用我们的方法进行计算了工件的内径。为了测试我们方法的可靠性,我们同时使用HALCON的软件进行比较测试。
MVTec HALCON是机器视觉的综合标准软件,具有全球使用的集成开发环境(HDevelop)。 它可以极大的节省成本并缩短产品上市时间。 HALCON灵活的架构有助于快速开发任何类型的机器视觉应用。
对于10幅图像,HALCON程序是:
1)使用函数blob定位内孔。
2)使用2D Metrolgoy方法提取内圆边。
3)将边缘装入适合的圆圈,获得内径。
运行两个软件,得到比较结果,如表1所示。
图像 |
我们的像素 |
Halcon软件像素 |
1 |
1740.136 |
1736.836 |
2 |
1740.168 |
1736.788 |
3 |
1740.430 |
1736.806 |
4 |
1740.098 |
1736.578 |
5 |
1740.272 |
1736.534 |
6 |
1740.164 |
1736.634 |
7 |
1740.174 |
1736.562 |
8 |
1740.380 |
1736.896 |
9 |
1740.392 |
1736.866 |
10 |
1740.430 |
1736.724 |
maximum |
1740.430 |
1736.896 |
minimum |
1740.136 |
1736.534 |
Maxminus;Min |
0.294 |
0.363 |
表1 数据结果对比
从表1中可以看出,实验结果表明,该新处理方法的一致性优于HALCON机器视觉软件。目标工件直径约为20mm。 我们方法的直径值约为1740像素。 因此一个像素的大小约为0.0115mm =1.5mu;m。 最大值与最小值之差的精度误差为0.294*1.5mu;m=0.440mu;mlt;5mu;m,满足工件加工所需的要求。
五、结论
实验对比表明,两步法进一步提高了测量精度,在一致性方面表现优于HALCON机器视觉软件,在实际制造加工应用中具有一定的意义。
基于Opencv的工件识别与定位实现
摘要
本文介绍了一种工件识别和定位的方法,基于开源计算机的胡矩不变量,本文同时也介绍了Opencv。首先,这些方法图像预处理包括图像灰度化,均值滤波,自适应阈值分割的图像二值化,然后,我们从二进制文件中提取图像轮廓。最后,我们可以通过识别对象工件将提取的轮廓与来自的对象轮廓相匹配胡距不变量的模板图像。 同时,确认工件位置的方法和提出方向。 实验结果表明提出的方法可以识别目标工件和有效地定位。使用的算法很简单并且快速运作。
关键字:认知和位置;胡距不变量;Opencv
- 介绍
工件识别和定位技术在现代生活中起到了重要作用,如机械加工,装配操作和自动化排序等。图像预处理,特征提取和识别算法等应用于实现工件识别和定位。在特征方面提取,有着胡矩不变量的方法,尺度不变特征变换(SIFT)和加速可以使用稳健特征(SURF),所有这些都是于平移,旋转和缩放不变。但是SIFT和SURF非常复杂,需要更多的运行时间。当图像的大小更大时,显然,它不会满足某些应用领域的实时需求,简单几何的工件识别视图处理大尺寸图像的功能,它的效率和使用胡度不变量快速进行整个图像处理所用时间一样。
Opencv 是一个开源的BSD许可库,有着数百种常见的计算机视觉算法,这对学术和商业来说非常方便,用于图像处理,机器视觉等。在本文中,通过功能实现工件识别和定位在Opencv 2.4.9在环境下实现。
- 图像预处理
图像预处理是工件识别的重要组成部分,其处理结果将影响到特征提取。本文采用图像预处理包括图像灰度,均值滤波和图像二值化通过自适应阈值分割,见图1.在Opencv中,色彩从一个颜色空间转换图像通过设置参数将GRB转换为灰色代码为COLOR_RGB2GRAY。函数模糊平滑使用内核作为公式(1)的图像:
图1 图像预处理的过程
函数将自适应阈值应用于根据以下公式将灰度图像转换为二进制图像的图像:
其中T(X,Y)是单独计算的每个像素的阈值。
- 轮廓萃取
轮廓提取的目的是提取可疑工件的外部轮廓,以便我们可以获得他们的胡度不变量。我们可以看到,有一些小区域的连接区域,这是必须要删除的。 因此,在提取出所有的轮廓之后。 二进制图像处理该区域。 计算轮廓的周长和圆周度之后,如果其周长或圆周小于给定的阈值,则移除轮廓。 圆度是一种特征参数,表示区域形状的复杂性,由区域和区域等式(4)的区域计算。区域形状更复杂,圆形e的值越小。
首先,从图2(d)的二值图像中提取轮廓,同时去除周边或复杂形状较小的轮廓,见图3(a)。然后,填充保留的轮廓,如图3(b)所示。 最后,从图3(b)的图像中提取出来。到目前为止,我们得到了可疑工件的外形轮廓,如图3(c)所示。 轮廓提取的过程如图4所示。
在Opencv中,函数findContours使用算法从二进制图像中检索轮廓[7]。有三种轮廓检索模式
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。