算法总结
这篇文章介绍一种迭代的SGM方法,叫做iSGM,与《Evaluation of a New Coarse-to-Fine Strategy
for Fast Semi-Global Stereo Matching》是同一作者,也是对这篇文章的一个改进。改进是因为SGMf这个方法中过渡依赖于粗视差图的精度,如果因为噪声等影响导致粗视差图不准确,那么就会导致精匹配时视差搜索范围的错误,导致无法得到准确的视差。而iSGM是利用了视差图中像素点邻域的信息,来缩小视差搜索范围,使得该范围更加准确。
方法比较复杂,下面直接给出这篇文章的work-chart:
四路并行SGM
前面的四个并行block计算标准SGM的很容易理解,利用了全分辨率和半分辨率图像进行聚合代价的计算,但是merge buffers这里怎么求,还没有看明白,文章里面也没有细说,因为全分辨率和半分辨率求得的DSI是不一样大的,所以应该如何合并?
合并代价,计算视差
合并之后WTA进行视差图的求解,并且进行左右一致性检测,注意,左右两条路径是分开并行的。
计算HDM
根据视差图计算HDM(Homogeneous Disparity Maps):对于一个像素点,如果其视差有效,那么检查其8邻域内的其他有效像素,如果他们之间的视差的差的绝对值大于一个阈值,那么这两个像素点都置为无效,无效用负数表示。遍历所有像素,得到的就是HDM。
计算SGDM(Semi-Global Distance Maps)
从SGDM可以得到,对于无效像素,可以得到8个方向上最近的有效视差,对于有效像素,可以得到8个方向上,在遇到无效视差之前,相邻的两个像素的视差的差都大于一定阈值。
缩小视差搜索空间
根据SGDM缩小视差搜索空间,因为SGDM中每个元素
F
p
F_p
Fp都是一个8维的向量,代表8个方向上离有效像素或无效像素的距离,那么对于有效像素,如果
f
m
i
n
f_{min}
fmin大于一定阈值,那么就认为这个像素的视差是可信的,所以就可以缩小视差搜索空间:
至此完成第一次迭代…
两路并行SGM
利用缩小的视差搜索空间进行代价计算,对于上一步的无效像素或者有效像素中 f m i n f_{min} fmin小于一定阈值的像素来说,应该视差搜索空间不缩小,但应该也可以缩小,只是缩小的 范围没有那么多。
第二次迭代 + SGM + LR-check
继续缩小视差搜索范围,进行SGM计算,得到最后的视差图。
总结
这篇文章主要是提出了一种利用像素邻域视差信息计算一个距离映射,然后缩小视差搜索空间,迭代两次得到精视差图。这篇文章比较复杂,网上也没有给出源码,而且对于如何进行并行,如何merge也没有讲明白,所以这篇文章就只进行一下总结,没有什么值得借鉴的地方。