文章目录
- 2009 IJCV
- 双边滤波公式
- 卷积形式
2009 IJCV
2009年,Paris S等人在IJCV上发表的工作,将双边滤波表示为高维空间中的线性卷积和非线性操作,并通过在空间和强度域下采样来加速计算,从而在保证视觉质量的同时,显著提高了计算速度。
- Paris S, Durand F. A fast approximation of the bilateral filter using a signal processing approach[J]. International journal of computer vision, 2009, 81: 24-52.
双边滤波公式
双边滤波可以写成如下形式
I p b = 1 W p b ∑ q ∈ S G σ s ( ∥ p − q ∥ ) G σ r ( ∣ I p − I q ∣ ) I q W p b = ∑ q ∈ S G σ s ( ∥ p − q ∥ ) G σ r ( ∣ I p − I q ∣ ) . \begin{aligned} I^b_p&=\frac{1}{W^b_p}\sum_{q\in S}G_{\sigma_s}(\Vert p-q\Vert)G_{\sigma_r}(\vert I_p-I_q\vert)I_q\\ W^b_p&= \sum_{q\in S}G_{\sigma_s}(\Vert p-q\Vert)G_{\sigma_r}(\vert I_p-I_q\vert). \end{aligned} IpbWpb=Wpb1q∈S∑Gσs(∥p−q∥)Gσr(∣Ip−Iq∣)Iq=q∈S∑Gσs(∥p−q∥)Gσr(∣Ip−Iq∣).
其中, p , q p,q p,q为坐标向量, p p p是当前被滤波的点, q q q是 p p p的邻域 S S S内的点。 G G G是高斯函数, σ s , σ r \sigma_s, \sigma_r σs,σr分别为空间滤波和强度滤波的标记。 I I I是输入图像, I b I^b Ib是滤波后输出的图像, W p b W^b_p Wpb是归一化强度。
上面这两个式子,其求和号中的内容高度相似,可以糅合成如下矩阵的形式
[ W p b I q b W p b ] = ∑ q ∈ S G σ s ( ∥ p − q ∥ ) G σ r ( ∣ I p − I q ∣ ) [ I q 1 ] \begin{bmatrix} W^b_pI_q^b\\W^b_p \end{bmatrix}=\sum_{q\in S}G_{\sigma_s}(\Vert p-q\Vert)G_{\sigma_r}(\vert I_p-I_q\vert)\begin{bmatrix} I_q\\1 \end{bmatrix} [WpbIqbWpb]=q∈S∑Gσs(∥p−q∥)Gσr(∣Ip−Iq∣)[Iq1]
记 W = 1 W=1 W=1,则上式可写成迭代形式
[ W p b I q b W p b ] = ∑ q ∈ S G σ s ( ∥ p − q ∥ ) G σ r ( ∣ I p − I q ∣ ) [ W q I q W q ] \begin{bmatrix} W^b_pI_q^b\\W^b_p \end{bmatrix}=\sum_{q\in S}G_{\sigma_s}(\Vert p-q\Vert)G_{\sigma_r}(\vert I_p-I_q\vert)\begin{bmatrix} W_qI_q\\ W_q \end{bmatrix} [WpbIqbWpb]=q∈S∑Gσs(∥p−q∥)Gσr(∣Ip−Iq∣)[WqIqWq]
卷积形式
接下来,引入一个新的维度 z z z,并且定义点 ( x , y , z ) (x,y,z) (x,y,z)处的强度为 I I I,定义冲击函数 δ ( z ) \delta(z) δ(z)函数,其 z = 0 z=0 z=0时取值为 1 1 1,否则取值为使 0 0 0。上式可重新写为
[ W p b I q b W p b ] = ∑ q ∈ S ∑ z ∈ R G σ s ( ∥ p − q ∥ ) G σ r ( ∣ I p − z ∣ ) δ ( z − I q ) [ W q I q W q ] \begin{bmatrix} W^b_pI_q^b\\W^b_p \end{bmatrix}=\sum_{q\in S}\sum_{z\in R}G_{\sigma_s}(\Vert p-q\Vert) G_{\sigma_r}(\vert I_p-z \vert)\delta(z-I_q)\begin{bmatrix} W_qI_q\\ W_q \end{bmatrix} [WpbIqbWpb]=q∈S∑z∈R∑Gσs(∥p−q∥)Gσr(∣Ip−z∣)δ(z−Iq)[WqIqWq]
其中 R R R是 z z z的定义域。原文中 z z z轴的符号是 ζ \zeta ζ,考虑书写阅读方便改为了 z z z,其含义为强度值。 δ ( z − I q ) \delta(z-I_q) δ(z−Iq)的含义是, z z z轴中,只有等于当前像素点强度的分量为1,否则均为0。例如,如果处理 256 256 256位的灰度图像,当前像素的灰度值是 25 25 25,那么 z z z轴就有 256 256 256个分量,其第 25 25 25个分量为 1 1 1,其他均为 0 0 0。
定义下列三个函数
g σ s , σ r ( q , z ) = G σ s ( ∥ q ∥ ) G σ r ( ∣ z ∣ ) i ( q , z ) = I q w ( q , z ) = δ ( z − I q ) W q since W q = 1 \begin{aligned} g_{\sigma_s,\sigma_r}(q, z)&= G_{\sigma_s}(\Vert q\Vert)G_{\sigma_r}(\vert z\vert) \\ i(q, z)&= I_q\\ w(q, z)&=\delta(z-I_q)W_q \operatorname{since} W_q=1 \end{aligned} gσs,σr(q,z)i(q,z)w(q,z)=Gσs(∥q∥)Gσr(∣z∣)=Iq=δ(z−Iq)WqsinceWq=1
其中 q q q是图像中的某个像素坐标,展开形式为 ( x , y ) (x,y) (x,y),应该是一个向量。在上式中,表示某个像素点。原文在定义函数时,使用了映射的形式,为方便阅读,这里改为函数形式。
这三个函数可以化用到双边滤波中,如下所示
[ W p b I q b W p b ] = ∑ q , z ∈ S × R g σ s , σ r ( p − q , I p − z ) [ w ( q , z ) i ( q , z ) w ( q , z ) ] \begin{bmatrix} W^b_pI_q^b\\W^b_p \end{bmatrix}=\sum_{q,z\in S\times R}g_{\sigma_s,\sigma_r}(p-q, I_p-z)\begin{bmatrix} w(q,z)i(q,z)\\w(q,z) \end{bmatrix} [WpbIqbWpb]=q,z∈S×R∑gσs,σr(p−q,Ip−z)[w(q,z)i(q,z)w(q,z)]
其右侧即为点 ( p , I p ) (p, I_p) (p,Ip)处 g σ s , σ r g_{\sigma_s,\sigma_r} gσs,σr和二维函数 ( w i , w ) (wi,w) (wi,w)的卷积
[ g σ s , σ r ⊗ ( w i w ) ] ( p , I p ) \begin{bmatrix} g_{\sigma_s,\sigma_r}\otimes\begin{pmatrix} wi\\ w \end{pmatrix} \end{bmatrix}(p, I_p) [gσs,σr⊗(wiw)](p,Ip)