立体匹配的题目及基本办理思绪与流程

打印 上一主题 下一主题

主题 1000|帖子 1000|积分 3000

参考

一文详解三维重建中的立体匹配
1.立体匹配的困难之处






2.基本办理思绪

2.1 图像预处理 Preprocess

假如是由于两幅图像的亮度、噪声不一致,一般会先对图像做预处理,使得两幅图像的整体质量区域一致。
经典方法有:

  • 对图像做滤波操纵去除图像中的噪声,好比高斯拉普拉斯滤波和双边滤波等
  • 对图像亮度做归一化操纵,好比减去范畴的均值
  • 对图像做特征变换,提取图像中稳定的特征供后续处理,如Census变换
2.2 代价计算 Cost Computation

若计算同名点匹配代价时采用的是单个像素点的绝对值的差异,很容易受到噪声的干扰。
规避方法有二:

  • 换用更鲁棒的单像素的代价函数
  • 采用邻域支持窗来计算整体代价
下面细说。
1.换用更鲁棒的单像素的代价函数
如像素差异绝对值 Absolute Differences,平方差 Squared Differences,截断绝对差 Truncated Absolute Differences (TAD),
2.采用邻域支持窗来计算整体代价
仅仅考虑单个像素,照旧很难得到好的效果。
更好的方式是通过计算所关注的像素点的邻域的整体情况,来提升信噪比,减少噪声的影响。我们把这个邻域范围称为“支持窗(Support Window)”,通过支持窗内全部像素来计算一个匹配代价值。
这种策略就是把单个像素的计算转换为一个支持窗内的整体计算了。
如:像素绝对差值和 Sum of Absolute differences (SAD),像素差值平方和Sum of Squared differences (SSD),截断绝对差值和 Sum of truncated absolute differences (STAD)。
除了这些简单的代价函数,还有更多方法,好比使用两个图像的相互关信息的,使用图像梯度域信息的,或是使用一些非参数方法的,等等。
总之,我们可以为R中的每个像素点和选定的T中的像素点计算一个代价,并且这个代价还具有很高的区分度。
是在一个范围[dmin, dmax]中搜索匹配点,因此对任何一个R中的像素点,可以算出dmax - dmin + 1种代价值。假如图像的宽高分别为W和H,那么我们总共会得到W x H x (dmax - dmin + 1)种代价值。全部这些代价值可以存储到一个立方体中,这就是所谓的代价立方体。

2.3 代价聚合(Cost Aggregation)和视差优化(Disparity Optimization)

通过支持窗计算代价已经对图像的噪声、光照不一致等等提升了肯定的鲁棒性,但依然有许多题目遗留下来。
比起最基础的方案,视差图好像平滑了许多,没有了大片的噪声。但是许多局部是错误的。
固定支持窗,英文是Fixed Window,简称FW。上述效果不够理想,是由于FW策略违反了一些基础假设。

  • FW假设支持窗是正对相机的平面,支持窗内的全部点的视差是一致的,这显然和现实情况不一样。
  • 支持窗忽略了窗口内深度不连续,乃至有突变的情况,而强行把窗口内的视差值加权平均到一起。这就会导致产生的视差图内出现大量的物体边沿错误。
  • 就地景中有大面积的重复纹理、无纹理的部门时,小尺寸的支持窗无法办理同名点计算错误的题目,这种情况下可能出现许多候选像素点的代价值都一样,难以区分的情况。
尽管固定支持窗有这样那样的缺点,但它明白和实现都很容易,且非常便于并行化,在现代处理器上也比较容易做到实时运行,非常容易采用FPGA这样的硬件举行实现,性价比很足!所以许多传统算法的代价计算这一步都是采用固定大小支持窗来完成的。而要继续提升最终算法的效果,还得靠后续的步骤。
主要有两大类思绪,也就是局部聚合思绪,和全局优化思绪。
2.3.1. 代价聚合(Cost Aggregation)

局部聚合思绪通过对代价立方体中同一视差的代价举行某种程度的聚合,来减少或消除错误代价的影响,这一步就是所谓的代价聚合(Cost Aggregation)。
同一个视差的窗口我们会扩大并将代价立方体中相应的代价聚合在一起。
一般来说是通过调整支持窗的位置、外形、窗内各像素的权重等等来完成聚合的。
2.3.2 视差优化(Disparity Optimization)

全局优化思绪,则是希望寻找到每个像素的最优视差效果,使得全局的、整体的匹配代价最小,这一步被称为视差优化(Disparity Optimization)。
这个过程就变成了一个最优化某个能量函数的过程,该函数通常写成如下的形式:

等号右边第1项是数据项,用于束缚全局代价最小化。
但是代价立方体中通常含有噪声和错误,直接最小化求得的效果也会有许多题目,所以还需要第2项平滑项。这一项一般用于给出某些额外的束缚条件,好比通常假设整个图像的视差是平滑厘革的。这样视差的大厘革只会在场景内视差边沿处产生,一般也和图像内物体边沿高度相干。
如:图割法、置信度传播法、动态规划法等
2.4 视差后处理(Disparity Refinement)

前面先容的步骤最终将输出一张视差图,然而正如你已经看到的,即便是在上面那些受束缚的场景,得到的视差图依然不是完善的,照旧有许多错误。
因此,还需要一个后处理的步骤,来消除此中的错误,得到更正确的视差图。

需要办理的题目有:

  • 亚像素插值:我们上面计算的视差值都是离散的整数值,但现实场景物体存在连续厘革的视差,我们希望得到以浮点数表现的更精致的视差值。一般来说,会采用某种二次的抛物线插值法,得到连续的视差值,计算量也比较低,效果也不错。
  • 噪声和错误消除:偶然候会简单采用图像滤波的技术来处理视差图,也能得到不错的效果。从简单的中值滤波,到复杂的双边滤波都有人尝试。别的一个重要的本领是双向匹配,这种方法分别以双目图像中左图和右图作为参考图像R计算两个视差图(缺点:增加了计算量)。然后它以为一对匹配点的视差值是互反的,也就是说一对准确匹配点的视差值会非常接近。假如不满足这个条件那么对应的视差值应该就是错误的。
3. 如何确定视差范围




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表