线扫相机精度高、速度快、抗干扰能力强,适用于连续性产品的在线检测。针对产品的测量,要获得产品边界的精确坐标,需对检测目标进行图像坐标系u-v到世界坐标系x-y-z的转化,如下图所示:
图 1 相机成像分布示意图
目前相机的标定主要有Tsai标定法和张氏标定法,这两种方法需要拍摄若干角度的标定板图像,然后按照转换矩阵求相机的内参和外参。而线扫相机成像时需要拍摄物有相对运动,高精度的标定板很难保证运动速度与采集速度的统一,标定板图像采集很困难,且大多数的工业检测项目,需要到现场再安装相机,且检测面并不一定是一个平面,根本无法在现场进行标定。
目前对线扫相机的标定,主要有构建标定面法和虚拟靶标方法,均需要通过两个维度的空间坐标来确定标定参数。其实,根据实际项目的检测需求和线扫相机的特点,我们更关心的是一个维度(X方向)的尺寸,不需要对空间点进行求取,基于此可以大大简化标定方法。
本文主要分以下几个部分来阐述:1、需要准备的工具; 2、标定流程及测试数据;3、代码实现
1、 需要准备的工具
标定之前,我们需要准备:菲林片和自己开发的标定软件。其中菲林片就是我们自己定制的标定工具,如下图所示:黑白相间且等距(10mm,工艺误差在0.04mm以内)
这种设计,也是多次改进后的版本,可能有些人会比较疑惑为什么黑白条纹不是完全平行的,而是上下跳跃的。这么设计主要是为了便于现场调整相机的水平度,如下图所示:只有相机的采集点调整在红色线的位置时,才能够完整的拍出黑白相间的条纹,否则会有采集不到的条纹。
调整好后采集效果如下图所示:
2、 标定流程及测试数据
测试数据如下:
1)标尺的各个单位对应的像素数(10mm)
2)中间数据的线性拟合
3)所有数据的非线性拟合
4)实际产品测试
产品类型1 |
产品类型2 |
|||||||
位置 |
左 |
中 |
右 |
方差 |
左 |
中 |
右 |
方差 |
宽度(pixel) |
2229.81 |
2235.4 |
2231.13 |
94.4181 |
96.9068 |
97.0978 |
||
平均分辨率 |
0.07462 |
0.07462 |
0.07462 |
0.07462 |
0.07462 |
0.07462 |
||
标定前(mm) |
166.396 |
166.812 |
166.494 |
0.2175 |
7.046 |
7.231 |
7.246 |
0.1114 |
标定后(mm) |
166.274 |
166.29 |
166.529 |
0.0289 |
7.077 |
7.206 |
7.25 |
0.0367 |
3、 代码实现
整体原理比较简单,核心算法就是最小二乘法的实现,halcon版本代码如下: