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