- 文献综述(或调研报告):
- 传统的基于正弦条纹的三维测量方法
在传统的工业生产中,经常需要测量生产产品的三维信息,例如芯片生产等。而在目前,也有越来越多的新兴领域都不再满足于普通图片或视频中的二维信息,如自动驾驶、虚拟现实、逆向设计等,这些行业本身就是建立于三维信息之上的。因此,如何设计合适的算法获得准确的深度信息非常重要。但是,凭借普通的单相机是无法获得深度信息的。
根据小孔成像原理,在拍照时,相机传感器平面上一点和相机光心连线的直线上的任何一个三维点都会映射在相机传感器的同一点上。因此,通过单相机无法获得图像中的深度信息。基于此,一些学者提出了双目测距法[1-2],通过两相机的传感器平面上一点和相机光心连线的射线相交可确定现实世界中的唯一三维点。但是,对于缺少特征点的物体,该方法难以将两张图片中的同一物体的同一点匹配起来,这为测距增加了难度。因此,许多学者提出了各种基于主动投影结构光的测距方法[3-7],用投影仪取代其中一个相机。在这类方法中,投影图案为物体表面增加了特征点,使测量精度提高至0.1mm[8],并且与其他方法相比速度快,成本低[9]。结构光主要分为空间编码和时间编码两种。时间编码方法通过向被测物体投影多张图片完成对每个像素的编码,如格雷码等[10],每张图片构成编码的一位。空间编码方法可用单张图片编码,例如基于正弦条纹的测量方法[6]可以通过投影图片的相位变化实现编码。本课题主要研究的就是该方法。
基于正弦条纹的三维测量方法包括投拍条纹图-提取相位-相位解包裹-生成三维点云多个步骤。提取相位的传统方法主要有傅里叶变换法和相移法[11]。傅里叶变换法只需一张条纹图,但是鲁棒性较低。相移法鲁棒性较高,但是需要投影拍摄多张有相位差的条纹图,所以难以应用于动态物体[9]。提取得到的相位会被包裹在至之间,因此需要应用解包裹算法对包裹相位加减k个以还原真实相位。相位解包裹有多种方法,例如枝切法[12]、洪水法[13]、拉普拉斯算子法[14]等。但是这些方法都有共同的缺点,所以如果被测物体表面的实际相位差大于,将无法还原真实的相位[15],因为k会产生歧义。解包裹后得到的深度图结合标定数据即可生成三维点云。
从上述过程来看,传统的三维测量方法步骤繁多、计算复杂。因此,本课题希望借助近年来广泛使用的深度学习方法从单张条纹图直接得到深度图。训练过程中所需的大量条纹图-深度图样本对将由三维建模软件渲染生成,这样不仅生成的数据量大,并且精确度高。
-
条纹投影测量系统的仿真
- 三维建模软件
目前使用较多的三维建模软件有3DS MAX、MAYA、Blender等。其中3DS MAX是可用于游戏和设计可视化的三维建模、动画和渲染软件[16],MAYA可用于三维动画制作、建模、仿真和渲染[17]。上述两个软件功能强大,但是不能批量化渲染图片。而Blender是以Python为内建脚本的开源三维建模软件。并且,也有其他学者在其他研究中选择使用Blender模拟相机和投影仪环境。例如,Petros等人[18]就使用了Blender模拟投影系统来实现标定。并且,Blender可以将图片保存为Open_EXR格式,在仿真条纹投射系统时,这种格式可以完全保留准确的原始深度信息,不会将它们压缩到0-255.
-
- 三维模型数据集及其应用
近年来,三维视觉领域的学者们发布了许多三维模型数据集。例如,Wu等人发布的ModelNet[19]包含662类别中的127915个3D模型;Zhou等人发布的Thingi10K[20]包含10000个3D打印模型;Koch等人[21]发布的ABC-Dataset收集了100万个用于研究几何深度学习方法和应用的计算机辅助设计(CAD)模型。每个模型都是明确参数化的曲线和曲面的集合,为几何特征检测、形状重建等研究提供了依据。同时,三维模型数据集也在不断的发展和完善之中。2015年,Chang等人发布的ShapeNet[22]中包含4000多个类别中的300多万个含有详细注解的模型。2018年,Park等人[23]在ShapeNet的基础上进一步建立了大型极真实材质的三维模型数据库PhotoShape。他们首先用Blender随机生成了大量材质纹理训练样本,训练出了自动为物体各部分生成不同材质纹理的CNN,然后将ShapeNet中的三维模型和来自Herman Miller网站以及Google和Bing的大量实物图片做匹配,并且将所有模型-图片对输入网络,网络的输出结果为物体的各个部分都添加了非常真实的材质纹理。2019年,Mo等人[24]又进一步优化了ShapeNet,他们在ShapeNet的基础上生成了包含24个类别中的26671个三维模型数据集PartNet。PartNet中的模型的细粒度更高,并且拥有多层级的部位注解。
对于大部分研究,三维模型数据集为它们提供了评估算法的基准。例如,Kanezaki等人[25]提出了RotationNet,输入一个物体的多视角图片,就可以将其分类并估计出它的姿态。RotationNet在ModelNet上取得了最高98.46%的分类准确率。Gomez-Donoso等人[26]提出了计算成本低、精度高的用于点云分类的深度学习架构LonchaNet,并在ModelNet10上获得了94.37%的准确率。
不过,这些不断优化的三维数据集也为仿真提供了基础,使得越来越多深度学习方向的学者可以利用这些三维模型和三维建模软件生成能与现实中拍摄的图片相媲美的训练样本。以ShapeNet为例,Su等人[27] 将ShapeNet中的三维模型做适当的变形后导入三维建模软件,并设置特定的相机和光源参数,生成了大量具有标注视点的“伪照片”。并用它们训练出了根据图片做视点估计的卷积神经网络。Li等人[28] 提出了在实时三维扫描的过程中,当遇到遮挡而无法完整重建物体时,检索ShapeNet中的相关物体模型,并将模型对齐、缩放,以填补缺失部分。这证明了ShapeNet的类别的多样性和每类物体的丰富性,说明ShapeNet可以很好地应用于重建日常物体。并且,利用三维模型数据集和三维建模软件,还可以轻易地准确地生成一些用传统方法较难生成的样本。例如,Soltani等人[29] 对ShapeNet中的模型从多个视角渲染出了深度图和轮廓图,用这些图片作为样本训练出了从深度图和轮廓图到三维模型的网络。并用ModelNet作为基准评估了网络。从“文献综述”的第1部分可知,用传统的方法生成深度图是比较麻烦的,而且也会存在一定的误差。但是在仿真时,因为模型和相机的参数都是已知的,所以很容易生成深度图。
- 将深度学习方法应用于条纹分析的现状
相比于“文献综述”第1部分中所提到的传统方法,深卷积神经网络具有较强的特征表示能力和较强的学习能力,也具有一定的抗噪声性能。因此,已经有很多学者采用深度学习的方法分析条纹图案。
首先,去除噪声条纹分析过程的第一步,也是深度学习方法在条纹分析领域最常见的应用之一。因为噪声对于从条纹解相位的过程影响很大。虽然有很多去噪的传统方法,但是它们计算量大,所以比较耗时。而且还需要调节各种参数,鲁棒性较差。Yan等人[30]通过仿真生成了80000对含噪声-去噪声条纹图样本对用于训练。他们设计了一种包含20个卷积层的深度卷积神经网络(DCNN)结构,每个卷积层后接非线性层ReLU,并且网络中没有全连接层和池化层。最终,他们训练出了网络仅需2.1407s就可以对一张图片去噪,并且用真实图片测试网络得到的结果与传统方法相比更加准确和鲁棒。同样使用仿真生成的数据集,Hao等人[31]也提出了卷积神经网络FFDNet用于条纹去噪,这种网络包含预处理(图片下采样)-非线性映射(卷积、ReLU、BN等)-后处理(图片上采样)三个部分。值得注意的是,FFDNet可以快速地一次性对多张图片去噪,测试结果表明它可以在8秒内对50张图片去噪,并且对于仿真和实验图片的去噪效果都比传统方法更好。此外,Lin等人[32]提出的FPD-CNN模型也用于提取条纹图中的噪声,将噪声再与原条纹图相减得到去噪的条纹图。以上的这些去噪模型相比于传统方法都表现出了明显的优势,不过令人感到可惜的是,他们在评估网络性能时都只是与传统方法相比较,所以具体来讲这些基于深度学习的方法之间孰优孰劣还无从得知。
