# 3D Reconstruction Pipeline **Repository Path**: levi1006/3d-recon-pipeline ## Basic Information - **Project Name**: 3D Reconstruction Pipeline - **Description**: 基于 OpenCV 和 Ceres 的 SFM 流程实现,技术原理见个人知乎专栏 [王乐Levi​: 计算机视觉与三维重建]。 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: https://www.zhihu.com/people/wangle1006 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-21 - **Last Updated**: 2025-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 3D Reconstruction Pipeline ## 简介 基于OpenCV的增量式SFM流程实现。相关技术原理的文章请参见我的个人主页 [王乐Levi](https://www.zhihu.com/people/wangle1006) 本项目的目的是为了理解SFM流程的关键步骤,在流程上进行了简化处理: - 输入图像为有序图像 - 用前两张图象查特征点匹配,解本质矩阵,三角化建立初始点云 - 引入新的图像与上一张图像进行特征点匹配,并通过已建立的三维点和新图的特征点匹配关系,求解PnP问题,得到R、T,三角化,添加新点 - 所有图像引入完成后,进行全局BA ## 第三方库 本项目整体上基于**OpenCV**实现,全局BA的部分采用**ceres solver**库进行非线性优化。 ## 项目效果展示 ### fountain_dense数据集,共8张照片。 1. 前两张图像特征点匹配 ![](img/fountain/img_matches.png) 2. RANSAC剔除外点,解本质矩阵 ![](img/fountain/img_matches_RANSAC.png) 3. 三角化建立初始点云 ![](img/fountain/0.png) 4. 依次添加新图片,得到BA之前的点云 ![](img/fountain/incremental.gif) ![](img/fountain/yml.png) 5. 全局BA ![](img/fountain/ba.png) 6. BA结果 ![](img/fountain/yml_ba.png) 7. BA前后对比 ![](img/fountain/ba_diff.gif) 8. 采用重投影误差来考量重建精度 - 全局BA前的重投影误差:75.086 - 全局BA后的重投影误差:19.5277 ### SceauxCastle数据集结果: **特征匹配:** ![](img/SceauxCastle/img_matches.png) **RANSAC剔除:** ![](img/SceauxCastle/img_matches_RANSAC.png) **SFM结果:** ![](img/SceauxCastle/result.png) ## Todo List - 引入tracks和连通图概念,支持输入无序图像 - 在每次添加新图后都进行一次BA,避免累计误差 - 稠密点云重建及表面重建 ## 技术原理 本项目中的部分技术原理可以参阅我的个人主页[王乐Levi](https://www.zhihu.com/people/wangle1006)中的专栏[计算机视觉与三维重建](https://www.zhihu.com/column/c_1885415690569238507)。其中一些关键步骤的原理文章链接如下: - **图像特征提取:** [万字长文详解SIFT特征提取](https://zhuanlan.zhihu.com/p/31844794941) [SIFT源码解析(openMVG-2.1)](https://zhuanlan.zhihu.com/p/1887917969973154404) - **特征匹配的几何优化:** [RANSAC---从直线拟合到特征匹配去噪](https://zhuanlan.zhihu.com/p/31839989307) - **相机模型:** [相机模型](https://zhuanlan.zhihu.com/p/1888219549872152926) - **相机标定:** [相机标定](https://zhuanlan.zhihu.com/p/1890739536197293677) [张正友标定法](https://zhuanlan.zhihu.com/p/1894000672879396346) - **三角化、本质矩阵求解:** [三角化、极几何、本质矩阵、基础矩阵、单应矩阵](https://zhuanlan.zhihu.com/p/1892920083539539853) - **PnP问题:** [PnP问题](https://zhuanlan.zhihu.com/p/1893340941760328272) - **欧式结构恢复及全局BA:** [SfM运动恢复结构---欧式结构恢复](https://zhuanlan.zhihu.com/p/1893284861768339878)