SGM算法的快速实现

CPU

  • 2010年,Martin Humenberger等人采用SGM算法计算粗视差图,然后对图像进行分割,在分割区域内进行视差平面的拟合,设置一定阈值,对无效视差进行填充。

  • 2011年,Simon Hermann等人提出一种快速SGM算法,对原图进行下采样,在缩小的图像上采用SGM算法计算粗视差图,利用粗视差来缩小原图上的视差搜索范围,减少了计算量,但是最终视差图的准确度依赖于较为准确的粗视差图。2013年,这个作者提出了迭代的SGM(iSGM)算法,通过迭代的方式,由粗视差图逐渐过渡到精视差图,且放宽了对粗视差图准确度的要求,但增加了计算量。

  • 2013年,Robert Spangenberg等人提出中心对称的Census变换和加权的汉明距离来进行代价计算,并依据ELAS算法计算自适应的路径代价的权重,准确度和效率都比iSGM算法更好,但是计算量还是很大。

  • 2016年,Yingsong Li提出一种分层SGM的算法,对图像进行多次下采样,然后用SGM算法估计粗视差图,用上层的视差图来为下一层的视差搜索范围提供先验知识,大大减少了计算复杂度。

FPGA

  • 2017年,Yan Li等人依据窗口内像素与中心像素的颜色和空间相似性,对不同路径代价赋予不同的权值,改善了视差不连续区域的准确度,效果比SGM原文更好,但基于窗口的自适应权值计算增加了计算量。

  • 2021年,Zhimin Lu等人对Yan Li的方法进行改进,只根据相邻单个像素与中心像素的颜色相似性,对当前路径代价赋予不同的权值,且只对水平方向的两条路径计算自适应权值(原因是水平方向的路径对代价有更大的影响),减少了计算量,但牺牲了准确度(精度不如SGM原文)。

  • 2021年,Chenyuan Zhao等人提出变化的中心对称的Census变换和加权的汉明距离来进行代价计算,减少了噪声的干扰,并且对SGM算法进行改进,在三组两两垂直的路径上进行代价聚合,最后求和作为最终的匹配代价,获得比AD-census算法更高的准确度(怀疑,看视差图远不如AD-census)。

GPU

  • 2008年,Ines Ernst在GeForce 8800 ULTRA上实现SGM算法,对于640 480的图像和128的视差范围,达到了4.2fps,对于320 240的图像和64的视差范围,达到了13fps。

  • 2011年,Xing Mei等人AD-Census算法,该算法采用AD和Census变换进行代价计算,相比于只用Census变换来说,对重复纹理更鲁棒,然后改进了十字交叉域代价聚合,使得一方面避免臂的延伸穿过边缘(视差不连续)像素,另一方面使弱纹理有更长的臂,这样对于视差不连续和弱纹理都更加鲁棒,在视差计算上,基本采用SGM算法,该算法曾一度排在Middlebury官网上第一的位置。在GeForce GTX 480上可以达到10fps。

  • 2016年,D. Hernandez-Juarez等人对SGM算法提出了一种高效率的GPU并行方案,对于640 480的图像和128的视差范围,在Tegra X1可以达到42fps。

  • 2018年,李迎松在其博士论文中采用他之前提出的分层SGM算法,并在GeForce GTX1070 GPU上进行实现,对于640 480的图像和128的视差,可以达到178fps。

你可能感兴趣的:(传统双目,+,结构光,算法)