1. 三维重建的定义
三维重建是指根据单视图或者多视图的图形重建三维信息的过程.
- 用相机拍摄真实世界的物体、场景, 并通过计算机视觉技术进行处理, 从而得到物体的三维模型
3D Reconstruction
2. 相关背景介绍
2.1 三维表示
2.1.1 点云 (Point Cloud)
- 某个坐标系下的点的数据集. 其中点包含了丰富的信息, 包括三维坐标
、颜色、强度值等等
- 通过高精度的点云数据可以还原现实世界
2.1.2 体素
一系列小方块
2.1.3 网格
由三角形、多边形等组成
2.2 相机几何与标定
2.2.1 相机模型中的坐标系
相机模型中存在个坐标系: 世界坐标系、相机坐标系、图像物理坐标系和图像像素坐标系
- 世界坐标系
: 客观三维世界的绝对坐标系, 即物体在真实世界中的坐标. 单位是长度单位
- 相机坐标系
: 以相机的光心为坐标原点, 以平行于图像的
和
方向为
轴和
轴,
轴和光轴平行. 单位是长度单位
- 图像物理坐标系
: 以主光轴和图像的交点为坐标原点. 单位是长度单位
- 图像像素坐标系
: 以图像的上/下/左/右顶点为坐标原点,
和
方向平行于
和
方向. 单位是像素 (图像物理坐标系和像素坐标系仅通过平移可重合)
2.2.2 四种坐标系之间的转换
1、世界坐标系 相机坐标系
因为世界坐标系和相机坐标系都是三维坐标系, 此时用欧式变换进行坐标系转换
2、相机坐标系 图像物理坐标系
3、相机坐标系 图像像素坐标系
其中, 表示一个像素的宽度
2.2.3 相机内参
相机成像原理: 世界坐标系 相机坐标系
图像物理坐标系
图像像素坐标系, 该过程即为相机成像原理.
- 相机内参由相机本身决定
- 相机外参由视角决定
2.2.4 相机标定
获取相机内参和外参的方法就是相机标定
2.3 实验分析
2.3.1 实验介绍
本次实验属于点云拼接, 一种简单的重建结果的融合
- RGB-D深度图: D通道的每个像素值表示物体到相机
平面的距离, 单位为
. 由深度摄像头获取
2.3.2 思路分析
- 读取相机内参
和相机外参
(根据下图进行计算)
- 读取对应的深度图和RGB图 (注意: opencv读取RGB图的结果是BGR格式)
- 对深度图进行处理, 除以实际尺度depth_scale = 1000
- 遍历所有的像素, 利用公式计算对应的3D点的位置. 在相机有外参的情况下可进行优化计算:
- 先默认把相机放在世界坐标系的原点处. 转换成如下公式:
- 便可以得到每个像素
和对应的3D点坐标
, 再利用相机外参数
与
相乘即可转换到实际位置
- 先默认把相机放在世界坐标系的原点处. 转换成如下公式:
- 重复上述
步, 将每一张图获得的点云累加
- 对重建的点云进行可视化
- 直接拼接累加的点云可能存在噪声, 需对最终的点云进行点云滤波 (如统计滤波、半径滤波、体素滤波等)
3. Code
GAMES-Computer Graphic: GAMES and NUDT: Computer Graphics (gitee.com)