赵 彻,徐熙平
(长春理工大学光电工程学院,长春,130022)
本测量系统由平行光源、成像透镜、CCD 相机、图像采集卡和计算机处理系统组成,如图1 所示。
图像处理的主要目的是对待测工件进行轮廓的提取,大幅度的减少数据量,剔除那些被认为不相关的信息,保留图像重要的结构属性。通过边缘检测提取工件轮廓信息是测量工件几何参数的基础。
在实际测量的环境中,尤其在工业生产的条件下,图像信号在传输过程中极易受到一些随机噪声的干扰,严重破坏图像的质量,影响测量的精度。所以我们这里采用中值滤波来消除可能出现的随机噪声。中值滤波本质上是一种统计排序滤波器。对于原图像中某点(i,j),中值滤波以该点为中心的邻域内的所有像素的统计排序中值作为(i,j)点的响应。
本文选用Canny 边缘检测算子来进行图片的轮廓提取。以下是实现过程
用高斯滤波器平滑图像。
这里,利用一个省略系数的高斯函数H(x,y):
其中f(x,y)是图像数据。
对梯度幅值进行非极大值抑制。
仅仅得到全局的梯度并不足以确定边缘。为确定边缘,必须保留局部梯度最大的点,而抑制非极大值,即将非局部极大值点置零以得到细化的边缘。
在每一点上,邻域的中心像素M 与沿着梯度线的两个像素相比。如果M 的梯度值不比沿梯度线的两个相邻像素梯度值大,则令M=0。
用双阈值算法检测和连接边缘。
使用两个阈值T1 和T2(T1 在Visual C++ 6.0 平台上用C++语言实现Canny 算子并对图2 进行轮廓提取,得到图2 所示的处理结果: 图2 Canny 算子提取的芯片边缘轮廓 可见芯片的边缘清晰,完整,完全可以满足后续测量的要求。 由于实验对图像中每一个像素点进行扫描来计算几何参数,一般测量结果只具有像素级的精度。在CCD 摄像机分辨率一定的情况下需要对算法进行优化,实现图像上的特征目标定位在亚像素级别。CCD 器件某一个像素的灰度值输入可表示为: 令差分值最大的点的序号为0,值表示为f0,左右相邻的四个点的序号分别表示-2、-1、1、2,相应的值表示为f-2、f-1、f1、f2,可求出五个像素输出的灰度值如下所示: 可求得: a=0.1429f-2-0.0714f-1-0.1429f0-0.0714f1+0.1429f2 b=-0.2f-2-0.1f1+0.2f2 c=-0.0976f-2+0.3488f-1+0.4976f0+0.3488f1-0.0976f2 经验证由该公式计算得到的亚像素精度的边缘点,精确到0.1 个像素,相当于将CCD 的分辨率提高了10 倍,利用此处理方法可降低测量结果的误差。 具体的测量结果如下表 由表1 可以看出, 测量精度在0.005mm 以内。 表1 实验结果 [1] Y.Hara,etal,AutomatiC Inspection System for Printed Circuit Boards,IEEE [2] M.M.Landman,S.J.Roberton,A flexible industrial system for automated three—dimensional inspection,SPIE,Vol.728,1986,203-209.3 实验结果与分析