OpenCV-Python实战(27)——基于对极几何的3D场景重建
-
- 0. 前言
- 1. 规划应用程序
- 2. 相机标定
-
- 2.1 针孔相机模型
- 2.2 估计相机内参
- 3. 搭建应用程序
-
- 3.1 主例程函数
- 3.2 实现 SceneReconstruction3D 类
- 4. 从一对图像估计相机运动
-
- 4.1 使用丰富的特征描述符进行点匹配
- 4.2 使用光流进行点匹配
- 4.3 查找相机矩阵
- 4.4 应用图像校正
- 5. 重建场景
- 6. 3D 点云可视化
- 7. 学习运动恢复结构
- 小结
- 系列链接
0. 前言
我们已经学习了如何检测和跟踪网络摄像头视频流中的感兴趣物体,即使物体从不同角度、距离或部分遮挡下被观察也能实现。在本节中,我们将把特征跟踪更进一步,通过研究图像帧之间的相似性,来探索我们能从整个视觉场景中学到什么。 本节的目标是学习如何通过从相机运动中推断场景的几何特征来重建 3D 场景。这种技术有时也称为运动恢复结构。通过从不同角度观察同一场景,我们将能够推断出场景中不同特征在真实世界中的 3D 坐标。这一过程称为三角测量,它使我们能够将场景重建为 3D 点云。 如果我们从不同角度拍摄同一场景的两张照片,我们可以利用特征匹配或光流来估计相机在拍摄两张照片之间经历的平移和旋转运动。为了使其正常工作,我们首先需要对相机进行标定。 完成本应用程序后,将理解根据从不同视点拍摄的多张图像来重建场景或物体的 3D 结构的经典方法,我们将能够将这些方法应用到与从相机图像或视频构建 3D 模型相关的应用中。
1. 规划应用程序
最终的应用程序将从一对图像中提取并可视化运动恢复结构。我们假设这两张图像是使用同一台相机拍摄的,并且我们知道该相机的内部参数。如果这些参数未知,则首先需要在相机标定过程中进行估计。 最终应用程序将包含以下模块和脚本:
- 3D_scene_reconstruction.main:用于启动应用程序的主函数例程
- scene3D.SceneReconstruction




