多视角三维模型纹理映射 03

首先,严格意义来说,本文题目并非符合有关多视角纹理映射的相关内容,而是基于上一篇文章《多视角三维模型纹理映射 02》的留坑继续...
其实,应该叫做 -- 3D扫描仪转台标定 吧。
在开启这部分的工作前,查阅了很多论文、资料等,其中比较有借鉴意义的是《旋转平台点云数据的配准方法》,【作者周朗明,郑顺义,黄荣永,武汉大学】,这篇文章给了自己极大的启发。
设备与准备 先来看一些自己所用到设备及其大体组合结构示意图:
多视角三维模型纹理映射 03
文章图片

自己所使用的基本设备如上图所示:相机支架,深度相机(直接产生点云,内参已知)、旋转平台,待测物体(标定块)。嗯嗯,只有也仅有上述几个设备而已。其中旋转平台和相机的距离应在合理范围内。
在固定好上述设备的位置关系后,接下来就是设计标定算法并验证了。
3D扫描仪转台标定算法设计 首先要明白,标定的目的是什么,预想的标定结果是什么。
标定目的
第一个问题:标定的目的??目的难道不是确定转台和相机的相对位置关系嘛?!是,当然是。更进一步的,因为相机无法直接拍摄转台表面获取相应数据(此处转台为纯黑色,且转台表面没有标记点),因此需要借助标定块来实现相应目的。此时,上图中 [实物 ]可以暂时理解为 [标定块 ]。
此时,又引来另一个问题,选择什么样的标定块。注意,这里的标定块,是【块】,不是标定板,是一个三维的实体标准块。在选择标定块时候,最好该标定块有严格且已知的标准尺寸,形状最好比较简单,且数学意义上比较好描述,如球、圆柱等等。
算了,直接上我选的标定块吧,如图:
多视角三维模型纹理映射 03
文章图片

对,没有错。我选择了台球,台球几乎符合上述所有要求(标准直径,标准数学描述公式、易拟合),而且还比较便宜。此时标定块或许称为标定球更为合适。在实际实施中,我选择了那个纯白色的球球...eee...因为其表面色彩比较单一....
注意:因为相机内参已经知道了,不需要对深度相机进行重复标定,所以也不需要标定板。
至此,基本解决了所有外部依赖条件。
标定的结果
在准备妥当所有的外部硬件条件后,进一步便需要寻求标定结果。
想象一下扫描过程:转台在位置1,相机拍摄该位置下的标定块点云1-1;转台在位置2,相机拍摄该位置下的标定块点云2-2;...如此循环直到完成标定块的360度扫描。
转台旋转一周,拍摄的台球点云如下图:
多视角三维模型纹理映射 03
文章图片

显而易见,“貌似”标准球在围绕一个东西旋转了一周。想想也是如此,不就是转台带着标准球转了一圈嘛。
确实,这里的一个东西就是我们3D转台标定要求解的东西。从论文和上图数据,不难猜测:扫描得到的点云,是在绕某个固定轴--这个东西旋转。至此,基本知道,我要求解的结果应该是个固定轴。
是什么样的固定轴呢?--旋转平台的中心轴---旋转平台的中心轴在相机坐标系下的表示---旋转平台的中心点和旋转平台的平面法向量 在相机坐标系下的表示==>标定结果。
至此,彻底明白了,所谓的标定结果,应该包含两个数据:点坐标和向量。
在上述场景下,如何求解这两个东西?!基本求解过程如下:

  1. 将台球固定在转台表明,控制旋转平台绕固定角度旋转;
  2. 相机拍摄每个固定角度下的台球点云数据;
  3. 为减少误差,步骤1和步骤2数据量个数越多越好;
  4. 拟合每个角度下的台球点云---球数据,并提取球心(提取球半径,与标准台球半径比较,侧面检验标准球拟合算法精度);
  5. 重复步骤4,直至计算出所有拍摄角度下的球心坐标;
  6. 基于步骤5,在三维空间中拟合圆;
  7. 提取三维圆形的圆心和法向量==>标定结果。
为了进一步提高精度,可以重复步骤1--7,取多次测量结果的均值作为最终的标定结果。
测试 将标准球的标定结果应用于标准球,实验结果如下:
多视角三维模型纹理映射 03
文章图片

由上图可见,标定过程基本正确,结果基本可接受。
测试人头数据:
多视角三维模型纹理映射 03
文章图片

本篇文章的记录基本都能够基于PCL实现,所以不再贴源码。
小节 本篇文章结合前面几篇,理论上基本可以搭建一个转台式三维扫描仪,当然,还有很多很多地方需要改进。
【多视角三维模型纹理映射 03】最近一系列文章涵盖了3D标定(本文)、点云非线性全局优化、全局点云融合、三维网格模型纹理映射等几个方面的基本要点及基础理论。虽然目前都已实现,但还有待更进一步的深入挖掘。

    推荐阅读