基于深度相机的三维重建是一个非常流行、低成本的重建方案。基于Kinect一代是一种低成本的重建方案,图1是Kinect一代结构图。红外发射器发射红外线模板,通过红外CMOS获取反射红外光,采用光编码方式获得深度图。(Kinect二代采用ToF飞行时间法)。
为了能对深度相机的三维重建技术有深入了解,现对算法过程进行详细描述:
- 深度数据获取---去躁;
- 生成点云---计算摄像机坐标系的深度信息,进而变换到全局坐标系,计算法向量;
- 预测3D模型;
- 结合2,3计算当前深度场景和预测模型的位姿---(ICP最小二乘法计算变换矩阵,法向量误差);
- 点云融合(TSDF,晶体网格化)---另一种是三角网格化;
- 可视化(场景渲染,三角网格(Gouraud着色));
- 纹理贴图(RGB图像->点云数据的映射矩阵M)。
深度数据获取:采用双边滤波对深度图进行保边平滑处理,引导滤波也可以。双边滤波因为采用了距离和灰度值相结合获得权值,通过加权平滑处理,即可以去除噪声又可以进行边缘保护。优势在于考虑了像素间的集合距离和彩色距离;
生成点云:根据深度图和红外CMOS内参计算摄像机坐标系下的深度信息构成点云,并变换到全局坐标系下计算深度信息和法向量(用于误差估计);点云计算过程下:
预测3D模型:深度相机会在场景重建时候生成一个预测模型,便于计算相机的移动位姿;
位姿计算:采用ICP(最小迭代估计),通过最优模型计算对应点之间的误差,使得最小。
点云融合:TSDF将构建一个晶体网格,将点云投影到晶体网格模型中。参考链接
场景可视化:用于表示的方式,采用光线跟踪法,参考链接。另外可以通过三角网格后的数据进行Gouraud着色。
纹理贴图:计算RGB图像到三维点云模型的映射关系M,进行对应点着色。
最后实验结果,算法框图如图3所示。