基于线性CCD镜片轮廓测量数据的处理
2012-04-11郭彩萍张麟华
郭彩萍,张麟华
(1.太原工业学院电子工程系,山西太原 030008;2.太原工业学院计算机工程系,山西太原 030008)
CCD可以把外界物体的图像信号转换成电信号,即把入射到CCD光敏面上的按空间位置分布的光强信息转换为按时间顺序输出的视频信号,视频信号可在各种显示器上再现原物体的图像[1]。利用线阵CCD可精确检测到镜片的边缘信息,并可将检测结果通过串口上传计算机以进行数据分析、运算与显示。
1 测量原理
被测眼镜片的上端装置平行光源系统,线阵CCD检测器件在镜片下方。光源发出的光经过被测眼镜片照射到线阵CCD上,眼镜片边缘的位置影响了线阵CCD的感光强度,进而影响CCD的输出信号。经信号初步处理后传送到计算机进行分析计算,最后在人机交互界面上显示镜片的轮廓信息。由于线阵CCD只有一行感光元件,要检测出眼镜片的整体轮廓信息需要眼镜片或者CCD动起来,文中采用电机带动眼镜片旋转的方法。
由测量原理可知,为精确获得眼镜片的轮廓位置,必须对CCD输出信号进行定量分析,这就需要对线阵CCD输出信号进行处理并送至上位机上显示测量结果。
2 数据处理
2.1 下位机数据处理
2.1.1 信号放大处理
实验中选用的TCD1208ACCD输出OS电压信号和补偿信号DOS电压信号,将此两路输出信号分别送到差分放大AD8031的正、反输入端进行差动放大,抑制掉共模干扰后的信号即为包含镜片边缘位置信息的电信号[2]。
2.1.2 二值化处理[3]
由于被测镜片边缘遮挡部分光,反映在CCD视频信号所对应的图像谱上,在镜片边界处有明显的电平变化。线阵CCD在工作时,有时会造成某些像元只能感受部分光照,即亮、暗的分界点处恰位于某个像元上,致使输出信号不能严格反映被测边缘的位置,为了将边缘信息提取出来以便进行信息处理,通常采用二值化的处理方法。本文数据的二值化是将放大输出通过逻辑非门电路实现的。
2.2 上位机数据处理
上位机软件开发环境选用了技术成熟、功能丰富的开发软件Visual Basic 6.0。上位机数据处理负责由采集的数据进行图像显示、图像后期处理等功能[4-5]。
2.2.1 图形显示
下位机数据上传至上位机后全部存储到文本文件中,后期的图形显示完全依赖于文本文件中的数据。
1)从文件读取数据。从文本文件中读取数据的流程如下:
(1)开数据文件;
(2)据文件中的文本存放到字符串Lstr中(文本文件中没有换行,所以整个文件的数据称为一个字符串);
(3)用函数 Split(Lstr,“FF”),根据分割字符“FF ”将数据分为若干组,每一组对应CCD一次扫描的结果;
(4)函数 Split(pixData(i),“”),根据分割字符“”,将每一组数据再次划分,此时便可知某次扫描某点的数据为00或为01,为00代表词扫描点为亮,为01代表此扫描点为暗,以此为依据作图,最终便可呈现整个镜片的轮廓。
2)绘制图形。由于下位机扫描时采用了如图1所示的雷达圆周扫描方式,且扫描出的区域不是圆形而是圆环,每一点的亮暗需要做相应的处理后方可显示,故程序中做了针对性的处理。
图1 镜片的扫描方式
图1 中阴影部分为实际扫描区域,空白部分的半径由电机轴与CCD的实际相对位置决定。在实验中,按照1.76 cm(包括哑元)的距离进行摆放。本实验中的数据都是基于这种摆放关系测试得到的。
从图1可以看到,若某点的位序为I,那么实际的位置应该加上空白的1.76 cm方可。由于取得了2 160个有效像素点的一半—1 080个有效像素点 (为了节省运行时间,隔一个像素采集一次数据,故TCD1208共有2 160个有效像素单元,系统实际采集了1 080个像素),所以每两个像素点的间隔为28 μm,所以第I个点实际对应的半径应为 28 μm×I+1.76 cm.实际运算中,1.76 cm 对应着634个像素点。
以上数据只是该点的半径,还需根据该点所在的行数,确定扫描的角度。
实验中电机ULN2003每一步的角度为5.6 250°/64,实验中设计一次ccd扫描电机转动8步,即为45°/64。每行之间相差的弧度值为5.625/64×8/180×pi×I。这样,根据每一点的半径和角度就能计算出该点的横坐标和纵坐标,以便绘图使用。
绘图时,首先对极径数据进行预识别,判断出镜片边缘的位置,之后将各个边缘点按照先后顺序用线段连接得到图形,既节省了基于二维图形的处理工作,又达到了较好的效果。镜片图形如图2所示。
图2 边缘点连接得到的镜片图形
2.2.2 数据的滤波
由于光学系统、测量系统的误差,实验所得的数据会以实际数据为中心上下波动,故在上位机系统设计中加入了软件滤波的功能,选取了加权平均滤波算法。鉴于计算量和滤波效果的平衡,各位的权值根据杨辉三角第十行设置,分别是1,10,45,120,210,252,210,120,45,10,1。实验结果表明滤波后图形的边缘更为平滑,达到预期的效果[6]。
2.2.3 镜片轮廓识别效果对比
采用文中提到的一系列数据处理方法对包含镜片轮廓的数据进行处理,准确低误差的还原了镜片轮廓,如图3所示。
图3 图形对比
3 结论
随着光电器件技术的发展,光源稳定性的提高,电机精度的提高,信号处理技术的发展将有更多更好的选择来完成镜片轮廓的测量,并使其功能更加完善,使之能够更真实的反映轮廓的变化,为加工高质量的镜片提供完整的数据。
[1]王庆有.CCD应用技术[M].天津:天津大学出版社,2006:173-179.
[2]徐造林.线阵CCD与单片机的一种接口[J].自动化与仪表,2001(16):68-70.
[3]张文革,段晨东,董革平.线阵CCD检测技术中二值化方法的研究[J].现代电子技术,2003(17):92-94.
[4]李雁翎.Visual Basic程序设计[M].北京:清华大学出版社,2008:1-2.
[5]詹国华.VB6.0环境下直接利用MSComm控件实现分布式下位机群控制[J].计算机工,2001(7):56-59.
[6]孙培建.基于加权平均插值曲面的图像放大方法研究[D].济南:山东大学,2006.