一、相机标定
张正友标定法
二、基准外参计算
通过OpenCV的solvePnp()函数计算出相机到基准坐标系的外参数Rb、tb
Pc = Rb ( Pb - tb )
三、光平面标定
通过两个不同位姿的标定板及在他们上的激光线条,使用最小二乘法计算出光平面的公式。
Ax+By+z+C=0
上面两张图片是两个不同位姿的标定板,下面两张图片是关灯之后分别照射在两张标定板上的激光线条。
首先使用solvePnP计算出两张不同位姿的标定板的外参数R、t
Pc为相机坐标,Pw为标定板上的世界坐标。
Pc = R * ( Pw - t)
通过图片可以得到出激光线条的像素坐标,然后通过相机内参,将像素坐标转换到相机坐标当中,然后通过两张不同标定板的外参,将坐标分别变换到他们所属的标定板上的世界坐标系中去。
这个时候计算出的世界坐标z=0
接下来,要将这两个世界坐标统一到同一个坐标系下。
可以将这两个世界坐标系通过这两个标定板的外参数转换到相机坐标系下,再通过基准外参转换到基准坐标系中。这里z!=0了,这样就可以得到在同一个坐标系下的不平行的两条空间线的点集合了。
接着通过这些点的集合利用最小二乘法,可以计算出光平面的方程。
最小二乘法拟合平面
四、移动装置标定
通过两张不同时期拍摄的标定板图片,来计算出移动装置在基准坐标系下拍摄相邻两张图片移动的距离。
首先分别计算两张标定板图片的外参,然后在标定板上选取一个点,将其坐标转换到基准坐标系下(先使用自身外参转换到相机坐标,再利用基准外参转换到基准坐标系下),坐标相减得到这两个点之间的距离,再除以图片拍摄间隔,就可以得到单位间隔内移动装置在基准坐标系下的移动距离。
五、激光图像中心线提取
使用Steger算法
六、线激光坐标转换、计算深度
通过图片可以得到每条激光条纹的像素坐标,将他们转换到基准坐标系下(先使用内参转换到相机坐标,再使用基准外参转换到基准坐标系下),可以得到基准坐标系下的x、y
然后带入基准坐标系下的光平面方程Ax+By+z+C=0 可以解出z
七、加运动偏移
定义第一张图片偏移为0
则第二张图片要再计算出的基准坐标的基础上加一个运动偏移得到真实的基准坐标
则第三张图片要再计算出的基准坐标的基础上加两个运动偏移得到真实的基准坐标
则第四张图片要再计算出的基准坐标的基础上加三个运动偏移得到真实的基准坐标
… … … … … … … … … …文章来源:https://www.toymoban.com/news/detail-457268.html
这样就得到物体表面点云了。
下面这两张图片是拿手机拍的现场照片
代码上传至GitHub:
https://github.com/ader47/LineLaser3DScan
所用到的图片:
链接:https://pan.baidu.com/s/10KyCeIdVnwdMM1lti2q2Bg?pwd=we75
提取码:we75
文章来源地址https://www.toymoban.com/news/detail-457268.html
到了这里,关于线激光三维重建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!