论文《ESPReSSo: 高效的倾斜拼接,实时时空立体声》学习

《ESPRESSO: Efficient Slanted Patchmatch for Real-time Spacetime Stereo》
(2018 SCI 会议)

摘要: 我们介绍ESPReSSo,时空立体声的第一个实时实现,提供了比现有实时系统更好的质量。ESPReSSo是一种局部立体重建算法,它预先计算了子像素移位的二进制编码器,然后沿着倾斜的不奇偶平面对它们进行迭代采样,并应用边缘感知滤波器对空间代价进行聚合。平面假设在矩形瓷砖中共享,但每个像素从这些候选中选择不同的赢家,如PatchMatch Filter[15]。此架构执行的描述符计算很少,但成本聚合较多,因此我们调整描述符的选择并进行相应的筛选:我们提出了一种新的32位二进制时空描述符breve,它结合了小空间范围的优点和对场景运动的鲁棒性,并且系统使用了一种非常有效的边缘感知滤波器渗透滤波器[8]来聚合成本。我们的原型在桌面GPU上每秒输出60个深度帧,每帧的总计算时间不到11ms。

1、简介

像PrimeSense[1]这样的实时有源立体声系统为计算开辟了新的输入模式类别。但这些系统的分辨率和精确度已经落后于离线立体声系统。现有的商业系统不能满足需要更精确的应用程序的需要,例如用于游戏或娱乐用例的非刚性物体的几何获取。

基于对高精度实时系统的需求,我们寻求采用先进的离线使用方法,以提高在现代硬件上的实时性能。具体来说,通过投射随时间和空间变化的模式,可以用更小的空间窗口采样相同数量的像素[20,9]。因此,匹配像素的时空块可以得到更高质量的重构。虽然这种方法使用的是主动照明,但由于它不依赖于任何特定标定的结构光源,因此不属于“辅助立体视觉”的范畴。这一特性使得同时使用多个这样的设备成为可能,而不需要对干扰的特殊情况进行处理。

在这项工作中,我们演示了一种实时时空立体匹配的方法使用商品gpu。我们的方法使用了一个健壮的32位二进制描述符,以及一个带有块代价过滤的运行域倾斜窗口搜索,它是由PatchMatch过滤器松散地改编而来的。我们的方法在短的五帧时间窗口中进行匹配,在第五幅“引导图像”中使用四个红外帧的点模式照明器和环境红外照明进行边缘感知成本过滤。我们捕获红外光谱以避免与同步RGB传感器的干扰。我们的描述符是围绕这五对配置设计的,以平衡空间的灵活性和对运动的鲁棒性。该系统首先将前端平行排列描述符(即轴向排列于时空像素网格),然后将这些预计算的描述符之间的汉明距离聚合过滤,以检验区域平面假设。我们的边缘感知滤波器是磁导率滤波器,这是一种快速的IIR滤波器,可以在超过60Hz的频率下对每个输出像素的384个视差面进行滤波和测试。

使用时空照明模式的好处是更高的精度,这得益于空间紧凑的描述符和较小空间窗口上的成本聚集。具有非常小的空间范围(3×3)的解脚本程序对边缘增肥伪影具有很高的抵抗力,并且允许在倾斜视差平面上使用最近邻查找,甚至使用在frontoparallel空时网格上预先计算的查找表。因此,时间聚合和描述符计算的代价在预计算步骤中只发生一次,我们甚至可以计算高度倾斜表面和近深度不连续点的可用深度数据,在这些情况下,许多其他实时方法会丢弃像素。

我们的贡献包括一个新颖的重构立体匹配使用描述符预计算与倾斜平面成本聚合,一个时空二元描述符是鲁棒的场景运动和高度倾斜几何,并使用渗透过滤器为倾斜平面成本过滤。这些发展使我们已知的第一个实时时空立体的演示成为可能。

5. 结论

介绍了一种实时时空立体重建系统和算法。我们的方法在高度复杂的真实世界表面上产生高精度和良好的覆盖率。由于无需校准光源,多个传感器可以同时捕获深度而不受干扰。(事实上,额外的光照通过增加点密度来提高精确度。)我们展示了一个空间紧凑的时空描述符,它既具有方向性,又对运动具有鲁棒性。我们还为这些描述符引入了一种预计算策略,以便能够使用倾斜视差平面,其成本与仅限于在前向平行平面中聚合成本的方法相当,并且表明即使对于高度倾斜的几何体,该策略也能提供良好的精度。而且,与许多在深度不连续边附近给出错误答案的快速方法不同,我们的方法提供了非常接近深度不连续边的高置信度深度。

我们的方法的一个不寻常的特点是我们使用了两种不同类型的像素聚集:短描述子是前向平行的,空间上很小;而瓷砖级渗透性滤波器聚集具有较大的空间范围,但具有边缘感知能力。人们可能会问,为什么要同时使用这两种类型的聚合?我们发现,大空间描述符对倾斜几何体的效果很差,但是单像素代价函数(即像素级SAD和SSD)的聚集不够清晰,即使使用昂贵的边缘感知滤波器。Breve既小到可以进行斜测量,又大到可以进行高度鉴别。因此,我们发现这是一个很好的折衷高精度实时系统。

