《Side Window Filtering》论文笔记

1. 概述

导读:滤波器是图像处理中常用的算子,具有保边属性的滤波器在某场景下是极具使用价值的。这篇文章提出了一种保边滤波算法,它采用多向窗口设计,在滤波器的中心采用多个窗口计算值滤波值,之后argmin的形式对输出的值进行组合,从而得到最后的滤波结果。文章的方法简洁直接,可以在现有的滤波器基础上进行修改得到,具有良好的移植迁移特性。而且并不需要针对性设计额外的超参数,使得具良好的保边属性鲁棒性强。

这篇文章主要关注的3种类型的图像边界情况见下图所示:
《Side Window Filtering》论文笔记
上面图像边界中 ( x , y ) (x,y) (x,y)处的值表示为 g ( x , y ) g(x,y) g(x,y),那么是存在如下的关系的:
g ( x + ϵ , y ) ≠ g ( x − ϵ , y ) g(x+\epsilon,y)\neq g(x-\epsilon,y) g(x+ϵ,y)​=g(x−ϵ,y)
也就是在边界的两边图像的取值是不一样的,同样的对这个不可导点取导数在一般情况也是不一样的。
g ’ ( x + ϵ , y ) ≠ g ’ ( x − ϵ , y ) g^{’}(x+\epsilon,y)\neq g^{’}(x-\epsilon,y) g’(x+ϵ,y)​=g’(x−ϵ,y)
文章中通过对两边的取值进行泰勒展开,得到:
g ( x − 2 ϵ , y ) ≈ g ( x − ϵ , y ) + g ’ ( x + ϵ , y ) ( − ϵ ) g(x-2\epsilon,y)\approx g(x-\epsilon,y)+g^{’}(x+\epsilon,y)(-\epsilon) g(x−2ϵ,y)≈g(x−ϵ,y)+g’(x+ϵ,y)(−ϵ)
也就是说边界上的最佳取值是需要在同边界一侧的。那么一种很自然的策略便是采用多方向性滤波,之后取argmin的线性组合形式能获得保边滤波的效果。

2. 滤波算法

这里定义 r r r为滤波器的半径, θ = k ∗ π 2 , k ∈ [ 0 , 3 ] \theta=k*\frac{\pi}{2},k\in[0,3] θ=k∗2π​,k∈[0,3]是滤波器窗口与水平的夹角, ρ ∈ { 0 , r } \rho\in\{0,r\} ρ∈{0,r}用于控制窗口的展开形状,那么根据上面两个窗口控制参数的不同取值,就可以得到8个不同的窗口,也即是下图所示的8个情况:
《Side Window Filtering》论文笔记
其中,上下左右4个半窗它的滤波参数可以描述为: w i U , w i B , w i L , w i R w_i^U,w_i^B,w_i^L,w_i^R wiU​,wiB​,wiL​,wiR​,之后对应的四个角的窗口参数描述为: w i S W , w i S E , w i N E , w i N W w_i^{SW},w_i^{SE},w_i^{NE},w_i^{NW} wiSW​,wiSE​,wiNE​,wiNW​。那么最后的计算过程可以简单描述为下面的算法流程:
《Side Window Filtering》论文笔记

3. 实验结果

传统类型的滤波器与按照文章思想改进之后滤波器的效果对比:
《Side Window Filtering》论文笔记
这篇文章给出的算法清晰明了,很容易进行移植。这里给出几个讲得不错的文章,以供参考:

  1. CVPR2019 Oral论文 #5176 Side Window Filtering介绍
  2. CVPR2019 Oral论文《Side Window Filtering》解读及算法 Python 实现
  3. Side Window Filtering 论文解读和C++实现
上一篇:json infinite recursion (*error)


下一篇:吴恩达-梯度检验