来源:CSDN
作者:明天的阵雨(已授权)
编辑:3D视觉开发者社区
前言:上篇介绍了标准结构光系统和改进的结构光系统模型,这篇我们来讲结构光系统标定方法,结构光系统标定的方法实际上还挺多的,本篇我们只讨论分析我实现过的比较方便及运用较多的两种方法之一,我给其命名为基于多项式拟合的结构光系统标定。
基于多项式拟合的结构光系统标定
基于多项式拟合的结构光系统标定,是将本需要直接测量的结构光系统中的长度值,隐式地表达在一个多项式中,同时引入经典的摄像机小孔成像模型,结合张正友摄像机标定法,从而获得待标定的相位——深度映射中的相关参数,以恢复被测物体的三维形貌。实际上,研究者对基于多项式拟合的结构光系统标定提出了许多种不同的系统模型和标定方法,这里要讲的结构光系统标定方法是由达飞鹏和盖绍彦提出的,参考文献[1]是原文,[2]后来他们出的书。这个模型和标定方法具有较高的速度和可操作性。我在这尽可能详细地分析他们的模型,以及实际操作计算,但并不需要做到和文章里一样复杂,我们可以用些工具简化中间步骤的计算。
这个系统模型要引入摄像机小孔成像模型,以及张正友标定,在这里就不赘述了,大家有需要可以自行搜索相关文献查看。
一、系统模型
该方法主要建立摄像机坐标系和被测物体上某点的相位、相位和世界坐标系之间的关系。该系统模型区别于标准结构光系统模型,对摄像机和投影仪的摆放位置没有严格的要求。和
分别表示世界坐标系和摄像机坐标系,
组成摄像机成像面坐标系,
为投影中心,
被测物体上一点。其中世界坐标系
是根据投影仪的位置建立的,参考平面
平行于投影平面,
平行于正弦条纹的条纹方向,
轴过投影中心。在该模型中,通过旋转矩阵
和平移矩阵
述世界坐标系
摄像机坐标系
之间的转换关系,通过小孔成像模型描述成像平面和摄像机坐标系之间的关系,如:点
在世界坐标系中坐标为
,在摄像机坐标系中坐标为
,在成像平面上的坐标为
,
那么
以上是几个坐标系之间的转换关系,接下来是通过几何关系,找出相位和世界坐标系之间的关系。
为点
在参考平面
上的投影,
与
平面交于点
,
、
分别为
、点
在
轴上的投影。易知,
,则
,有
同时,,则
,有
联立以上两式,可得
上式中,,
和
分别为点
在世界坐标系中坐标
和
;由于
为点
在
轴上的投影,且
轴平行于正弦条纹的条纹方向,所以
和
的相位相等,也等于点
的相位(摄像机拍到物体A点的相位,实际等于参考平面上B点的相位),因此
上式中,为光栅的周期,
为原点
处的相位。将式(2-53)代入式(2-52)中,可得到相位和点在世界坐标系的坐标
之间的关系,
结合上面世界坐标系和摄像机坐标系的转换关系,可得相位和点
在摄像机坐标系的坐标
间的关系
式中:
得到以上关系后,可以看出,系统标定过程就是在求八个参数的过程。
二、结构光系统标定步骤
从上面推导的式子里可以看出来,要求八个参数,也就是解一组八元一次方程,需要得到至少8组相位和在摄像机坐标系的坐标的数据才能解出这个方程。可见有两类数据要获取,一个是相位,一个是三维坐标,我是通过下面的方式获得的:
1.获取相位,我会用PMP方法获取相位,用Multi-frequency相位解包裹获得连续相位图;
2.一系列在摄像机坐标系的坐标,我会通过检测图像中的棋盘角点,经过张正友相机标定,利用标定的外参,计算这些角点在摄像机坐标系中的三维坐标。
以上用到的方法,相信大家都已经熟悉,就不在多讲了。
下面我就列出标定的各个步骤:
步骤一,将棋盘摆放在被测范围内的任意位置,用摄像机拍摄棋盘,检测棋盘角点(OpenCV或者MATLAB都有对应的函数),记录各角点在成像平面中坐标。
步骤二,保持棋盘不动,利用投影仪,将正弦条纹图样投影在棋盘上,获取此时的相位图,记录各角点位置的相位。文章中用的是标定板,因为标定板还挺贵的,所以我就直接用棋盘了。
步骤三,多次调整棋盘的摆放位置,重复步骤一和步骤二,获得多组角点坐标和对应的相位
,为更精确标定摄像机,我建议获取9张或以上棋盘图像。
步骤四,通过张正友摄像机标定方法标定摄像机,获得摄像机内参,及各幅棋盘图像对应的外参
,根据外参可以计算出各幅棋盘图像中的角点对应在摄像机坐标系下的坐标
。
步骤五,利用步骤三得到的棋盘角点位置的相位和步骤四得到的棋盘角点在摄像机坐标系下的坐标
,就构造多项式
把所有数据写成矩阵形式
就能通过最小二乘法求出八个参数。
三、从相位到三维坐标
完成系统标定后即可得到八个参数当实际测量时,摄像机获取的图像上任意一点
以及该点对应的相位
,还有摄像机的内参,可以慢慢构造下面的矩阵。
所以最后的三维坐标和任意一点
以及该点对应的相位
的关系就是下面这个式子了。
四、实验中间步骤及结果
最后稍微放一点标定过程中的一些中间步骤图片,和最后的标定结果。但由于大家的系统不同,所以最后的数据也不会不同,仅在此提供一个参考。
PMP所用的条纹:我用MATLAB生成4个频率、纵向的三步相移条纹图样,尺寸为720×500像素,频率分别是1/400、1/80、1/20、1/6
棋盘的角点检测结果(用的是OpenCV的角点检测函数)
标定的相机内参,标定后的八个参数
。
重建结果可以用直接用深度图来显示,不过应该要阈值化后才能正常显示,图(a),我还用PCL库做了3D点云可视化,图(b)。
参考文献:
[1] 盖绍彦, 达飞鹏. 一种新的相位法三维轮廓测量系统模型及其标定方法研究[J]. 自动化学报, 2007, 33(9): 902-910.
[2] 达飞鹏, 盖绍彦. 光栅投影三维精密测量[M]. 北京: 科学出版社, 2011.
[3] 刘顺涛, 骆华芬, 陈雪梅, 等. 结构光测量系统的标定方法综述[J]. 激光技术, 2015, 39(2): 252-258.
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
下载2
在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。
下载3
在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~