c++ - 使用 OpenCV 从一组 2D 图像切片重建 3D 模型?

标签 c++ opencv image-processing 3d-reconstruction

我有几个关于使用 OpenCV 使用一组 2D 图像切片进行 3D 重建的问题:

  • 从一组模型中重新创建 3D 模型的步骤或过程是什么? 二维图像切片?

  • 我将如何开始使用 OpenCV 进行 3D 重建?我听说 OpenCV Viz 可行,但我是新手,所以我不确定。

请注意,不需要相机,因为我得到了一组图像,而且我仅限于 OpenCV。

提前致谢!

最佳答案

这方面最权威的书籍之一是 Zisserman .

(非常)高级的步骤是:

  1. 对于每张图片,确定一组特征(例如 SIFT、ORB、SURF 或类似特征)
  2. 对于一对图像,找到位于 1 中的特征之间的对应关系
  3. 使用这些对应关系,计算描述两个图像之间关系的基本矩阵 F
  4. 根据 F(理想情况下是一些相机内部参数),计算第二张图像中相对于第一张图像的相对相机位姿
  5. 使用 F 校正图像对,使对应点位于相同的扫描线上
  6. 使用两幅图像计算密集视差图,然后将其转换为图像中每个像素的深度图
  7. 给定相机姿势和每个像素的深度,反向投影空间中的 3D 点
  8. 使用束调整等技术优化整个计算点和图像集的 3D 坐标和相机姿势的派生值

OpenCV calib3d库包含许多对此过程有用的函数,Google 是您的 friend ,可以了解有关如何应用它们的更多详细信息。

另见:OpenCV with stereo 3D reconstruction , OpenCV 3D reconstruction using shipped images and examples

关于c++ - 使用 OpenCV 从一组 2D 图像切片重建 3D 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29760876/

相关文章:

python - 当我使用opencv将图像的路径传递给显示功能时出现此错误

python - 在 Python 2.7 (Ubuntu/Windows XP) 上无法识别 Opencv 2.2

opencv - 高斯平滑的方差 (sigma) 影响

image-processing - 将极坐标应用于 UIImage

c++ - wprintf 不打印特殊字符

c++ ofstream指针无法写入磁盘

c++ - 如何制作适用于模板类的非模板全局函数?

python - 如何使用 opencv 从 2D 获取 3D 位置

c++ - 链接按钮和窗口类

image-processing - 图像格式 NV12 存储在内存中