Fast Guided Filter · Fast Guided Filter Kaiming He Jian Sun Microsoft fkahe,[email protected]...

2
Fast Guided Filter Kaiming He Jian Sun Microsoft {kahe,jiansun}@microsoft.com Abstract The guided filter is a technique for edge-aware image filtering. Because of its nice visual quality, fast speed, and ease of implementation, the guided filter has witnessed various applications in real products, such as image edit- ing apps in phones and stereo reconstruction, and has been included in official MATLAB and OpenCV. In this note, we remind that the guided filter can be simply sped up from O(N ) time to O(N/s 2 ) time for a subsampling ratio s. In a variety of applications, this leads to a speedup of >10× with almost no visible degradation. We hope this accelera- tion will improve performance of current applications and further popularize this filter. Code is released. 1. Introduction The guided filter [1, 2] is one of several popular algo- rithms for edge-preserving smoothing 1 . Its time complex- ity is O(N ) in the number of pixels N , independent of the filter size. The guided filter can effectively suppress gradient-reversal artifacts [1] and produce visually pleas- ing edge profiles. Because of these and other properties, the guided filter has been included in official MATLAB 2014 2 and OpenCV 3.0 3 and widely adopted in real products. Despite its popularity and its various third-party imple- mentations, we notice that a simple but significant speedup has not been exploited. This speedup strategy was briefly mentioned in [2] for joint upsampling but not for other generic scenarios. This method subsamples the filtering in- put image and the guidance image, computes the local lin- ear coefficients, and upsamples these coefficients. The up- sampled coefficients are adopted on the original guidance image to produce the output. This method reduces the time complexity from O(N ) to O(N/s 2 ) for a subsampling ratio s. An actual speedup of >10× can be observed. In this note, we revisit this speedup method by provid- ing more technical details, visual examples, and publicly 1 en.wikipedia.org/wiki/Edge-preserving_ smoothing 2 www.mathworks.com/help/images/ref/ imguidedfilter.html 3 docs.opencv.org/master/da/d17/group__ximgproc_ _filters.html released code 4 . This acceleration method is particularly fa- vored for mega-pixel images, for which the filter size is usu- ally set as proportional to the image size in practice. As such, a local window on the subsampled images can still provide enough pixels for computing local statistics. In our extensive real applications for image processing, we have found that this speedup method has almost no visible degra- dation. Considering the growing usage of the guided filter in real products, we hope this simple speedup will improve the performance of these applications and further popular- ize this filtering technique. 2. Method We denote the guidance image, filtering input image, and filtering output image as I , p and q respectively. The guided filter is driven by a local linear model: q i = a k I i + b k , i ω k , (1) where i is the index of a pixel, and k is the index of a local square window ω with a radius r. Given the filtering input image p, minimizing the reconstruction error [1] between p and q gives: a k = 1 |ω| iω k I i p i - μ k ¯ p k σ 2 k + (2) b k = ¯ p k - a k μ k . (3) where μ k and σ k are the mean and variance of I in the win- dow k, and is a regularization parameter controlling the degree of smoothness. The filtering output is computed by: q i a i I i + ¯ b i , (4) where ¯ a i and ¯ b i are the average of a and b respectively on the window ω i centered at i. The main computation is a series of box filters. Algorithm 1 shows the pseudo-code [2] of the guided filter, where f mean (·,r) denotes a mean filter with a radius r. 4 http://research.microsoft.com/en-us/um/people/ kahe/eccv10 1 arXiv:1505.00996v1 [cs.CV] 5 May 2015

Transcript of Fast Guided Filter · Fast Guided Filter Kaiming He Jian Sun Microsoft fkahe,[email protected]...

Page 1: Fast Guided Filter · Fast Guided Filter Kaiming He Jian Sun Microsoft fkahe,jiansung@microsoft.com Abstract The guided filter is a technique for edge-aware image filtering. Because

Fast Guided Filter

Kaiming He Jian SunMicrosoft

{kahe,jiansun}@microsoft.com

Abstract The guided filter is a technique for edge-awareimage filtering. Because of its nice visual quality, fast speed,and ease of implementation, the guided filter has witnessedvarious applications in real products, such as image edit-ing apps in phones and stereo reconstruction, and has beenincluded in official MATLAB and OpenCV. In this note, weremind that the guided filter can be simply sped up fromO(N) time to O(N/s2) time for a subsampling ratio s. Ina variety of applications, this leads to a speedup of >10×with almost no visible degradation. We hope this accelera-tion will improve performance of current applications andfurther popularize this filter. Code is released.

1. Introduction

The guided filter [1, 2] is one of several popular algo-rithms for edge-preserving smoothing1. Its time complex-ity is O(N) in the number of pixels N , independent ofthe filter size. The guided filter can effectively suppressgradient-reversal artifacts [1] and produce visually pleas-ing edge profiles. Because of these and other properties, theguided filter has been included in official MATLAB 20142

and OpenCV 3.03 and widely adopted in real products.Despite its popularity and its various third-party imple-

mentations, we notice that a simple but significant speeduphas not been exploited. This speedup strategy was brieflymentioned in [2] for joint upsampling but not for othergeneric scenarios. This method subsamples the filtering in-put image and the guidance image, computes the local lin-ear coefficients, and upsamples these coefficients. The up-sampled coefficients are adopted on the original guidanceimage to produce the output. This method reduces the timecomplexity fromO(N) toO(N/s2) for a subsampling ratios. An actual speedup of >10× can be observed.

