入门 | Stereo Vision(四)立体匹配的代价计算和聚合

首先,pipeline先来:

在这里插入图片描述

现在校正也做完后,就到了correspondence,这一步也叫做stereo matching。
直观来说,就是找到左右两幅图中,对应于现实中同一点的点,这样之后,再通过两点间的视差,就可以得到现实中这个点的深度信息。

既然是找两幅图中的相同点,必然要判断两个点之间的相似性,所以要有一个相似性的描述,这个描述我们叫做matching cost;然而只从一个点出发是不合理的,因为在图中的像素之间肯定是有联系的,所以需要考虑像素之间的相关性,来优化之前的cost。得到两点的对应关系后,就可以计算视差。所以correspondence的基本步骤如下:

在这里插入图片描述
现有的算法主要分为全局算法和局部算法。

全局算法是对于每个点找他对应的最优匹配点,来使整幅图的代价最小,一般不经过代价聚合步骤。

局部算法则是在局部匹配,需要经过代价聚合来整合每个patch之间的信息。

匹配代价计算

这一步是要描述两个像素点的相似性,朴素的想法就是直接计算两个点像素值的差异,但是这种简单的算法因为只从一个点考虑,往往容易受到噪声的影响,于是有优化方法是放一个window,计算其中的点的像素差值之和。但是这种基于像素值的算法,会对光线和畸变十分敏感,产生一定误差。

于是有一些不基于像素值的算法,如census算法和Rank变换等。

这里简单介绍一下census的基本思想。

在图中找一个点,以它为中心划一个3x3的矩阵,将矩阵中的点与中心点比较,大于中心点的记为0,小于记为1,则可以产生一个8位的序列,记为中心点的census序列。
将两个点的census序列做异或,统计结果中的1的个数,记为两个点的汉明距离,距离越短越相似。
因为不是基于像素值,而是基于点之间的关系,所以census方法有抗光畸变,效率高稳定等优点。

代价聚合

参考:https://blog.csdn.net/Gavinmiaoc/article/details/92804547

因为局部算法在计算代价时,只考虑了局部的信息,在特征明显的地方能够匹配的较好,但在一些噪声大的边缘区域往往难以匹配,所以采用代价聚合的方法,每个像素在某个视差下的新代价值都会根据其相邻像素在同一视差值或者附近视差值下的代价值来重新计算,得到新的DSI,用矩阵S来表示。这是基于同一深度的像素有相同的视差值的先验知识。
代价聚合也可以理解为视差的传播,让信噪比高的区域的视差传播到信噪比低的区域,使所有点的代价都能较好地表示真实的相关性。

常用的方法:扫描线法、动态规划法、SGM算法中的路径聚合法。

视差计算

这一步就是在得到对应点的基础上,计算视差即可,就是求下图中的|XR - XT|
在这里插入图片描述
所以在整个Stereo Matching的过程中,最难的点就是代价的计算和代价的聚合,这里只是做了一个简单的介绍,很多美妙的算法(包括基于DL的方法)会进一步补充。


版权声明:本文为weixin_42730997原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。