从 2D 图像重建 3D 点

数据挖掘 计算机视觉 3d重建
2021-09-17 06:31:42

我知道这一定存在,但我很难找到正确的搜索词。

假设我有一堆标记的 3D 点,并且我捕获了它的多个 2D 图像。如果我想重建 3D 点,是否有完善的算法/库可以做到这一点?

这大概是 3D 面部识别的基础,这是一个成熟的研究领域,但一般情况(即非面部)似乎没有我能找到的明显文献。

我可以看到解决此问题的一种方法是优化问题,其中每个 2D 图像在每个点之间建立最小距离约束,并且可以通过最小化满足这些约束所需的距离来重建 3D 点。不过,这确实感觉像是具有偷偷摸摸的线性代数解决方案的问题之一。

这类问题有我可以搜索的文献吗?它有现有的库吗?(如果 OpenCV 中没有任何东西,我会感到非常惊讶,但我真的不知道我在寻找什么)

2个回答

您熟悉多视图几何吗?有一本经典的书:Hartley 和 Zisserman在计算机视觉中的多视图几何。一个很好的起点是关于从多个图像进行 3D 重建的 wiki 文章

本质上,是的,这个想法是解决优化问题。设对象为点集在 3D 中。在一般情况下,我们有ñC 相机 {C一世}一世=1ñC, 这样

q一世=一世ķķp一世
(X一世,是的一世)=(q一世1/q一世3,q一世2/q一世3)
在哪里p一世是个一世齐次坐标中的第 th 点,一世是相机的内在参数矩阵,是外部相机参数矩阵,并且q一世是个一世具有图像坐标的投影点(X一世,是的一世). (查看相机矩阵相机校准了解更多信息。)

解决这个问题取决于你有多少信息(特别是关于相机参数)和你做了什么假设(例如透视正交投影方程)。请注意,可能存在一些不可避免的歧义,具体取决于相机/图像的数量及其视点,以及对应点的数量/位置。如果您对 3D 结构本身有一些先验知识,也可以使用。

在双视图情况下,(大名鼎鼎的)基本矩阵基本矩阵允许基于对极约束估计 3D 点位置(直至平移缩放) 。对于更多视图,例如可以通过直接线性变换估计进行三角测量

一个不错的起点可能是Daniel Martinec 的关于稳健多视图重建的博士论文

两个潜在感兴趣的库是OpenCVOpenMVG


现在,与经典计算机视觉问题完全不同的是机器学习方法。这个想法是用数据驱动的估计来补充(或有时替换)来自多视图几何的几何关系(由于噪声、测量误差等可能很脆弱)。一些起点可能是:

我想,这种方法可能更符合“数据科学”网站的普通用户:)

请注意,这些方法倾向于假设不知道逐点对应。这使问题变得更加困难。但是,在您的情况下,情况似乎并非如此,尽管您没有给出明确的形式化。在查看这些不同的方法时请记住这一点,因为更简单的方法可能更可取。

也许是“深度估计”(或相关的搜索术语,如:图像深度估计、单声道深度估计、立体深度估计......)?

目前在该领域有很多研究。