In this note, we revisit this speedup method by provid-ing more technical details, visual examples, and publicly

1en.wikipedia.org/wiki/Edge-preserving_smoothing

2www.mathworks.com/help/images/ref/imguidedfilter.html

3docs.opencv.org/master/da/d17/group__ximgproc__filters.html

released code4. This acceleration method is particularly fa-vored for mega-pixel images, for which the filter size is usu-ally set as proportional to the image size in practice. Assuch, a local window on the subsampled images can stillprovide enough pixels for computing local statistics. In ourextensive real applications for image processing, we havefound that this speedup method has almost no visible degra-dation. Considering the growing usage of the guided filterin real products, we hope this simple speedup will improvethe performance of these applications and further popular-ize this filtering technique.

2. MethodWe denote the guidance image, filtering input image, and

filtering output image as I , p and q respectively. The guidedfilter is driven by a local linear model:

qi = akIi + bk,∀i ∈ ωk, (1)

where i is the index of a pixel, and k is the index of a localsquare window ω with a radius r. Given the filtering inputimage p, minimizing the reconstruction error [1] between pand q gives:

ak =

1|ω|

∑i∈ωk

Iipi − µkpk

σ2k + ε

(2)

bk = pk − akµk. (3)

where µk and σk are the mean and variance of I in the win-dow k, and ε is a regularization parameter controlling thedegree of smoothness. The filtering output is computed by:

qi = aiIi + bi, (4)

where ai and bi are the average of a and b respectively onthe window ωi centered at i. The main computation is aseries of box filters. Algorithm 1 shows the pseudo-code[2] of the guided filter, where fmean(·, r) denotes a meanfilter with a radius r.

4http://research.microsoft.com/en-us/um/people/kahe/eccv10

1

arX

iv:1

505.

0099

6v1

[cs

.CV

] 5

May

201

5

Page 2: Fast Guided Filter · Fast Guided Filter Kaiming He Jian Sun Microsoft fkahe,jiansung@microsoft.com Abstract The guided filter is a technique for edge-aware image filtering. Because

Algorithm 1 Guided Filter.1: meanI = fmean(I, r)

meanp = fmean(p, r)corrI = fmean(I. ∗ I, r)corrIp = fmean(I. ∗ p, r)

2: varI = corrI −meanI . ∗meanI

covIp = corrIp −meanI . ∗meanp

3: a = covIp ./ (varI + ε)b = meanp − a. ∗meanI

4: meana = fmean(a, r)meanb = fmean(b, r)

5: q = meana. ∗ I +meanb

Algorithm 2 Fast Guided Filter.1: I ′ = fsubsample(I, s)

p′ = fsubsample(p, s)

r′ = r/s

2: meanI = fmean(I′, r′)

meanp = fmean(p′, r′)

corrI = fmean(I′. ∗ I ′, r′)

corrIp = fmean(I′. ∗ p′, r′)

3: varI = corrI −meanI . ∗meanI

covIp = corrIp −meanI . ∗meanp

4: a = covIp ./ (varI + ε)b = meanp − a. ∗meanI

5: meana = fmean(a, r′)

meanb = fmean(b, r′)

6: meana = fupsample(meana, s)meanb = fupsample(meanb, s)

7: q = meana. ∗ I +meanb

In the above, a and b in Eqn.(4) are two smoothed maps,and the edges and structures in q are mainly given by mod-ulating the image I (thus called guidance). But the majorcomputation of guided filter is for the smoothed maps of aand b, which need not be performed in full-resolution. Al-gorithm 2 describes the subsampled version for Fast GuidedFilter. We subsample (nearest-neighbor or bilinear) the in-put p and the guidance I by a ratio s. All the box filters areperformed on the low-resolution maps, which are the majorcomputation of the guided filter. The two coefficient maps aand b are bilinearly upsampled to the original size. Finally,the output q is still computed by q = aI + b. In this laststep, the image I is the full-resolution guidance that is notdownsampled, and it will still faithfully guide the output.

The computation of all box filters reduces from O(N)complexity to O(N/s2). The last bilinear upsampling andoutput steps are O(N) complex, but only take a small frac-tion of overall computation. In practice, we have observeda speedup of >10× when s = 4 for both MATLAB andcarefully optimized C++ implementation (depending on thenumber of channels). Fig. 1-4 show the visual results ofusing s = 4 for various applications in [1].

image original GF Fast GF (s=4)

Figure 1. Edge-preserving smoothing. r = 4, ε = 0.22. Thesubsampling ratio is s = 4.

image

original GF Fast GF (s=4)

Figure 2. Detail enhancement. r = 16, ε = 0.12. The subsam-pling ratio is s = 4. Top: edge-preserving smoothed images. Bot-tom: enhanced images with ×5 detail.

guide input original GF Fast GF (s=4)

Figure 3. Flash/no-flash denoising. r = 8, ε = 0.022. The sub-sampling ratio is s = 4.

inputguide original GF Fast GF (s=4)

Figure 4. Guided feathering. r = 60, ε = 0.0012. The subsam-pling ratio is s = 4.

References[1] K. He, J. Sun, and X. Tang. Guided image filtering. In ECCV,

pages 1–14. 2010.[2] K. He, J. Sun, and X. Tang. Guided image filtering. TPAMI,

35(6):1397–1409, 2013.

2