Accelerating Spatially Varying Gaussian Filters Jongmin Baek and David E. Jacobs Stanford University Motivation Input Gaussian Filter Spatially Varying Gaussian

Filter Roadmap 1) Accelerating Spatially Varying Gaussian Filters 2) Accelerating Spatially Varying Gaussian Filters 3) Accelerating Spatially Varying Gaussian Filters 4) Applications Gaussian Filters Position Value

Given pairs as input, = exp ( 2 2

2 ) Gaussian Filters Each output value = exp

( 2 2 2 ) Gaussian Filters

is a weighted sum of input values = exp ( 2 2

2 ) Gaussian Filters whose weight is a Gaussian = exp (

2 2 2 ) Gaussian Filters in the space of the associated positions.

= exp ( 2 2 2

) Gaussian Filters: Uses Gaussian Blur =( , ) , =( , , ) Gaussian Filters: Uses Bilateral Filter

=( , , , , ) , =( , ,) Gaussian Filters: Uses Non-local Means Filter =( , , ) =( , , ) Gaussian Filters: Summary Applications Denoising images and meshes

Data fusion and upsampling Abstraction / Stylization Tone-mapping ... Previous work on fast Gaussian Filters Bilateral Grid (Chen, Paris, Durand; 2007) Gaussian KD-Tree (Adams et al.; 2009)

Permutohedral Lattice (Adams, Baek, Davis; 2010) Gaussian Filters: Implementations Summary of Previous Implementations: A separable blur flanked by resampling operations. Exploit the separability of the Gaussian kernel. Spatially Varying Gaussian Filters

2 = N ( ; ) Spatially Invariant = N ( ; )

Spatially varying covariance matrix Spatial Variance in Previous Work Trilateral Filter (Choudhury and Tumblin, 2003) Tilt the kernel of a bilateral filter along the image gradient. Piecewise linear instead of

Piecewise constant model. Spatially Varying Gaussian Filters: Tradeoff Benefits: Can adapt the kernel spatially. Better filtering performance. Cost: No longer separable.

No existing acceleration schemes. Input Bilateral-filtered Trilateral-filtered Acceleration Problem: Spatially varying (thus non-separable) Gaussian filter Existing Tool:

Fast algorithms for spatially invariant Gaussian filters Solution: Re-formulate the problem to fit the tool. Need to obey the piecewise-constant assumption Nave Approach (Toy Example) I LOST THE GAME Input Signal 1 filtered w/ 1 filtered w/ 2 filtered w/ 3

filtered w/ 4 2 1 3 1 4 Desired Kernel

1 1 1 2 3 4 Output Signal Challenge #1

In practice, the # of kernels can be very large. Desired Kernel K(x) Range of Kernels needed Pixel Location x Solution #1 Sample a few kernels and interpolate. Desired Kernel K(x)

K1 Sampled kernels K2 Interpolate result! K3 Pixel Location x Assumptions

Interpolation needs an extra assumption to work: The covariance matrix i is either piecewiseconstant, or smoothly varying. Kernel is spatially varying, but locally spatially invariant. Challenge #2 Runtime scales with the # of sampled kernels.

Desired Kernel K(x) K1 Sampled kernels K2 K3 Filter only some regions of the image with each kernel. (support) Pixel Location x

Defining the Support In this example, x needs to be in the support of K1 & K2. Desired Kernel K(x) K1 K2 K3 Pixel Location x Dilating the Support Desired Kernel K(x) K1

K2 K3 Pixel Location x Algorithm 1) Identify kernels to sample. 2) For each kernel, compute the support needed. 3) Dilate each support. 4) Filter each dilated support with its kernel. 5) Interpolate from the filtered results. Algorithm 1) Identify kernels to sample.

2) For each kernel, compute the support needed. 3) Dilate each support. 4) Filter each dilated support with its kernel. 5) Interpolate from the filtered results. K1 K2 K3 Algorithm 1) Identify kernels to sample. 2) For each kernel, compute the support needed. 3) Dilate each support. 4) Filter each dilated support with its kernel.

5) Interpolate from the filtered results. K1 K2 K3 Algorithm 1) Identify kernels to sample. 2) For each kernel, compute the support needed. 3) Dilate each support. 4) Filter each dilated support with its kernel. 5) Interpolate from the filtered results. K1 K2

K3 Algorithm 1) Identify kernels to sample. 2) For each kernel, compute the support needed. 3) Dilate each support. 4) Filter each dilated support with its kernel. 5) Interpolate from the filtered results. K1 K2 K3 Algorithm

1) Identify kernels to sample. 2) For each kernel, compute the support needed. 3) Dilate each support. 4) Filter each dilated support with its kernel. 5) Interpolate from the filtered results. K1 K2 K3 Applications HDR Tone-mapping Joint Range Data Upsampling

Application #1: HDR Tone-mapping Base Fi lt er e at nu te At

Input HDR Detail Output Tone-mapping Example Bilateral Filter Kernel Sampling Application #2: Joint Range Data Upsampling

Range Finder Data Scene Image te Fil r Sparse Unstructured Noisy Output

Synthetic Example Scene Image Ground Truth Depth Synthetic Example Scene Image Simulated Sensor Data

Synthetic Example : Result Bilateral Filter Kernel Sampling Synthetic Example : Relative Error Bilateral Filter Kernel Sampling 2.41% Mean Relative Error

0.95% Mean Relative Error Real-World Example Scene Image Range Finder Data *Dataset courtesy of Jennifer Dolson, Stanford University Real-World Example: Result

Input Bilateral Naive Kernel Sampling Performance Kernel Sampling

Choudhury and Tumblin (2003) Nave Tonemap 1 5.10 s 41.54 s 312.70 s

Tonemap 2 6.30 s 88.08 s 528.99 s Depth1 Depth2

Kernel Sampling Kernel Sampling (No segmentation) 3.71 s 9.18 s 57.90 s 131.68 s Conclusion

1. A generalization of Gaussian filters Spatially varying kernels Lose the piecewise-constant assumption. 2. Acceleration via Kernel Sampling Filter only necessary pixels (and their support) and interpolate. 3. Applications