这周继续读三维重建方面的技术向课件。按照之前的大纲,这次读到前AI时代中,计算机视觉方面的一项技术——Structured Light(结构光)。这项技术作为立体视觉之后提出的一项技术,其理解跨度相对不算大。
简单来说,这是一项用激光等光源投在物体表面、再用相机等设备进行采样的技术,注重还原物体的三维结构。
介绍结构光的论文其实也很多,但作为个人能全部仔细读完以及图文搭配合适的内容,这次我选择了UTAH于2015年的计算机视觉课件。和之前一篇比较长的PPT拆分成上下两篇不同,这次这个课题下的课件本身就有两篇——因此这次粗读的是两篇中的第一篇完整部分;下周则会读第二篇。
由于没有课件文稿,因此PPT部分以翻译为主,打星号的部分是我的个人理解或补充,主要是对课件中一些值得展开介绍的部分补充分析或外部信息。
对应点问题
几何约束——沿着极线查找
基于匹配点的三角测量进行三维重建
*基本上概括了立体视觉部分的基本思路,细节的一些矩阵计算在上次读的部分也介绍了。
*这里面提到了很多演示和链接,文末会附整篇课件的原文。虽然当时的一些设备还相对比较简单,但也反映出了这项方案的最小可运行规模。
使用一个投射器来创造无歧义的对应关系。
通过这些对应关系,应用常规的立体(视觉)。
如果我们仅投射一个点,则匹配结果是唯一的。
...但这样要覆盖一个物体则需要太多图片。
校准相机:通过左右侧摄像机的探测以完全确定点的3D位置。光点扫描跨越整个场景。
(否则无法进行三角测量)。
投射纹样是已知的。
因而深度计算仅依赖于图像上点的位置。
深度计算能简化成查表的过程。
主动对场景做操作:对物体投射光纹样——通过摄像机观测纹样——还原3D几何。
*从概述来看,这部分内容我按逻辑接近程度拆成了4节。
——类型:滑动投射器;激光。
——投射:点;带状;纹样。
假设激光束在2D平面上进行逐点式照明。(即设备只考虑水平距离及旋转,接收设备视为一个线段而不是平面)
O、L和P点定义了一个三角形,并且我们通过三角测量确认了P点的(空间)位置——使用了如图中公式的基础三角函数sine法则。
*3维的情况引入了y轴,接收投影的变成了平面——投影点p位于该平面上。
*根据中心点投射的射线定理(ray theorem)——P点的坐标XZY和xfy成正比,其中xy是投影平面上的点p的坐标,f是中心点O到投影平面的距离(写作f其实就是焦距)。
*对于XZ平面上的角α来说,tanα = Z / (b - X)。
*结合前面两个结论可以分别推导出XYZ和tanα的关系(如图)。
最终可以根据α、b 、f、x、y分别计算出X0、Y0、Z0。
*即根据设备基础的位置角度信息,及投影坐标x、y即可计算点P的坐标。
结构光方案是——在校准过的几何条件下向目标物体投以一个光纹样(射线、平面、栅格、编码的光源、以及其它),并进行三维重建。
*这个案例中激光发射出的是一个“光平面”,它会与物体表面相交投下光带。平面的表达式如图——基于摄像机光学中心为坐标原点。
*图中信息较多,这里实际是要在已知一个投影点(x',y')及当前投影校准几何相关信息的前提下,计算三维空间的深度——也就是Z值。
*对于一个点的情况,参照前一节提到的单点三维投射:X/x' = Z/f' = Y/y' 的结论仍是成立的,因此可以得到X、Y值基于Z的表达式(如图)。
*D = -d。其中d是光平面到摄像机光学原点的距离。因为平面方程中ABC的几何意义是平面的法向量,D可以理解成将平面移到坐标原点的距离。
*将已知的x'、y'、f'、D、A、B带入公式即可得出Z值(如图)。在这种坐标设置下,Z值就是物体上的点相对于摄像机的深度值。
*图中从顶视图展示了各个几何关键点的位置关系。通过校准计算可以得出光平面相对于光学原点的平面参数。
要校准一个固定光平面的系统的距离,一个简单的方法是假设目标物体在一个“转盘”上,其旋转中心是光平面的原点。
校准平面在两点——max和min之间移动,与光平面平行。在最大值处,(摄像机的)图像中最右侧的列会被照亮,在最小值处则是照亮最左侧的值。对于每一列y我们测量其在光学平面的Z值,这就是满足y列被照亮的校准平面的坐标值。
*这部分直接翻译理解上可能有点抽象,其实旋转和距离是两个关切点。结合后面的例图应该更好理解一些。
对每一个旋转位置和光窄口(slit)创建对应的轮廓P(X,Y,Z)。
以离散的间隔旋转物体,并重复这一过程。
以柱面方式集成轮廓信息,以重建3D物体——以3D网格的方式。
*这里列出了这一节讨论的内容的论文出处,有兴趣的可以按需搜索。
使用常规工具以“便宜”的方案进行3D拍摄。
需要:PC、摄像机、棍子、台灯、棋盘板。
使用“弱结构光”方案。
*可以看到,这里的棍子的阴影起到了之前光带的作用。
台灯校准:操作者在桌面放置了一根铅笔,与其垂直。在摄像机中观测铅笔在桌面投下的阴影。光源中心S需要在T和Ts的延长线上。
* ∩ 是相交的符号, Λ 是平面(O, λ)与 Π d的相交直线。
*Π是由S和Λ确定的平面。在确定了“人造光平面”后,问题就转化为了前一节解决的问题。
*这里额外引入了一个平面和一根线,最终用两条相交线确认了平面Π 。推导方式和前一页原理相同。
*从图中可以看出,这种方法误差是0.1%,但也有一些位置信息不能很好的确定——和阴影宽度有关。
*图中虽然是黑白的,但是主要思路是用细棍在车身投影。误差是 0.5% 。
*从图中可以看出扫描小物体需要的设备尺寸及扫描情况。
*图中是2009年的一篇SIG文章,其中介绍了包括结构光在内的一些常见的3D扫描技术。
通过粗读这篇课件,我们了解了结构光方案作为一项“主动”方案在确定性及便捷性上的优点。在本篇的最后停在了光带(或人造阴影条)进行扫描测量的部分,涉及的计算没有超出立体几何的范围。
这个系列两篇文章的下一篇会介绍以“编码纹样”进行结构光扫描的方案(Pattern encoding/decoding),相对会更难理解一些,但确实也是提升结构光方案效率的必经之路。
评论区
共 条评论热门最新