主动立体视觉和体积立体视觉(Active stereo & Volumetric stereo)总结
在传统的立体视觉问题中,我们需要解决的问题是找到对应关系,即确定在两个相机图像中,哪两个点(如
为了解决上述问题,人们提出了主动立体视觉的概念。
主动立体视觉(Active stereo)
如图是一个主动立体视觉的示意图,图中,我们用一个投影仪(如 DLP 投影仪)代替了传统立体视觉中的一个相机。空间中有一个点
如果我们已经对投影仪的几何参数进行标定,我们就能够通过使用投影仪,解决了传统立体视觉中寻找对应关系的难题。因为投影仪主动投射出已知模式的光,可明确建立投影仪图像与相机图像之间的对应关系。
但是基于点的主动立体视觉也存在一些限制,如测量效率较低,易受噪声影响,缺乏上下文信息,场景适应性有限等问题,因此在此基础上,人们又提出了基于条纹的主动立体视觉。
我们让投影仪投射出一条红色的条纹(stripe),空间中有一个点
如果我们把物体替换为标定板,我们就可以使用标定板来校准相机,并在三维空间中定位标定板,在标定板上投射图案并校准投影仪。
激光扫描是另外一种主动立体视觉的方法,通过光学三角测量的方法实现(Optical triangulation):投射单条激光条纹,并让激光条纹扫过物体表面,这是一种非常精确的结构光扫描版本,能够实现高精度的结构光扫描,获取物体的三维信息。
激光扫描也存在一些缺点,比如激光扫描速度较慢。因为其通过逐点或逐线扫描来获取物体信息,完成整个物体扫描需较长时间;无法及时捕捉物体的变形。对于动态变化或变形的物体,由于扫描速度限制,不能实时精确记录其形态变化等。
基于彩色编码条纹的主动立体视觉是在条纹主动立体视觉的基础上进行的改进,它的投影仪可以是 LCD 或 DLP 显示设备,它投射出彩色编码条纹,这种方法可实现密集重建,能够获取物体表面较为密集的三维信息,利用不同颜色的条纹编码,使在相机图像中更容易确定与投影仪投射条纹的对应关系,解决对应点问题。
通过以上介绍的投影仪和立体相机组合而成的主动立体视觉系统,我们能够快速对物体的形状进行捕捉,从而帮助我们实现三维重建的工作。
最后我们再介绍一下主动立体视觉中的深度传感器,该设备由红外投影仪和红外相机组成,其能够在任何环境光条件下捕获三维视频数据,例如它可以显示投射的红外点图案,用于生成密集的三维图像,以不同颜色表示不同的深度信息从而生成深度图,在主动立体视觉中具有很大的作用。
体积立体视觉(Volumetric stereo)
在传统的立体视觉问题中,我们需要解决的问题是确定在两个相机图像中,哪两个点(如
在立体视觉几何中,我们需要解决的子问题是:如果我们已知相机参数和位置(K, R, T),在工作空间内选取一个点,将这个点投影到两幅(或更多)图像中,验证,观察结果是否一致?
如何验证结果的一致性呢?我们有这里有三种线索及其对应的处理方法:
- Contours/silhouettes(轮廓/剪影):对应的方法是“Space carving”(空间雕刻),即通过物体的轮廓或剪影信息,从三维空间中逐步去除不可能包含物体的部分,从而确定物体的形状。
- Shadows(阴影):对应的方法是“Shadow carving”(阴影雕刻),利用阴影信息来推断物体的三维结构,通过分析阴影的形状和位置来去除空间中与阴影信息不一致的部分。
- Colors(颜色):对应的方法是“Voxel coloring”(体素着色),根据不同视角下物体颜色的一致性,为三维空间中的体素赋予颜色,以构建更准确的三维模型。
轮廓/剪影(Contours/silhouettes)
轮廓能够为我们提供丰富的几何资源。
表观轮廓(Apparent Contours)
表观轮廓是物体表面上区分可见部分和被遮挡部分的点的轨迹的投影。从圆柱体表面上区分可见与被遮挡部分的点发出红色光线,这些光线投影到相机的成像平面上,形成了一个蓝色的轮廓,即表观轮廓。
剪影(Silhouettes)
剪影被定义为表观轮廓所包围的区域。从圆柱体表面发出红色光线,这些光线投影到相机的成像平面上,形成了表观轮廓。而这些表观轮廓所包围的蓝色区域,即为剪影。
如何检测剪影呢?如图所示,图中有一个相机、一个物体以及物体在相机成像平面上的投影。背景为黄色的区域代表场景,其中有一个青色的立方体物体。红色光线从物体边缘射向相机,在相机的成像平面上形成了一个蓝色的区域。这种情况下轮廓分割较为容易。因为物体与背景颜色对比明显,所以能够较为轻松地将物体在图像中的轮廓分割出来,进而得到物体的剪影。
轮廓对于我们有什么帮助呢?如图是一个三维世界中通过相机获取物体轮廓的示意图。在相机的视锥范围内,我们可以获得物体的表面轮廓,这些轮廓在图像平面上能够形成剪影。
我们把它提取到二维平面,可以得到下图模型:
这样的模型有什么用呢?如果我们已知相机的内参,即相机内部的固有参数,如焦距、主点位置等,且当相机围绕物体移动时,其位置和姿态是已知的,我们就可以利用不同视角下的轮廓信息,对物体的形状进行估计,这就叫物体估计,也叫视觉外壳(Object estimate, visual hull)。
很显然,我们需要求出一个视锥的相交部分,为了实现该目的,我们需要把视锥分解为多边形表面,从而在图像屏幕上显示出一个多边形的形状。
空间雕刻(Space carving)
利用体视立体视觉中的轮廓 / 剪影信息,我们可以知道体素的状态,从而我们可以确定每个体素是空还是满,进而逐步雕刻出物体的三维形状,这一方法我们把它叫做空间雕刻。
通过视觉外壳,我们能够估计出物体形状的一个大致外部边界,不过我们得到的结果是一个上界。通过这种方法,我们要求每个体素必须在每幅图像中都投影到剪影内。这意味着只有当一个体素在所有视角的图像中都位于剪影内时,才会被认为是物体的一部分,否则将被排除在视觉外壳之外。
但朴素的空间雕刻方法的时间复杂度较高,为
空间雕刻有很多好的优点,比如该方法具有鲁棒性且简单。这意味着它在处理各种复杂情况时表现稳定,不容易受到噪声、光照变化等因素的干扰,同时其原理和实现过程相对直观易懂。更重要的是无需解决对应关系问题。在一些立体视觉方法中,确定不同视角图像中相同点的对应关系是一项复杂且具有挑战性的任务,而空间雕刻避免了这一难题,通过利用轮廓 / 剪影信息直接对三维空间进行处理。
但是它也存在一些限制,比如空间雕刻的精度取决于视角数量,如果视角太少,就可能无法得到特别精确的估计。特别地,空间雕刻无法对凹面进行建模,否则会产生极大的测量误差。但空间雕刻在帮助我们初步估计几何体的形状还是有很大关系的。
阴影雕刻(Shadow carving)
阴影雕刻的第一步我们需要获得物体的阴影信息,如图所示:
图中我们通过照相机获得了四张物体在不同光照下的照片,显示了物体在不同阴影条件下的外观,说明通过改变灯光位置和角度,可以获取物体不同的阴影信息,用于后续的阴影雕刻处理,与空间雕刻类似,这里得到的还是物体的上界信息。
接下来我们需要介绍阴影雕刻算法算法,如图所示:
为了雕刻出物体的准确形状,我们首先需要知道一个定理:当一个体素既投影到图像阴影中,又投影到虚拟图像阴影中时,根据算法原理和几何光学特性,这个体素不可能是物体的一部分。假设我们在前一步(k - 1 步)得到了物体上界估计值,以网格形式呈现,限定了物体可能存在的空间区域,现在需要在此基础上继续去除体素,我们应用以上定理,当一个体素同时投影到图像阴影和虚拟图像阴影中时,它才会被去除,如果在当前条件下,没有更多的体素可以被去除,那算法结束,否则不断重复执行上述过程。该算法的时间复杂度是
从阴影雕刻的过程,我们能够看出该方法在估计物体体积时较为谨慎,不会高估物体占据的空间,通常会给出一个相对安全、包含物体真实体积的估计范围。此外,视点的不同会影响对物体阴影的观察角度,而光源数量的多少则关系到能获取的阴影信息的丰富程度。更多的视点和光源通常能提供更全面的阴影信息,从而提高物体形状和体积估计的准确性。
但是阴影雕刻在反射性区域和低反照率区域存在局限性。反射性区域会使光线反射情况复杂,干扰阴影的准确形成和捕捉;低反照率区域本身反射光线少,可能导致阴影信息不明显或难以分辨,这些都会影响阴影雕刻算法的效果。
体素着色(Voxel Coloring)
我们之前介绍过的基本方法是通过不同视角的相机得到不同的体素从而判断某个体素是否位于物体内,进而对物体进行雕刻。
但是从不同视角观察时,可能有多种体素的分布情况都能与观测到的图像信息相符,这就导致了重建结果的不唯一性。如何解决这个问题呢?我们可以引入可见性约束条件,来排除那些不符合实际可见情况的体素分布,从而使重建结果具有唯一性。
这里课件中没有给出具体的算法流程,大家可以自行查阅一下相关资料。
课件中还给出了算法的时间复杂度:体素着色操作仅访问每个
朗伯表面(Lambertian Surfaces)
朗伯表面是一种特殊的表面,朗伯表面的特性是其反射光的强度在各个方向上均匀分布,即从不同角度观察,表面上同一点的亮度仅与该点的反射率和入射光有关,而与观察角度无关。这个假设在许多视觉算法中起到基础作用,使得可以基于不同视角的图像信息进行稳定的计算和分析。
光度一致性测试(Photoconsistency Test)
如图所示,假如我们有两个相机,从相机发出红色虚线表示光线投射路径,穿过标记的体素到达成像平面。在成像平面上,有绿色的点列,代表该体素在不同图像中的投影区域的像素值。光度一致性测试需要我们实现以下步骤:
- 首先定义
,其中 表示相关性计算。 - 具体计算公式为
,其中 和 ,分别是像素值集合 和 的均值。
计算得到的相关系数
总结一下的体素着色优缺点:
- 优点:
- “Model intrinsic scene colors and texture”:能够对场景的固有颜色和纹理进行建模。这意味着该方法可以有效地捕捉和表现场景中物体真实的颜色以及表面纹理信息,为三维模型增添丰富的视觉细节。
- “No assumptions on scene topology”:不对场景拓扑结构做假设。即该方法在处理不同拓扑结构的场景时具有通用性,无需预先设定场景的特定连接方式或几何形态,增强了其应用的灵活性。
- 局限性:
- “Constrained camera positions”:相机位置受到限制。说明在使用体素着色方法时,相机的摆放位置不能随意,可能需要满足特定的条件或要求,这在一些实际应用场景中可能会带来不便。
- “Lambertian assumption”:存在朗伯假设。即假设物体表面是朗伯表面(反射光强度在各个方向均匀分布),但实际场景中很多物体表面并不完全符合这一特性,这可能导致在处理非朗伯表面物体时出现误差或不准确的情况。
最后课件中提到了这几种方法的更深入的应用:
内容列举了三个方面的贡献:
- 空间雕刻理论(A Theory of Space carving):出自Kutulakos和Seitz于1999年的研究。该理论有两个特点:
- “Voxel coloring in more general framework”:将体素着色置于更通用的框架中,意味着该理论可以更广泛地适用于不同的场景和条件。
- “No restrictions on camera position”:对相机位置没有限制,相比之前一些方法,在相机摆放上更加灵活,可应用于更多实际场景。
- 概率空间雕刻(Probabilistic Space carving):引用了Broadhurst和Cipolla在ICCV 2001年以及Bhotika、Kutulakos等人在ECCV 2002年的研究。这表明该领域在概率方法的应用上有进展,通过概率模型可能使空间雕刻的结果更加可靠和准确。
- 卷积神经网络与体素着色(CNN & voxel coloring):提到在估计物体形状的损失函数中纳入重投影误差(Incorporate reprojection error in the loss function for estimating object shape)。利用卷积神经网络的强大特征提取能力,并结合重投影误差的计算,能够更精确地估计物体形状,提升三维重建的质量。
本节课内容就介绍完了,如有问题请指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!