三轴影像测量仪的开发制造
一、 图像采集卡的选择
仪表板外形尺寸为220mm×82mm,要求测量精度不小于0.13mm。综合检测精度、检测速度和成本要求影像测量仪,系统选用NI 1394图像采集卡,搭配SONY 1394 CCD彩色摄像头(分辨率为1024×768),因此视觉系统视野FOV=118mm×8< @8.5mm,像素精度=118÷1024=0.1152mm/pixel,完全满足系统测量的尺寸精度要求。
二、 扫描区域划分
根据仪表板的大小、目标特征的相关性和视觉系统的FOV范围,仪表板分为左、中、右三个检测区域。除了起始位置,还有4个位置。相机在X/Z轴上移动,被测仪表盘在Y轴上移动,X/Y轴的移动完成镜头对准目标,Z轴的移动完成对焦目标。在每个检测位置采集的图像以中间LED窗口的中心,即AUTO LED、OFF LED和Defrost LED作为图像的坐标原点。
三、 系统总体结构设计
上位机系统完成图像采集、处理、判断、文件I/O和用户界面,同时与上位机通过串口控制PLC;PLC系统完成运动控制和I/O控制。计算机系统框图如下:
上联参数设置:波特率:115200;7 个数据位;偶数;2 个停止位。
PLC的系统框图如下:
通过计算机系统和PLC系统的协同工作,各司其职,发挥各自的优势,使系统的性能得到优化。
四、 图片获取
NI提供了两个标准的图像采集vi程序,用户可以直接调用:
1、单帧图像采集1394-snap-acquire:即每次只采集一帧图像。在本系统的自动测量过程中,需要测量三个区域,每个区域具有三种照明模式,因此总共需要运行9个单帧图像采集程序。
2、连续图像采集1394-grab-acquire:即连续实时采集图像。在本系统的运动位置设置模块中,需要实时观察镜头与被测目标的相对位置和焦距,然后保存各个位置,因此采用连续图像采集方式。
五、 图像处理
如上所述,在自动测量过程中,一共采集了9帧图像,每幅图像对应一个图像处理程序,完成目标特征的测量和判断。进行如下操作:
1.打开图片缓冲区
在图像处理中,图像需要经过多次变换,因此需要打开多个图像缓冲区来存储图像数据。本系统共设置了100个图像缓冲区,分别为image buffer0~buffer99,其中buffer0为系统的实时图像缓冲区;buffer1~buffer51分别存放彩色原图、Intensity层、Red层、Green层、Blue层、Mask层、Overlay层等作为历史图像数据,可与测量结果数据进行对比;其余的是临时图像缓冲区。为了避免与历史图像缓冲区冲突,从buffer99向下使用。本系统只使用了12个临时缓冲区,即buffer99~buffer88,buffer52~buffer87没有使用。
2. 定位原点,建立坐标系
选择图像上没有变化的特征影像测量仪,使用匹配模式或检测对象来定位原点并建立坐标系。对于三个检测区域,中间的 LED 窗口的中心,即 AUTO LED、OFF LED 和除霜 LED,是图像的坐标原点。
3. 定义ROI区域
根据被测目标的不同形状,可以使用不同的ROI模型,包括圆形、环形、扇形、矩形、旋转矩形、任意多边形等。所有的ROI区域都是基于坐标原点的。
4. 测量
通过提取彩色图像(均为8位深度的图像)的强度平面、红色平面、绿色平面和蓝色平面,分别测量强度分量Intensity、颜色分量R/G/B和激光雕刻图案模式目标 ROI 区域。比赛得分、位置坐标等。
光强/R/G/B范围为0~255,共256级灰度。
模式匹配满分为1000分,分数的大小表示目标与标准模型的匹配程度。除了对三组字符进行模式匹配测量外,还要进行OCR字符识别,即需要分别识别AUTO、ECON、OFF。
需要将位置坐标转换为坐标系。对于一幅图像,默认坐标原点位于图像的左上角,测量的直接位置数据是相对于该原点,不同于步骤2.中定义的原点,坐标系方向也不同。参考下图:
变换后的坐标还是以像素为单位,需要乘以像素精度,再换算成mm单位,这样对产品检测才有意义。
5. 结果输出接口
测量结果包括图像和数据,放置在一个 Table 容器中。表的第一页用于存储图像。该图像以二维数组为容器,分为9行5列,存储45幅图像,其中采集的图像9幅,提取的成分层36幅。Table的2~11共10页用于存储测量数据,分别以10张表格的形式输出,对应9幅采集图像的测量数据和重要特征的全局对比。每个Page上都有一个布尔显示控件,用于表示当前页面的综合判断结果。
图 2 中间区域功能 LED 模式图像
以下仅给出中心检查图像和数据,请参考图2至图7
图3 中间区域功能模式测量数据
图 4 中间区域夜间模式图像
图5 中区夜间模式测量数据
图 6 中区 Day 模式测量数据
6、任务序列优化设计
两个相邻的图像采集之间需要完成几个任务,包括图像处理、写入全局变量、图像输出、测量结果输出、光源切换、位置移动等,这些任务的执行时间是不同的。优化这些任务的顺序可以显着提高程序的执行速度。
在拍摄图像之前,所有的运动都需要静止不动,光源要稳定发光。计算机向PLC发送的运动触发信号和光源切换触发信号的指令完成时间在10ms左右,图像
处理、图像输出、测量结果输出、全局变量写入的完成时间在100ms左右。运动是否完成可以通过读取PLC中的标志位来确定,但光源是否稳定发光只能依靠上电后的延时时间。我们的经验是LED光源从通电到稳定发光至少需要500ms的延迟。在测试一个产品时,需要9个光源开关和4个位置移动。如果采用延迟方式,检测速度会大大降低。因此,我们不会在图像采集后立即处理图像,而是先为下一次图像采集做光源切换或运动触发,然后对这次采集的图像进行相对耗时的图像处理,这相当于切换光源或运动触发有延迟处理,但不会占用额外的时间开销。参考以下流程图:
7. 叠加投递
Overlay是叠加在图像上的特殊图层,用于显示ROI定义范围、坐标系定义和部分图像处理信息。在该系统中,在同一位置不同光源下采集的3幅图像具有相同的坐标系和像素精度。不必每次都做同样的处理,只需将第一张图像上的Overlay转移到其他两张即可。图像很好。使用我们写的Overlay传递vi,可以提取任意图像缓冲区的Overlay,传递给指定的图像缓冲区。参考图2、 图4、 图6,
8. ROI和Mask的组合应用
用ROI定义感兴趣的区域,用Mask屏蔽掉不感兴趣或已经测量过的区域,将ROI和Mask结合起来,让一些复杂的测量变得简单高效。在图6中,需要测量产品的外露表面是否有划痕。ROI和Mask结合后,只需两步即可完成。参考图8、 图9。
图 8 中间区域 Day 模式 mask1
图 9 中间区域 Day 模式 mask2
9.全局特征对比
9个图像处理子程序中,部分测量数据需要全局比对,对产品进行评估
整个区域的发光亮度是一致的,所以需要在每个图像处理子程序中将感兴趣的数据写入全局变量中,最后在主程序中处理这些全局变量,请参考图10。
图 10 全局比较参数
六、文件输入/输出
包括公差设置、读数、测量数据存储,数据较多,因此采用表格文件的方式,以二维数组的形式访问数据分类。在图像处理程序中判断测量数据时,只需读取与容差设置相关的子阵列即可。时间字符(精确到秒)被插入到测量数据的文件名中,以避免文件名重复。
七、上行链路和串行通信
在进行上位链路通讯时,计算机和PLC使用命令(command)和响应(response)来发送和接收。在一次通信中发送的一组数据称为帧,发送帧的权利称为发送权。上位机拥有发送权。命令发出后,PLC自动返回响应。由于 PLC 的响应需要时间,因此必须在两个命令之间插入延迟。帧格式如下:
@|机器编号|机头代码|文本|FCS|终端
FCS全称为帧校验序列,将帧开头的8位数据转换成FCS前面的数据为2个字符的ASCII码,主要用于校验数据错误。FCS的计算采用笔者之前在VB中开发的程序,使用LabVIEW中的Instrument I/O助手将命令的传输直接发送到串口,非常简单。仪器 I/O 助手提供三种类型的命令,包括写入、查询和解析、读取和解析。
八、 开放性和可扩展性
该系统是为帕萨特和速腾两款车型的温控仪表盘目视检查而开发的。但在软硬件设计中充分考虑了系统的开放性和可扩展性,只需更换图像处理子程序和子程序即可。设置每个区域的位置,即可以查看任意二维平面上的图像信息。同时可在Z轴上安装接触式探头或非接触式激光测距传感器,完成Z轴方向的尺寸测量。三轴行程X、Y、Z为:200mm×200mm×150mm。
所选PLC上有4个脉冲输出,所选光学镜头可连续变焦。这样可以在Zoom中加入步进电机和传动机构,实现变倍检测,对尺寸精度和图像质量要求高。可以用高倍率测量该区域。
同时,系统还具有4路AD输入和2路DA输出,为更复杂灵活的系统扩展提供了必要的硬件资源。
九、 结论
这个项目的软件预计需要三个月的时间开发,实际不到两个月就完成了。目前机器运行非常稳定高效,得到了客户的一致好评。NI Vision 丰富的图像处理功能和LabVIEW 灵活易用的编程环境是我们成功的主要原因之一。
作者过去使用VB和C++进行程序开发。这是我第二次在项目中使用LabVIEW。相比之下,LabVIEW图形化编程语言让程序员不必过多关注代码和函数格式,而是专注于功能设计和结构设计,从而节省宝贵的开发时间。另外,LabVIEW的帮助功能和大量的示例程序,非常方便程序员学习和提高自己。简而言之,我们认为LabVIEW作为测试测量领域的首选开发平台当之无愧。