【问题标题】:3D model reconstruction from a set of 2D image slices using OpenCV?使用 OpenCV 从一组 2D 图像切片重建 3D 模型?
【发布时间】:2015-06-27 22:41:15
【问题描述】:

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

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

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

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

提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

    (非常)高级别的步骤是:

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

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

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

    【讨论】:

    • 如果我确实在 Google 上查找了关于我使用相机尝试 3D 重建的问题,我不会在这里发帖。因为我的问题涉及使用 no camera 重建 3D 模型,确实,查找只会或者,如果不是,几乎所有这些都会产生利用相机重建 3D 模型的结果,而不是基于图像切片。假设我提供了 图像切片没有相机,并要求我重新创建基于 2D slices 的 3D 模型,我将如何解决这个问题?谷歌这次并没有真正帮助我。
    • 所以你的意思是你有例如通过 3D 对象进行 2D 组织切片,并希望通过重新组合每个切片的数据来构建 3D 模型?
    • 是的,先生。您可以想象这就像从医学 MRI 扫描仪中模拟出一个虚拟模型,除了我只得到一组图像切片,它们在一个方向上扫描膝盖骨。所以我必须在不需要相机的情况下在 OpenCV 中进行模拟,因为提供了图像切片。问题是我似乎无法从互联网上获得太多信息,因为我得到的几乎每一个结果都与相机的立体成像有关,这与我的问题无关。所以我想我应该从这里寻求帮助,因为信息有限且稀缺。抱歉回复晚了。
    • 这取决于您要使用模型的目的。你需要一个实体模型还是只需要一个皮肤?一种方法是将您的切片堆栈视为您可用的任何分辨率的一组体素。然后,您可以对每个切片设置阈值,以尝试将骨骼与软组织或至少从背景中分离出感兴趣的组织。然后,您最终会得到一个 3D 空间,其中一些体素已填充,而其他体素则为空。您可以使用en.wikipedia.org/wiki/Marching_cubes 算法为此生成皮肤。如果您的切片分辨率远低于您的 XY 分辨率,也许您可​​以插值
    • 仅供参考 我被告知要根据实体体积重建模型,那么行进立方体算法仍然需要吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多