1. 引言
如今随着科技的发展,越来越多的三维影像产品出现在人们的生活中。一般的三维模型重建方法是利用专用的设备如深度扫描仪等来获取三维数据,或者利用如3DSMAX,CAD以及MAMY等专业软件来构造三维模型。这样的方法大多都有着操作复杂,效率低,周期长,成本高等问题,无法适用于广泛的日常生活中。
而基于智能手机的三维模型重建是利用智能手机对同一物体在不同角度进行拍摄,通过一系列照片对物体进行三维模型重建 [1][2]。这种方法自动化程度高,实用性好,降低了建模成本与条件,适用于任何场景的重建。本文概括介绍了基于智能手机三维重建的各阶段及整体流程。
2. 基于智能手机的三维模型重建方法
2.1. 相机标定
在对目标物拍摄之前,相机标定是必不可少的步骤之一。使用同一个相机对同一个黑白棋盘进行不同角度的拍摄,通过点的三维世界坐标和二维相机平面像素坐标来求解图像平面的单应性矩阵H,从而得到内部参数和外部参数 [3]。
基本原理:
根据旋转矩阵的性质,即
和
,每幅图像可以获得以下两个对内参数矩阵的基本约束:
由于摄像机有5个未知内参数,所以当所摄取得的图像数目大于等于3时,就可以线性唯一求解出K得到内参矩阵。
2.2. 特征点的提取和匹配
特征点的提取和匹配是利用两幅图像中的对应点来求取两个相机的相对关系。对于图像差别较大的情况,推荐使用SIFT特征,因为SIFT对旋转、尺度、透视都有较好的鲁棒性。如果差别不大,可以考虑其他更快速的特征,比如SURF、ORB等。
2.2.1. 基于SIFT算子的特征点的提取
SIFT算法是一种能够在尺度、亮度和视点变化的情况下提取稳定的特征点,并且生成具有良好匹配性特征点的方法 [4]。提取过程分为四步:
1) 尺度空间极值检测
利用高斯核函数对图像进行尺度变换,获得图像在尺度空间下的多尺度序列表示。
其中为高斯核,随着尺度因子的改变,将会生成不同尺度下的图像,称为高斯尺度空间。之后构建DoG (Difference-of-Gaussians)空间,来检测尺度空间的局部极值。
2) 精确定位特征点
将候选特征点带入二次泰勒展开,从而修正特征点的位置达到子像素精度。这些特征点中很多都是不稳定的,需要除掉这些点。因此设定阈值,将小于的点剔除点,这样就增强了匹配的可靠性和稳定性。
3) 确定特征点方向
首先在尺度空间中计算像素梯度:
以每个特征点为中心,采用梯度方向直方图的方法,在8 × 8的领域中对梯度在36个离散方向上进行高斯加权,统计整个领域内的梯度方向。最后将梯度模型的极大值或者多个极大值作为该特征点的主方向或次方向。
4) 生成SIFT特征描述子
SIFT特征描述子是一个包含特征点领域信息的高维向量。它是将特征点领域内像素的0度方向旋转为该领域的主方向,以消除旋转变换的影响,然后在4 × 4的区域内统计8个方向的梯度方向直方图。最后将SIFT特征描述子进行归一化处理,以消除光照变化的影响。
2.2.2. 基于SIFT的特征匹配
SIFT匹配方法是在具体的点的匹配上采用欧式距离算法。对于匹配图像中的特征点,采用最近邻法搜索参考图像中的特征点,在参考图像中找到距离最近的和次近的两个特征点,如果最近距离和次近距离的比值小于设定的阈值,则接受这一对匹配点。在得到初始匹配结果时,会有一些误匹配,因此需要使用对极几何约束的方法来进行约束匹配,最后利用RANSAC模型剔除误匹配点 [4][5]。
2.3. 三维模型重建
2.3.1. 双目重建
对于空间任意一点M,同时用同一内参的摄像机和观测M点,并且确定在的像面上的m点和的像面上的点是空间同一点M的像点,那么M的三维位置是可以确定的,这就是三维立体视觉重建的基本原理如图1所示。
在已知两个相机之间的变换矩阵,还有每一对匹配点的坐标,通过这些已知信息来还原匹配点在空间当中的坐标。根据公式:
整理可得到一个关于空间坐标X的线性方程:
求出X左边矩阵的零空间,再将最后一个元素归一化到1,即可求得X。由于只是两张照片的重建因此重建过程中会丢失许多三维数据信息,因此需要加入更多的图片来进行多目重建。
2.3.2. 多目重建
通过双目重建后,我们可以得到一些特征点的空间坐标。之后加入第三张相片,与第二张相片进行匹配得到特征点,其中部分特征点同样属于相片一与相片二的特征点。这样我们在已知这些特征点的空间坐标和在第三张相片中像素坐标的情况下,通过solve PnP便可得到第三个相机在世界坐标系下的位置,即相机三到相机一的变换矩阵。
在得到相机三的变换矩阵后,通过triangulate Points方法将相三和相二之间的匹配点三角化,得到其空间坐标。同时将新得到的空间点和之前的三维点云融合。对之后的相片反复操作便可完成多目重建。
3. 实验验证及分析
3.1. 数据准备
在进行三维模型重建之前需要对相机进行相机标定,本文使用的是张正友标定法来标定得到手机摄像头的内参矩阵 [6][7]。使用手机对黑白棋盘进行不同角度的拍摄用于相机标定的棋盘格,之后提取内角点进行标定得到标定误差及内参矩阵。
在对目标物进行拍摄时,应360˚全方位拍摄,同时保证每张相片拍摄时的拍摄角度和拍摄距离基本一致,还要注意相邻照片之间的交叠面积和摄像头分辨率。本文对校内孔子雕像如图2所示进行模型重建,拍摄照片为43张。
将所有相片导入,进行特征点的提取与匹配。由于手机拍摄所得相片差别较大,而基于SIFT算法特征点的提取与匹配对旋转、尺度、透视都有较好的鲁棒性。因此本文使用的是SIFT算法,得到一些稀疏的点云,称为稀疏重建,如图3所示。稀疏重建的结果只能看出物体的轮廓,因此在不影像物体的形状和点云质量的情况下需要对点云进行密集处理,称为密集重建。本文密集重建使用的是CMVS算法,得到的密集重建结果如图4所示。经过密集重建后得到的数据模型仍是由点云构成的。因此需要对密集重建结果进行表面纹理贴图处理。
3.2. 三维重建结果
通过上述的数据准备与处理,得到最终的三维模型重建结果如图5所示,将此模型与实物以及三维激光扫描仪得到的扫描结果如图6所示进行对比分析。
3.3. 结果分析
重建结果与实物和三维激光扫描仪扫描结果进行对比,模型形态无较大的几何畸变,雕像上的文字还原清晰,整体还原度较高,达到预计要求。但重建模型中的头部、肩部以及手臂内侧出现部分空缺,分析原因认为,由于雕像高度与拍摄角度的问题,存在一些拍摄死角导致以上部分未能得到足够多的点云数据,影响最终的建模结果。可以通过提高拍摄高度以及改变密集重建方法予以改进。同时该结果只能显示物体的形状和样貌,并不能得到物体的坐标、尺寸等属性信息,因此基于智能手机的三维模型重建技术仍有很大的发展空间。
4. 结语
本文以智能手机拍摄的孔子像相片为数据基础,通过相机标定、特征点的提取与匹配以及最终的模型重建等一系列步骤成功建立了雕像的三维模型,验证了该方法的可行性。该方法操作简便、自动化高、适用范围广,不仅减少了购买专业仪器的高额成本,还大大缩短了建模周期,为快速三维模型重建提供技术支持。基于智能手机的三维模型重建效果好,实用性强,可用于生活购物,现场勘测,文物保护以及工业生产等多个领域。
基金项目
淮海工学院大学生创新创业项目,基于智能手机的三维模型重建方法研究(项目编号:Z201711641107002)。
参考文献
NOTES
*通讯作者