Bilateral Solver 双边算子原理及应用

双边算子来自于Google Research Jon Barron博士在ECCV2016的论文The Fast Bilateral Solver,该文获得ECCV 2016 best paper runner-up,即最佳论文第二名。

双边算子以图像平滑区域必然是内部紧密相关的为假设,认为在这些区域计算某些视觉任务上必然具有一致性,或者是渐变的。

以上假设被用来改进多种视觉任务,比如平滑区域内颜色一般一致(可用于改进图像着色),深度渐进变化(可用于改进深度超分辨率、立体视觉),

往往来自同一物体(可用于改进语义分割),运动一致(可用于改进光流计算)等。

因其可以大大改进多种视觉任务,而且速度超快,是同类算法计算速度的10到1000倍,迅速得到工业和学术界的关注,短短半年时间已经有21次引用。

在Google 发布的全景相机Jump中,计算光流时使用了双边算子,用于对tile的光流上采样后的结果进行提精,大大改进了光流计算结果。

下面我们看看它的主要思想:

 

如上,a是已经计算的感兴趣的量(图例是计算得出的图像深度,比如kinect的输出,也可以是光流、语义分割标签等其他任务的结果),c是其置信度图,与a大小一致,

c中元素越接近1,代表a中对应元素正确的概率越高,

d是原图的RGB像素图,从中我们可以看到他有多块颜色相近的平坦区域。以上三幅图是输入图,b是双边算子最终计算的结果图。

双边算子可表述为上面公式(1)的优化问题,x为变量,c为置信度图,t为上图a图,i、j为x的像素下标,x最终结果就是上面b图,上述公式前半部分是双边平滑项,

控制优化的结果保证是双边平滑的,后半部分是保真项,控制优化的结果与a相似不能偏离太远,Wij代表像素i,j的相似度,ci越大代表原a中的像素越要被保留。

这是个最小化问题minimize,表示改变x的大小,使后面公式计算结果最小化,既要双边平滑又要使x与a相似。

双边平滑项中的Wij的计算如下:

px,py为坐标,pl,pu,pv分别代表图像像素转成YUV的三个分量,以上公式表明在计算图像像素间相似性判断平滑程度的时候以位置和YUV分量来共同决定。

双边算子有广泛应用,不同的问题中以上框架是一样的,只是具体问题中a图的计算方法和与其相关的置信度c图的计算方法不同。

下面我们看看双边算子的巨大魔力。

下图a是一幅使用MC-CNN技术得到的深度估计图,用颜色表示深度大小,相近的颜色代表深度相近。下图中a图是原始结果,可以明显看到一些不自然的斑块,

取了其中三个小块zoom放大,可以明显看出深度估计的错误。

下图b图为经过双边算子处理过的结果图,可以看到大多数明显的瑕疵都被算法自动去掉了。

在Jump系统的tile-based optical flow光流计算中,把粗粒度的光流输入到双边算子中,对双边算子在时间维度进行了扩展保证时域一致,输出最终的光流。

转载请注明:《Bilateral Solver 双边算子原理及应用

发表评论