Kenji Hata 和 Silvio Savarese
1. 引言
在传统的立体视觉中,其主要思想是利用对应的点 $p$ 和 $p^{\prime}$ 通过三角测量来估计三维点 $P$ 的位置。这里的关键挑战在于解决对应问题:我们如何知道一个点 $p$ 是否真的对应于另一个图像中的点 $p^{\prime}$?由于场景中存在大量的三维点,这个问题变得更加突出。这些笔记的重点将讨论在重建三维结构方面效果良好的替代技术。
2. 主动立体视觉
首先,我们将介绍一种称为主动立体视觉的技术,它有助于缓解传统立体视觉中的对应问题。主动立体视觉的主要思想是将两个相机中的一个替换为一个与三维环境交互的设备,通常是通过将一个易于从第二个相机识别的图案投影到物体上。这种新的投影仪-相机对定义了我们为相机对引入的相同的对极几何,其中被替换相机的像平面被投影仪虚拟平面所取代。在图1中,投影仪用于将虚拟平面中的点 $p$ 投影到三维空间中的物体上,从而在三维空间中产生一个点 $P$。这个三维点 $P$ 应该在第二个相机中被观察为一个点 $p^{\prime}$。因为我们知道我们正在投影什么(例如虚拟平面中 $p$ 的位置、投影的颜色和强度等),所以我们可以很容易地在第二个相机中发现对应的观察点 $p^{\prime}$。
主动立体视觉中一个常见的策略是从虚拟平面投影一条垂直条纹 $s$ 而不是单个点。这种情况与点的情况非常相似,其中线 $s$ 被投影到三维空间中的条纹 $S$,并在相机中被观察为线 $s^{\prime}$。如果投影仪和相机是平行的或经过校正的,那么我们可以通过简单地将 $s^{\prime}$ 与水平对极线相交来轻松发现对应的点。根据对应关系,我们可以使用前述课程笔记中介绍的三角测量方法来重建条纹 $S$ 上的所有三维点。通过在场景中扫描这条线并重复该过程,我们可以恢复场景中所有可见物体的完整形状。
请注意,此算法工作的一个要求是投影仪和相机需要进行校准。主动立体视觉系统可以使用与先前笔记中描述的类似技术进行校准。我们可以首先使用校准装置校准相机。然后,通过将已知条纹投影到校准装置上,并使用新校准相机中的相应观察结果,我们可以建立约束来估计投影仪的内部和外部参数。一旦校准完毕,这种主动立体视觉设置可以产生非常精确的结果。2000年,Marc Levoy和他在斯坦福大学的学生们证明,通过使用精细调谐的激光扫描仪,他们可以以亚毫米级的精度恢复米开朗基罗的《哀悼基督》的形状。
然而,在某些情况下,拥有一个精细调谐的投影仪可能过于昂贵或麻烦。一种使用更便宜设置的替代方法是利用阴影在我们想要恢复的物体上产生主动图案。通过在物体和已知位置的光源之间放置一根棍子,我们可以有效地将条纹投影到物体上,就像以前一样。移动棍子可以让我们将不同的阴影条纹投影到物体上,并以与以前类似的方式恢复物体。这种方法虽然便宜得多,但往往产生不太准确的结果,因为它需要在棍子、相机和光源之间进行非常好的校准,同时需要在棍子阴影的长度和细度之间进行权衡。
将单个条纹投影到物体上的一个局限性是它相当慢,因为投影仪需要扫描整个物体。此外,这意味着该方法无法实时捕捉变形。一个自然的扩展是尝试通过投影单个帧或图像来重建物体。其思想是将一个已知的不同条纹图案投影到物体的整个可见部分,而不是单个条纹。这些条纹的颜色经过精心设计,以便可以从图像中唯一地识别这些条纹。图3说明了这种多色编码条纹方法。这个概念为许多现代深度传感器的版本提供了动力,例如微软Kinect的原始版本。实际上,这些传感器使用红外激光投影仪,使其能够在任何环境光条件下以三维方式捕获视频数据。
3. 体素立体视觉
传统立体视觉和主动立体视觉方法的一种替代方法是体素立体视觉,它颠覆了使用对应关系寻找三维结构的问题。在体素立体视觉中,我们假设我们试图估计的三维点位于某个已知的有限体积内。然后,我们将假设的三维点投影回经过校准的相机,并验证这些投影在多个视图中是否一致。图4说明了体素立体视觉问题的一般设置。由于这些技术假设我们要重建的点包含在一个有限的体积内,因此这些技术主要用于恢复特定物体的三维模型,而不是恢复可能无边界的场景模型。
任何体素立体视觉方法的主要原则是首先定义当我们将包含体积中的三维点重新投影回多个图像视图时,“一致”意味着什么。因此,根据一致观察概念的定义,可以引入不同的技术。在这些笔记中,我们将简要概述三种主要技术,即空间雕刻、阴影雕刻和体素着色。
3.1 空间雕刻
空间雕刻的思想主要源于对物体轮廓提供了关于物体丰富几何信息的观察。在多视图的背景下,让我们首先设置如图5所示的问题。每个相机观察物体的某个可见部分,从中可以确定轮廓。当投影到像平面时,该轮廓包围一组像素,称为像平面中物体的轮廓。空间雕刻最终使用来自多个视图的物体轮廓来强制执行一致性。
然而,如果我们没有三维物体的信息而只有图像,那么我们如何获得轮廓信息呢?幸运的是,处理轮廓的一个实际优势是,如果我们能够控制想要重建的物体背后的背景,就可以很容易地在图像中检测到它们。例如,我们可以在物体后面使用“绿幕”来轻松地将物体从其背景中分割出来。
现在我们有了轮廓,我们实际如何使用它们呢?回想一下,在体素立体视觉中,我们对某个体积有一个估计,我们保证物体可以存在于该体积内。我们现在引入视觉锥的概念,它是由相机中心和像平面中的物体轮廓定义的包络面。根据构造,可以保证物体将完全位于初始体积和视觉锥内。
因此,如果我们有多个视图,那么我们可以为每个视图计算视觉锥。根据定义,物体存在于这些视觉锥中的每一个中,那么它必须位于这些视觉锥的交集中,如图6所示。这种交集通常称为视觉外壳。
在实践中,我们首先定义一个我们知道物体包含在内的工作体积。例如,如果我们的相机环绕物体,那么我们可以简单地说工作体积是相机包围的整个内部空间。我们将这个体积划分为称为体素的小单元,定义了所谓的体素网格。我们获取体素网格中的每个体素并将其投影到每个视图中。如果体素在某个视图中不被轮廓所包含,则将其丢弃。因此,在空间雕刻算法结束时,我们剩下的是包含在视觉外壳内的体素。
尽管空间雕刻方法避免了对应问题并且相对简单,但它仍然有许多局限性。空间雕刻的一个局限性是它与网格中体素的数量成线性关系。随着我们减小每个体素的大小,网格所需的体素数量呈立方级增长。因此,要获得更精细的重建结果会导致时间的大幅增加。然而,一些方法(如使用八叉树)可以用来缓解这个问题。相关但更简单的方法包括进行迭代雕刻以减小初始体素网格的大小。
另一个局限性是空间雕刻的效率取决于视图的数量、轮廓的精确度,甚至是我们试图重建的物体的形状。如果视图数量太少,那么我们最终会对物体的视觉外壳得到一个非常粗略的估计。随着视图数量的增加,一致性检查可以移除更多无关的体素。此外,一致性检查的有效性完全取决于我们相信轮廓是正确的这一事实。如果轮廓过于保守并且包含比必要像素更多的像素,那么我们的雕刻可能不精确。在可能更糟糕的情况下,轮廓错过了实际物体的某些部分,导致重建过度雕刻。最后,空间雕刻的一个主要缺点是它无法模拟物体的某些凹陷部分,如图8所示。
3.2 阴影雕刻
为了规避空间雕刻提出的凹陷问题,我们需要寻找其他形式的一致性检查。我们可以用来确定物体三维形状的一个重要线索是自身阴影的存在。自身阴影是物体投射在自身上的阴影。对于凹面物体,物体通常会在凹面区域投下自身阴影。
阴影雕刻的核心是用使用自身阴影来更好地估计凹陷的想法来增强空间雕刻。如图9所示,阴影雕刻的一般设置与空间雕刻非常相似。一个物体被放置在一个转盘上,由一个经过校准的相机观察。然而,在相机周围已知位置有一组灯,其状态可以适当地打开和关闭。这些灯将用于使物体投下自身阴影。
如图10所示,阴影雕刻过程从一个初始体素网格开始,该网格通过使用与空间雕刻相同的方法进行修剪。然而,在每个视图中,我们可以打开和关闭相机周围阵列中的每盏灯。每盏灯都会在物体上产生不同的自身阴影。在像平面中识别出阴影后,我们可以在修剪后的体素网格表面上找到位于阴影视觉锥内的体素。这些表面体素使我们能够用光源创建一个新的视觉锥。然后,我们利用一个有用的事实,即同时属于两个视觉锥的体素不可能是物体的一部分,从而消除凹陷区域的体素。
与空间雕刻一样,阴影雕刻的运行时间取决于体素网格的分辨率。运行时间随体素网格分辨率的立方级增长。然而,如果有 $N$ 个光源,则阴影雕刻所需的时间大约是空间雕刻的 $N+1$ 倍,因为每个体素都需要投影到相机和 $N$ 个光源中的每一个。
总之,阴影雕刻总是产生一个保守的体积估计,能够更好地重建具有凹陷的三维形状。结果的质量取决于视图的数量和光源的数量。这种方法的一些缺点是它无法处理物体包含反射区域或低反照率区域的情况。这是因为在这种条件下无法准确检测到阴影。
3.3 体素着色
我们在体素立体视觉中介绍的最后一种技术是体素着色,它使用颜色一致性而不是空间雕刻中的轮廓一致性。如图11所示,假设我们得到了我们想要重建的物体的多个视图的图像。对于每个体素,我们查看它在每个图像中的相应投影,并比较这些投影的颜色。如果这些投影的颜色充分匹配,则我们将该体素标记为物体的一部分。体素着色与空间雕刻相比的一个优点是,与投影相关的颜色可以转移到体素上,从而得到一个着色的重建。
总的来说,有许多方法可以用于颜色一致性检查。一个例子是设置投影之间颜色相似度的阈值。然而,任何使用的颜色一致性检查都存在一个关键假设:被重建的物体必须是朗伯体,这意味着物体任何部分的感知亮度不随视点位置或姿态的变化而改变。对于非朗伯体物体,例如由高反射材料制成的物体,很容易想到颜色一致性检查会在实际上是物体一部分的体素上失败。
原始体素着色的一个缺点是它产生的解不一定是唯一的,如图12所示。找到真实的、唯一的解使通过体素着色进行重建的问题变得复杂。
通过对体素引入可见性约束,可以消除重建中的模糊性,这要求以特定顺序遍历体素。特别是,我们希望逐层遍历体素,从靠近相机的体素开始,然后逐渐向更远的体素推进。使用此顺序时,我们执行颜色一致性检查。然后,我们检查体素是否至少可以被两个相机看到,这就构成了我们的可见性约束。如果体素不能被至少两个相机看到,那么它一定是被遮挡了,因此不是物体的一部分。请注意,我们处理较近体素的顺序使我们能够确保保留那些可以遮挡稍后处理的体素的体素,以强制执行此可见性约束。
总而言之,体素着色具有同时捕获物体形状和纹理的优点。其一些缺点包括假设物体是朗伯体,并且由于可见性约束,相机不能位于某些特定位置,因为体素需要按特定顺序处理。
此处评论已关闭