【问题标题】:3D reconstruction -- How to create 3D model from 2D image?3D 重建 -- 如何从 2D 图像创建 3D 模型?
【发布时间】:2018-12-28 13:30:15
【问题描述】:

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

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

你用什么语言解释无关紧要,因为我正在寻找最好的方法。

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

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

【问题讨论】:

标签: image-processing 3d language-agnostic 3d-reconstruction 3d-model


【解决方案1】:

如前所述,这个问题非常很难,通常也称为multi-view object reconstruction。它通常通过解决每对连续图像的立体视图重建问题来解决。

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

对极几何

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

如果你有:

您可以仅使用矩阵理论计算fundamentalessential matrices,并使用它们来校正您的图像。这需要一些关于co-ordinate projectionshomogeneous co-ordinates 的理论以及pinhole camera modelcamera matrix 的知识。

如果您想要一种不需要相机参数并且适用于未知相机设置的方法,您可能应该研究uncalibrated stereo reconstruction 的方法。

对应问题

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

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

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

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

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

多视图重建

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

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

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

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

替代方案

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

对极几何参考

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

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

【讨论】:

  • 我认为这些参考资料会有很大帮助。我儿子喜欢用乐高积木拼搭,如果他能拍照然后旋转他的设计来解释不同的零件是做什么的,那就太好了。
  • 对于乐高积木,我相信应该有可能开发出一种解决方案,它可以完成所有工作并创建组件最外层可见层的完整 3D 模型。乐高积木的好处是是一小组已知形状的积木。这可能会成为一个不错的博士。论文:)
  • 如果您的目标是生成 2D 乐高图片的 3D 模型,则前面的评论包含了您的解决方案的种子 - 要考虑的一件可以大大简化您的算法痛苦的事情是限制乐高构造,以便每个特定的块形状具有独特的颜色 - 然后您的系统可以轻松恢复由于形成图像的投影而丢失的数据 - 否则,它仍然是博士级别的工作和大量启发式方法
【解决方案2】:

研究取得了重大进展,现在可以从 2D 图像中获得漂亮的 3D 形状。例如,在我们最近题为“Synthesizing 3D Shapes via Modeling Multi-View Depth Maps and Silhouettes With Deep Generative Networks”的研究工作中,在解决从 2D 图像获取 3D 形状的问题上迈出了一大步。在我们的工作中,我们展示了您不仅可以直接从 2D 转到 3D 并获得良好的近似 3D 重建,而且您还可以有效地学习 3D 形状的分布并生成/合成 3D 形状。下面是我们的工作图像,显示我们能够进行3D 重建,即使是从单个轮廓或深度图(左侧)。真实的 3D 形状显示在右侧。

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

【讨论】:

  • 这需要白色或无背景的物体图像吗?
  • @Goldname 是的。它不需要背景,因为我们使用的数据没有背景。
【解决方案3】:

这个问题被称为Photogrammetry

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

【讨论】:

    【解决方案4】:

    查看The Deadalus Project,尽管该网站没有包含有关解决方案的说明性信息的图库,但它发布了几篇有关工作方法的论文和信息。

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

    【讨论】:

      【解决方案5】:

      Google Sketchup(免费)有一个photo matching tool,可让您拍照并匹配其视角以便于建模。

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

        • 链接显示页面不存在
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 2011-10-08
        • 2015-06-27
        • 2015-11-03
        • 1970-01-01
        相关资源
        最近更新 更多