我们目前实现的一个限制是信息在块之间传播的强度不如在块内部传播的强度,所以在近平面区域,我们有时会在输出中看到块之间的小深度不连续。这种深度不连续对于使用法线或其他导数计算的应用程序可能是有问题的。但是,实际的深度差异通常非常小,因此,例如,来自其他摄像机的纹理重投影在新颖的视点上看起来仍然很好(参见图1)。

还应该指出的是,我们的选机策略完全是临时的,我们正在积极研究改进措施。特别地,机器学习方法可以在较少的平面测试下更快地收敛。同样,我们怀疑学习方法在深度失效方面比我们目前的启发法更有效。

尽管我们的捕获方法对于以典型的人类速度移动对象是有效的,但是快速运动仍然会导致视图之间的匹配不良。理想情况下,我们将在五个短曝光图像对的突发序列中覆盖图像。我们相信,我们的算法在较短的曝光时间内可以很好地工作,但目前受到我们现有的相机电子设备的限制,即使在整体比特率仍然低于USB3速度限制的情况下,这些设备也没有缓冲区来保存突发序列。未来的工作包括使用与主机连接速度更快的摄像头,或者使用带车载缓冲的摄像头。

尽管有这些限制,我们相信浓缩咖啡是高质量实时消费者深度获取的原因。我们采用低成本辅助红外照明,不干扰可见光,无需校准。多个这样的系统可以一起用来捕捉大规模的动态场景,而不需要时间融合。这样的系统可以解除对娱乐、通信和协作中交互式应用程序的兴趣。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个错误是因为在你的项目中没有找到 com.android.support.test.espresso:espresso-core:2.2.2 这个依赖库。你需要在你的 build.gradle 文件中添加这个依赖库,或者更新它的版本。具体操作可以参考以下步骤: 1. 打开你的项目中的 build.gradle 文件。 2. 在 dependencies 中添加以下代码: ``` androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2' ``` 3. 点击 Sync Now 按钮,等待 Gradle 同步完成。 4. 如果还是出现错误,可以尝试更新依赖库的版本,例如: ``` androidTestImplementation 'com.android.support.test.espresso:espresso-core:3..2' ``` 然后再次点击 Sync Now 按钮,等待 Gradle 同步完成。 希望这些步骤可以帮助你解决这个问题。 ### 回答2: 这是一个涉及到安卓支持库的错误。在开发安卓应用时,我们经常使用安卓支持库,因为这些库提供了许多有用的特性和功能。然而,有时候这些库可能无法正确地导入或编译。导致这种情况的原因可能有很多,我们需要一步步地分析。 首先,我们需要确定是否正确地在build.gradle文件中声明了依赖关系。在这个特定的错误消息中,我们可以看到指示我们所需的库的名称和版本号。因此,我们需要检查我们的build.gradle文件,确保我们正确地声明了依赖关系。我们应该能够找到类似这样的代码: ``` dependencies { ... androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2' ... } ``` 如果没有找到这样的代码,我们需要手动添加它。如果找到这样的代码,确保它没有被注释掉或者有任何语法错误。 如果我们已经正确地声明了依赖关系,我们需要检查我们的构建环境。有时候我们的Android Studio环境可能会出现问题,导致无法正确编译库。在这种情况下,我们可以尝试清除Gradle缓存并重新编译。为此,我们可以在Android Studio的菜单中找到“Build” -> “Clean Project”和“Build” -> “Rebuild Project”选项。尝试使用这些选项可能会解决问题。 最后,如果以上方法都没有起作用,可能需要升级或降级所需的库的版本。在这种情况下,我们可以转到Maven仓库网站,查找版本与我们的构建环境和其他库之间的兼容性。我们也可以查看安卓支持库的文档,找到适合我们应用程序的最新版本。 总之,出现这种错误,我们需要逐步检查所有可能出现问题的地方,并使用适当的资源和工具来解决问题。 ### 回答3: 这个错误提示是在使用Android Studio构建应用时出现的。它表明在Gradle构建脚本中引入的Espresso测试框架的核心库无法被解析,即可能没有找到它或者版本不正确。 解决这个问题的方法如下: 1.检查Gradle构建脚本:确保在dependencies部分正确地引入了Espresso测试框架的核心库。例如: dependencies { ... androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' } 2.检查仓库配置:确认项目的仓库配置是否正确,可以在项目根目录的build.gradle文件中添加Google Maven仓库: allprojects { repositories { maven { url 'https://maven.google.com' } jcenter() } } 3.检查版本号:如果上述两个问题都已排除,则可能是版本号不正确。检查Espresso核心库版本是否正确。您可以在以下网址中查找最新版本: https://developer.android.com/training/testing/espresso/setup 4.同步Gradle:如果仍然无法解决问题,则尝试同步Gradle。选择Android Studio菜单中的File > Sync Project with Gradle Files。 总之,要解决这个错误,需要仔细检查Gradle脚本、仓库配置和版本号,并确保正确同步Gradle。这些方法通常可以解决大多数与Espresso测试框架的构建错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值