【图像处理】导向滤波Guided Image Filtering

文章主页: http://kaiminghe.com/eccv10/

导向滤波背景

在图像处理的历史中, 最常用的是LTI (Linear translation-invariant) filters,(包括 mean, Gaussian, Laplacian 和 sobel算子等一些滤波算子)。这类filters的特点是空间不变性及与图像内容无关。但是有时候,我们会想到从guide image上获取先验信息, 从而进行保边滤波或者细节增强等操作。

导向滤波思想

主要核心:. 假设滤波后的图像是导向图像的线性变换。
导向滤波在一方面可以达到双边滤波(bilteral filter)的效果,但是不会有biateral filter的 gradient reversal artifacts。另一方面可以使得输出结构化,不至于过于smooth。

复杂度: 导向滤波的复杂度是O(N), 而双边滤波在kernel radius为r的时候,复杂度是O(Nr^2)。

关于双边滤波及导向滤波区别

【图像处理】导向滤波Guided Image Filtering_第1张图片
双边滤波如右边所示,根据range kernel和spatial kernel实现出一个保边的kernel。导向滤波则先假设输出是导向图的线性变换, 同时也是输入图去噪的结果。

Guided Filter 推导

Guide Filter是一种局部线性模型(Local Linear Model)。给定引导图 I I I, 输出图为 q q q, 那么在像素k为中心的window( w k w_k wk),中, q q q的边缘即是 I I I的边缘, 所以可得
∇ q = ∇ I + b k \nabla q = \nabla I + b_k q=I+bk
进一步推导, 对两边进行积分:
在这里插入图片描述

为了求解系数a和b,因此需要对输入进行约束, 我们假设滤波输出是输入减去一些噪声成分,给定输入 p p p, 我们对模型输出进行建模为:
在这里插入图片描述
在这里插入图片描述
那么对公式4和公式5进行合并,按照最小二乘法 即为:
在这里插入图片描述
其中 ϵ \epsilon ϵ为正则系数, 按照解析解即可得系数a, b:
【图像处理】导向滤波Guided Image Filtering_第2张图片
其中 μ \mu μ σ \sigma σ引导图 I I I在window k中的均值及方差, ∣ w ∣ |w| w为在窗口window中的像素个数。 p k p_k pk输入图 p p p在窗口win中的均值。
注意:由于Guide Filter是局部窗口的线性变换,因此对于像素来说,同一个像素存在于不同的窗口中,因此需要对包含这个像素的所有窗口的线性变换系数进行求均值和方差。
因此对于输出图来说:可以表示为:
在这里插入图片描述
其中 a i = 1 w ∑ a k a_i = \frac{1}{w} \sum a_k ai=w1ak, b i = 1 w ∑ b k b_i = \frac{1}{w} \sum b_k bi=w1bk

算法流程

【图像处理】导向滤波Guided Image Filtering_第3张图片

保边滤波

考虑特殊情况, 引导图为输入图,即自己引导自己。
那么按照公式7和公式8, 则为:

a k = σ k 2 / ( σ k 2 + ϵ ) a_k = \sigma^{2}_{k} / (\sigma^{2}_{k} + \epsilon) ak=σk2/(σk2+ϵ)

b k = ( 1 − a k ) μ k b_k = (1-a_k)\mu_k bk=(1ak)μk

那么当 ϵ = 1 \epsilon=1 ϵ=1, 则无滤波效果。
考虑 ϵ > 0 \epsilon>0 ϵ>0,

  1. case 1: “High variance 方差区域”, 那么 σ k 2 > > ϵ \sigma^{2}_{k} >> \epsilon σk2>>ϵ, 那么a->1, b->0, 则趋向保边
  2. case 2:“Flat patch 平坦区域”, 那么 σ k 2 < < ϵ \sigma^{2}_{k} << \epsilon σk2<<ϵ, 那么ak -> 0, b-> μ \mu μ, 则进行滤波。

更一般的情况, 引导图非输入图:
ϵ \epsilon ϵ越大, 则越平滑, ϵ \epsilon ϵ越小, 则保边效果越好。

调整参数滤波效果

【图像处理】导向滤波Guided Image Filtering_第4张图片

你可能感兴趣的:(图像处理)