42

如果我用相机拍照,所以我知道相机到物体的距离,比如房子的比例模型,我想把它变成一个我可以操纵的 3D 模型,以便我可以评论房子的不同部分。

如果我坐下来考虑拍摄不止一张照片、标记方向和距离,我应该能够弄清楚如何做到这一点,但是,我想我会问是否有人有一些论文可以帮助解释更多。

你用什么语言解释并不重要,因为我正在寻找最好的方法。

现在我正在考虑展示房子,然后用户可以在高度方面提供一些帮助,例如从相机到模型那部分顶部的距离,并且如果足够多,就可以开始计算高度其余的,特别是如果有自上而下的图像,然后从四个侧面的角度拍摄,以计算相对高度。

然后零件的颜色需要不同,以帮助区分我期望的模型的各个部分。

4

6 回答 6

81

如前所述,这个问题非常困难,通常也称为多视图对象重建。它通常通过解决每对连续图像的立体视图重建问题来解决。

执行立体重建需要拍摄具有大量可见物理点重叠的图像对。您需要找到相应的点,以便您可以使用三角测量来找到这些点的 3D 坐标。

对极几何

立体重建通常是通过首先校准您的相机设置来完成的,这样您就可以使用对极几何理论来校正您的图像。这简化了查找对应点以及最终的三角测量计算。

如果你有:

您可以仅使用矩阵理论计算基本矩阵和基本矩阵,并使用它们来校正您的图像。这需要一些关于具有齐次坐标的坐标投影的理论,以及针孔相机模型相机矩阵的知识。

如果您想要一种不需要相机参数并且适用于未知相机设置的方法,您可能应该研究未校准立体重建的方法。

对应问题

寻找对应点是棘手的部分,需要您寻找具有相同亮度或颜色的点,或者使用纹理图案或其他一些特征来识别成对图像中的相同点。这方面的技术要么通过在每个点周围的小区域中寻找最佳匹配来局部工作,要么通过将图像视为一个整体来全局工作。

如果您已经拥有基本矩阵,它将允许您校正图像,以便将两个图像中的对应点限制为一条线(理论上)。这有助于您使用更快的本地技术。

目前仍然没有解决对应问题的理想技术,但可能的方法可能属于以下类别:

  • 手动选择:让一个人手动选择匹配点。
  • 自定义标记:放置标记或使用您可以轻松识别的特定图案/颜色。
  • 平方差之和:取一个点周围的一个区域,并在另一幅图像中找到最接近的整个匹配区域。
  • 图割:一种基于图论优化的全局优化技术。

对于具体实现,您可以使用Google Scholar搜索当前文献。这是一篇比较各种技术的高引用论文: A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms

多视图重建

一旦你有了对应的点,你就可以使用对极几何理论进行三角测量,以找到点的 3D 坐标。

然后将针对每对连续图像重复整个立体重建(这意味着您需要对图像进行排序,或者至少知道哪些图像具有许多重叠点)。对于每一对,您将计算一个不同的基本矩阵。

当然,由于每个步骤中的噪音或不准确,您可能需要考虑如何以更全局的方式解决问题。例如,如果您有一系列围绕对象拍摄并形成循环的图像,则这提供了额外的约束,可用于使用诸如捆绑调整之类的方法来提高早期步骤的准确性。

如您所见,立体和多视图重建都远未解决问题,仍在积极研究中。您想以自动化方式做的事情越少,问题的定义就越明确,但即使在这些情况下,也需要相当多的理论才能开始。

备择方案

如果它在您想要做的限制范围内,我建议考虑使用专用硬件传感器(例如XBox 的 Kinect),而不是仅使用普通相机。这些传感器使用结构光、飞行时间或其他一些距离成像技术来生成深度图像,它们还可以将其与来自自己相机的颜色数据相结合。它们实际上为您解决了单视图重建问题,并且通常包括用于拼接/组合多个视图的库和工具。

对极几何参考

我对大多数理论的了解实际上很薄,所以我能做的最好的就是进一步为您提供一些希望有用的参考资料(按相关性排序):

我不确定所有这些有多大帮助,但希望它包含足够有用的术语和参考资料,以找到更多资源。

于 2012-06-03T13:13:36.417 回答
16

研究取得了重大进展,现在可以从 2D 图像中获得漂亮的 3D 形状。例如,在我们最近题为“通过使用深度生成网络建模多视图深度图和轮廓来合成 3D 形状”的研究工作中,在解决从 2D 图像获取 3D 形状的问题方面迈出了一大步。在我们的工作中,我们展示了您不仅可以直接从 2D 转到 3D 并获得良好的近似 3D 重建,而且您还可以有效地学习 3D 形状的分布并生成/合成 3D 形状。下面是我们的工作图像,显示我们甚至可以从单个轮廓或深度图(左侧)进行3D 重建。地面实况 3D 形状显示在右侧。

在此处输入图像描述

我们采用的方法对认知科学或大脑工作方式有一些贡献:我们构建的模型共享所有形状类别的参数,而不是只针对一个类别。此外,它获得了一致的表示,并在生成 3D 形状作为输出时考虑了输入视图的不确定性。因此,即使对于非常模糊的输入,它也能够自然地给出有意义的结果。如果您查看我们论文的引文,您会看到从 2D 图像到 3D 形状的更多进展。

于 2018-05-04T13:38:37.360 回答
14

这个问题被称为摄影测量

Google 会为您提供无穷无尽的参考资料,请注意,如果您想自己动手,这是一个非常困难的问题。

于 2012-05-29T15:18:59.663 回答
4

查看Deadalus 项目,虽然该网站不包含包含有关解决方案的说明性信息的画廊,但它发布了几篇论文和有关工作方法的信息。

我观看了该项目的一位主要研究人员(Roger Hubbold)的演讲,图像结果非常惊人!虽然是一个复杂而漫长的问题。要获得 3d 数据的近似值,需要考虑很多棘手的细节,例如来自墙壁表面的 3d 信息,其启发式工作如下:在场景的正常照明下拍摄照片,然后在全闪光灯激活的情况下在同一位置重新拍摄照片,然后减去两张图像并将结果除以预先拍摄的闪光灯校准图像,对这个新结果应用框过滤器,然后进行后处理以估计深度值,整个本文详细解释了过程(在项目网站上也发布/引用了)

于 2012-06-04T00:41:13.310 回答
3

Google Sketchup(免费)有一个照片匹配工具,可让您拍摄照片并匹配其视角以便于建模。

编辑:您似乎有兴趣开发自己的解决方案。我以为您正在尝试在单个实例中获取图像的 3D 模型。如果这个答案没有帮助,我很抱歉。

于 2011-11-21T22:09:58.740 回答
0

如果您尝试从 2d 图像堆栈构建 3d 体积,希望这会有所帮助!您可以使用带有 3d 查看器插件的开源工具,例如 ImageJ Fiji。

https://quppler.com/creating-a-classifier-using-image-j-fiji-for-3d-volume-data-preparation-from-stack-of-images/

于 2018-12-28T05:30:15.047 回答