作者丨李迎松@CSDN
来源丨https://blog.csdn.net/rs_lys/article/details/122894732?utm_source=app&app_version=5.0.0
编辑丨3D视觉工坊
双目立体匹配步骤详解:https://blog.csdn.net/rs_lys/article/details/83302323
1 SGM系列
理论恒叨系列
·【理论恒叨】【立体匹配系列】经典SGM:(1)匹配代价计算之互信息(MI)
https://blog.csdn.net/rs_lys/article/details/122894732?utm_source=app&app_version=5.0.0
·【理论恒叨】【立体匹配系列】经典SGM:(2)匹配代价计算之Census变换
https://ethanli.blog.csdn.net/article/details/83614915
·【理论恒叨】【立体匹配系列】经典SGM:(3)代价聚合(Cost Aggregation)
https://ethanli.blog.csdn.net/article/details/83754473
·【理论恒叨】【立体匹配系列】经典SGM:(4)视差计算、视差优化
https://ethanli.blog.csdn.net/article/details/84305717
码上实战系列
·【码上实战】【立体匹配系列】经典SGM:(1)框架与类设计
https://ethanli.blog.csdn.net/article/details/105065660
·【码上实战】【立体匹配系列】经典SGM:(2)代价计算
https://ethanli.blog.csdn.net/article/details/105142484
·【码上实战】【立体匹配系列】经典SGM:(3)代价聚合
https://ethanli.blog.csdn.net/article/details/105316274
·【码上实战】【立体匹配系列】经典SGM:(4)代价聚合2
https://ethanli.blog.csdn.net/article/details/105396761
·【码上实战】【立体匹配系列】经典SGM:(5)视差优化
https://blog.csdn.net/rs_lys/article/details/105715526
·【码上实战】【立体匹配系列】经典SGM:(6)视差填充
https://ethanli.blog.csdn.net/article/details/105897391
·【码上实战】【立体匹配系列】经典SGM:(7)弱纹理优化
https://ethanli.blog.csdn.net/article/details/106168040
2 PatchMatch系列
理论恒叨系列
·【理论恒叨】【立体匹配系列】经典PatchMatch: (1)Slanted support windows倾斜支持窗模型
https://blog.csdn.net/rs_lys/article/details/106292615
·【理论恒叨】【立体匹配系列】经典PatchMatch: (2)基于PatchMatch的视差估计
https://blog.csdn.net/rs_lys/article/details/106595305
·【理论恒叨】【立体匹配系列】经典PatchMatch: (3)后处理(一致性检查与视差填充)
https://blog.csdn.net/rs_lys/article/details/106698447
码上实战系列
·【码上实战】【立体匹配系列】经典PatchMatch: (1)框架
https://blog.csdn.net/rs_lys/article/details/107192399
·【码上实战】【立体匹配系列】经典PatchMatch: (2)主类
https://ethanli.blog.csdn.net/article/details/107251788
·【码上实战】【立体匹配系列】经典PatchMatch: (3)随机初始化
https://blog.csdn.net/rs_lys/article/details/107271430
·【码上实战】【立体匹配系列】经典PatchMatch: (4)代价计算
https://ethanli.blog.csdn.net/article/details/107418804
·【码上实战】【立体匹配系列】经典PatchMatch: (5)迭代传播
https://ethanli.blog.csdn.net/article/details/107436340
·【码上实战】【立体匹配系列】经典PatchMatch: (6)后处理
https://ethanli.blog.csdn.net/article/details/107549278
3 AD-Census系列
理论恒叨系列
·【理论恒叨】【立体匹配系列】经典AD-Census: (1)代价计算
·【理论恒叨】【立体匹配系列】经典AD-Census: (2)十字交叉域代价聚合(Cross-based Cost Aggregation)
·【理论恒叨】【立体匹配系列】经典AD-Census: (3)扫描线优化(Scanline Optimization)
·【理论恒叨】【立体匹配系列】经典AD-Census: (4)多步骤视差优化
码上实战系列
·【码上实战】【立体匹配系列】经典AD-Census: (1)框架
https://ethanli.blog.csdn.net/article/details/107743719
·【码上实战】【立体匹配系列】经典AD-Census: (2)主类
https://ethanli.blog.csdn.net/article/details/108542837
·【码上实战】【立体匹配系列】经典AD-Census: (3)代价计算
https://ethanli.blog.csdn.net/article/details/108610041
·【码上实战】【立体匹配系列】经典AD-Census: (4)十字交叉域代价聚合
https://ethanli.blog.csdn.net/article/details/108876143
·【码上实战】【立体匹配系列】经典AD-Census: (5)扫描线优化
https://ethanli.blog.csdn.net/article/details/108960778
·【码上实战】【立体匹配系列】经典AD-Census: (6)多步骤视差优化
https://ethanli.blog.csdn.net/article/details/109479936
如果你能学会SGM和PatchMatch,那么立体匹配你就完全入门了。
关于方法论
而真正需要学习的是立体匹配的方法论,从SGM算法,你可以学习马尔科夫随机场是如何应用于立体匹配的,进而你可以深入去了解马尔科夫随机场这个经典的理论,它在三维重建里应用比较广泛,你会在不同的地方看到它的身影,简而言之,大部分标签分配问题都可以用马尔科夫随机场来建模,而解决马尔科夫随机场这个能量最优问题,都是用效率高的近似方法,比如SGM的扫描线优化(Scanline Optimize)、动态规划(Dynamic Programming)、置信度传播(Belief Propagation)、合作优化(Cooperative Optimization)等。
我们会发现,无论在科学研究还是在工程实践中,建模都很重要且关键,当你发现立体匹配问题可以转化为标签分配问题便很快想到可以用马尔科夫随机场建模,进而尝试用众多成熟的优化算法之一去解决问题。大多数论文都是这样产出,研究进展的突破就在你转化问题的那一瞬间,当然前提是你要掌握一定数量的算法模型,这便是你应该掌握的基本知识之一。
而从PatchMatch算法上,和SGM对比我们可以明显感知到,基于离散空间的标签分配方法似乎并不是立体匹配问题的最优解,而基于连续空间的视差平面方法,在精度和效果上有明显的优势。尤其是在边界和细小结构的恢复上,离散空间带来的不精确性以及SGM的代价聚合模型对边界的处理并不清晰(或者说并不精确),使得SGM和PatchMatch差距明显,下图是一个例子:
边界恢复问题,并不能说是离散空间的问题,现在的深度神经网络,本质上还是离散空间的标签分配方法,但是将效果提升到了另一层次,对边界的恢复也比传统的标签分配方法要更好,但是在最终点云的精度上,对比PatchMatch并没有显现出优势,如果深度神经网络能在精度上打败传统几何算法,那算得上是一种全方位的颠覆,但是这并非不可能发生,因为目前所知的传统算法也并非在最好的状态,就算目前来看几何精度最好的PatchMatch也有精度分辨率,最终视差精细化时还是落到了离散空间,所以它未来被深度学习网络超越是可能的。
我觉得理论上的观点是,如果深度学习和传统几何都受到同样的关注度和研究度,那么传统几何算法的结果精确度一定会持续表现出优势,而深度学习的结果完整度和准确度也让传统几何算法难以望其项背。但是现实情况是,深度学习有着远超传统几何算法的关注度和研究度,这一定程度上导致深度学习和某些注重精度的工业实践中存在一个鸿沟,所以你可以看到,在精度无比重要的精确测量领域,比如工业测量、测绘、定位抓取等,深度学习还很少应用,反而是原理简单而精度很高的结构光重建技术大行其道。
而在一些不过分追求高精度的应用中,比如自动驾驶里的深度获取,并不需要每个点的精度都非常高,而完整度显得更重要,毕竟车前是否有物,和其离车距离是否足够精确两者之间,显然前者要更重要;再比如目前很流行的深度相机,虽然大多都是传统算法,但实际上很多情况下其并不需要非常高的精度,而采用传统算法居多的原因是传统算法的低算力,如果深度学习算力要求下降,或者芯片算力增强,则深度学习也将变得主流。
关于弱纹理恢复问题
弱纹理恢复是立体匹配的老大难,辐射差异对所有立体匹配来说至关重要,这是区分两个点是否为同一点的最关键信息。但是弱纹理的辐射差异十分微小且辐射值高度相似,这给基于局部窗口的立体匹配方法带来很大困难。
目前我所知的弱纹理恢复方法,大体上是有两类,一类是聚类分割法、一类是多尺度估计法。
聚类分割法建立的假设是局部的一块颜色相近的弱纹理区域极可能是属于同一块连续表面的,通常这个表面会假设为一个平面,在这个假设下有两类具体的思路去完成优化:
1、先对所有像素完成视差估计,在对像素进行聚类分割,对于恢复失败的像素,用同一块内的其他有效视差进行平面拟合,拟合方程可用来填补该缺失像素。
2、先对像素进行聚类分割,再基于聚类后的尺度上进行立体匹配,再将匹配结果映射到细粒度的像素尺度上。
这类方法实际应用是很少的,因为其假设看上去有明显缺陷,聚类分割本身就存在过分割和欠分割的问题难解决,且前景背景颜色相近的情况并不少见,这让问题反而变得更加棘手。
我这里想多聊聊另一类方法:多尺度估计方法。尺度是在我们人类感知中很重要的因子,如果将一块纯白的墙超近距离放在你的眼前,你肯定一头雾水,不知道这是什么东西,而且你的距离感会非常弱,感知不到这东西离你的眼睛到底有多远。而当距离慢慢拉远,你渐渐看到了墙周围的信息而推断出这是一堵墙,且距离感也会越来越清晰。尺度的大小决定了我们在有限视野内能接受到的信息范围,显然信息范围越大对我们的识别和定位都有好处,但也要认识到信息范围越大同时也会导致单位元尺寸下的信息清晰度变弱,两者必然是相互矛盾的。
回到立体匹配问题上,我们显然无法单靠一个像素信息来完成左右像素的配对,像素周围的局部信息是必须的,但是前提是局部窗口有足够的信息熵,在上一个例子来说,在距离拉远的过程中,在看到白墙轮廓之前,你都依旧无法识别它,所以对弱纹理来说,对局部信息范围的扩大需求显得尤为突出,我们认识到周围信息的范围对识别并定位能力非常重要,所以我们希望更大的窗口以接受更大范围的信息,所以增大窗口尺寸往往对弱纹理的优化有一定的帮助。
但增大窗口尺寸往往带来的是增大数倍的计算量,所以其实更实用的是减小图像分辨率,生成多个分辨率下的多尺度图像,在低分辨率尺度上对弱纹理取得更好的效果并投影到高分辨率尺度上。
我这里做了组对比实验来验证多尺度下的的SGM算法效果:
随着图像分辨率尺度的变小,在墙面上的视差越来越完整。这是多尺度匹配有助于恢复弱纹理的一个佐证。
版权声明:本文为CSDN博主「李迎松~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rs_lys/article/details/122894732
本文仅做学术分享,如有侵权,请联系删文。
3D视觉精品课程推荐:
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码) 3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进 4.国内首个面向工业级实战的点云处理课程 5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解 6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦 7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化 8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~