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

3

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

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

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

请注意,相机不需要,因为我已经有了一组图像,并且我只限于使用OpenCV。

提前感谢!

1个回答

5
这方面权威书籍之一是Zisserman
(非常)高层次的步骤如下:
  1. 对于每个图像,识别一组特征(例如SIFT、ORB、SURF或类似的)
  2. 对于一对图像,在1中找到特征之间的对应关系
  3. 使用这些对应关系,计算描述两个图像之间关系的基础矩阵F
  4. 从F(最好还有一些内部相机参数),计算第二个图像相对于第一个图像的相对相机姿态
  5. 使用F,校正图像对,使得对应点位于同一扫描线上
  6. 使用两个图像计算密集视差图,然后将其转换为图像中每个像素的深度图
  7. 给定相机姿态和每个像素的深度,将空间中的3D点反投影回来
  8. 使用一些技术(如捆绑调整)来优化在所有计算点和图像之间推导出的3D坐标和相机姿态的值

OpenCV calib3d库包含许多有用的函数用于此过程,谷歌可以提供更多详细信息。

另请参见:

带有立体3D重建的OpenCV, 使用提供的图像和示例进行OpenCV 3D重建


如果我在谷歌上搜索关于使用相机尝试3D重建的问题,我就不会在这里发帖了。因为我的问题涉及到无需相机重新创建3D模型,而且事实上,查找结果只有或者几乎所有都利用相机重建3D模型,而不是基于图像切片。假设我提供了图像切片和没有相机,并要求根据2D切片重新创建3D模型,我该如何解决?这次谷歌并没有真正帮助我。 - navy_marble
是的先生。您可以想象它就像从医学MRI扫描仪中模拟出一个虚拟模型,只不过我只有一组图像切片,可以沿着膝盖向一个方向进行扫描。因此,我必须在OpenCV中模拟它,而无需使用相机,因为提供了图像切片。问题是,我似乎无法从互联网上获取太多信息,因为我得到的几乎每个结果都涉及使用相机的立体成像,这与我的问题无关。因此,我想我应该从这里寻求帮助,因为信息有限且稀缺。抱歉回复晚了。 - navy_marble
这取决于您想要使用模型做什么。您需要一个实体模型还是只需要一个外壳?一种方法是将您的切片堆栈视为具有可用分辨率的一组体素。然后,您可以对每个切片进行阈值处理,以尝试将骨骼与软组织或至少感兴趣的组织与背景分离。然后,您就会得到一个填充了一些体素和其他体素为空的三维空间。您可以使用Marching Cubes算法生成此外壳。如果您的切片分辨率远低于XY分辨率,则可以进行插值。 - Dave Durbin
我被告知需要根据实体体积重构模型,那么对于这个任务,Marching Cube算法是否仍然必要? - navy_marble
我认为我们将以体素模型的形式进行可视化。我被告知使用OpenCV进行模型重建,我听说Viz可能有效,但它需要VTK才能正常工作。 - navy_marble
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接