1、<Inductive Guided Filter: Real-time Deep Image Matting with Weakly Annotated Masks on Mobile Devices>
CVPR2019

下载地址:https://arxiv.org/pdf/1905.06747.pdf
2、<Fast End-to-End Trainable Guided Filter>
CVPR2018


下载地址:https://arxiv.org/pdf/1803.05619.pdf
代码路径:https://github.com/farmingyard/DeepGuidedFilter
3、<Learning to Cartoonize Using White-box Cartoon Representations>
CVPR2020

导向滤波用于调整图像的细节锐度,基于tensorflow实现,代码如下:
'''
CVPR 2020 submission, Paper ID 6791
Source code for 'Learning to Cartoonize Using White-Box Cartoon Representations'
'''
import tensorflow as tf
import numpy as np
def tf_box_filter(x, r):
ch = x.get_shape().as_list()[-1]
weight = 1/((2*r+1)**2)
box_kernel = weight*np.ones((2*r+1, 2*r+1, ch, 1))
box_kernel = np.array(box_kernel).astype(np.float32)
output = tf.nn.depthwise_conv2d(x, box_kernel, [1, 1, 1, 1], 'SAME')
return output
def guided_filter(x, y, r, eps=1e-2):
x_shape = tf.shape(x)
#y_shape = tf.shape(y)
N = tf_box_filter(tf.ones((1, x_shape[1], x_shape[2], 1), dtype=x.dtype), r)
mean_x = tf_box_filter(x, r) / N
mean_y = tf_box_filter(y, r) / N
cov_xy = tf_box_filter(x * y, r) / N - mean_x * mean_y
var_x = tf_box_filter(x * x, r) / N - mean_x * mean_x
A = cov_xy / (var_x + eps)
b = mean_y - A * mean_x
mean_A = tf_box_filter(A, r) / N
mean_b = tf_box_filter(b, r) / N
output = mean_A * x + mean_b
return output
if __name__ == '__main__':
pass
paper:https://link.zhihu.com/?target=https%3A//systemerrorwang.github.io/White-box-Cartoonization/paper/06791.pdf
code:https://github.com/SystemErrorWang/White-box-Cartoonization