CSCE 441: Computer Graphics
Image Filtering
        Jinxiang Chai
                  Outline
Image Processing
  - Gaussian filtering
  - Median filtering
  - Bilateral filtering
                 Filtering
• In signal processing, a filter is a process
  that removes from a signal some
  unwanted component or feature
1D Signal Filtering
2D Image Filtering
2D Image Filtering
            Image Filtering
Image filtering: change range of image
                   g(x) = h(f(x))
     f                              f
                       h
               x                         x
Image warping: change domain of image
                   g(x) = f(h(x))
     f                              f
                       h
               x                         x
            Image Filtering
Image filtering: change range of image
                  g(x) = h(f(x))
     f                             g
                        h
Image warping: change domain of image
                  g(x) = f(h(x))
     f                             g
                        h
Filtering in Spatial Domain
Filtered image       Input image   Filter function
Gaussian Filtering in Spatial
         Domain
                     Discrete approximation to
                    Gaussian function with σ =1.0
Filtering in Spatial Domain
                 Discrete approximation to
                Gaussian function with σ =1.0
Filtering in Spatial Domain
                 Discrete approximation to
                Gaussian function with σ =1.0
Filtering in Spatial Domain
                 Discrete approximation to
                Gaussian function with σ =1.0
   Filtering in Spatial Domain
                                   Discrete approximation to
                                  Gaussian function with σ =1.0
Filtered_I45 =       
                 pixelswindown
                                    X
    Filtering
input       Gaussian filter
               Median Filter
• For each neighbor in image, sliding the
  window
• Sort pixel values
• Set the center pixel to the median
        Median Filter
input        Gaussian filter   Median filter
Median Filter Examples
    input     Median 7X7
Median Filter Examples
   Median 3X3   Median 11X11
Median Filter Examples
                                   Straight edges
                                   kept
   Median 3X3   Median 11X11   Sharp features
                               lost
     Median Filter Properties
Can remove outliers (peppers and salts)
Window size controls size of structure
Preserve some details but sharp corners
  and edges might get lost
Comparison of Mean, Gaussian,
         and Median
     original     Mean with 6 pixels
Comparison of Mean, Gaussian,
         and Median
     original     Gaussian with 6 pixels
Comparison of Mean, Gaussian,
         and Median
     original     Median with 6 pixels
         Common Problems
Mean: blurs image, removes simple noise, no
 details are preserved
          Common Problems
Mean: blurs image, removes simple noise, no
 details are preserved
Gaussian: blurs image, preserves details only for
 small σ.
          Common Problems
Mean: blurs image, removes simple noise, no
 details are preserved
Gaussian: blurs image, preserves details only for
 small σ.
Median: preserves some details, good at removing
 strong noise
          Common Problems
Mean: blurs image, removes simple noise, no
 details are preserved
Gaussian: blurs image, preserves details only for
 small σ.
Median: preserves some details, good at removing
 strong noise
Can we find a filter that not only smooths regions
 but preserves edges?
            Common Problems
Mean: blurs image, removes simple noise, no
 details are preserved
Gaussian: blurs image, preserves details only for
 small σ.
Median: preserves some details, good at removing
 strong noise
Can we find a filter that not only smooths regions
 but preserves edges?
   - yes, bilateral filter
                  Outline
Image Processing
  - Gaussian filtering
  - Median filtering
  - Bilateral filtering
       What Is Bilateral Filter?
Bilateral
 - Affecting or undertaken by two sides equally
Property:
 - Convolution filter
 - Smooth image but preserve edges
 - Operates in the domain and the range of image
Bilateral Filter Example
   Gaussian filter   Bilateral filter
Bilateral Filter Example
   Gaussian filter   Bilateral filter
            1D Graphical Example
                                                      Center
                                                      Sample u
I(p)
                                                   Neighborhood
                                                     p  neighbor (u )
       It is clear that in weighting this neighborhood,
               we would like to preserve the step
       The Weights
I(p)
                                 (u  p) 2
                Wc ( p)  exp(            )
                                   2 c
                                        2
                             p
       Filtered Values
I(p)
               Filtered value
                                        (u  p) 2
                       Wc ( p)  exp(            )
                                          2 c
                                               2
                                    p
       Edges Are Smoothed
I(p)
                Filtered value
                                         (u  p) 2
                        Wc ( p)  exp(            )
                                           2 c
                                                2
                                     p
       What Causes the Problem?
I(p)
                   Filtered value
                                            (u  p) 2
                           Wc ( p)  exp(            )
                                              2 c
                                                   2
                                        p
       What Causes the Problem?
                               Same weights for these
I(p)                                two pixels!!
                   Filtered value
                                            (u  p) 2
                           Wc ( p)  exp(            )
                                              2 c
                                                   2
                                        p
       The Weights
I(p)
                               ( I (u )  I ( p)) 2
              Ws ( p)  exp(                       )
                                       2 s
                                            2
                                    (u  p) 2
                   Wc ( p)  exp(            )
                                      2 c
                                           2
                                  p
               Bilateral Filtering
                                                      Denoise                            Feature
                                                                                        preserving
Bilateral filter
                                         u p
                                                  2
                                                              I u  I  p 
                                                         
                      
                     pN  u 
                                 e       2 c2
                                                      e               2 s2
                                                                                  I ( p)
                                                                                           Normalization
        I ' u                                          2
                                                                      I u  I  p 
                                                 u p
                                                                 
                           
                         pN  u 
                                         e       2 c2
                                                              e           2 s2
            Kernel Properties
        I (u ) 
                   W ( p ) *W ( p ) * I ( p )
                    p   c        s
                     W ( p ) *W ( p )
                        p   c        s
• Per each sample, we can define a ‘Kernel’ that
  averages its neighborhood
• This kernel changes from sample to sample!
• The sum of the kernel entries is 1 due to the
  normalization,
• The center entry in the kernel is the largest,
• Subject to the above, the kernel can take any
  form (as opposed to filters which are
  monotonically decreasing).
                 Filter Parameters
                I (u ) 
                             pN ( u )
                                          Wc ( p) *Ws ( p) * I ( p)
                                  pN ( u )
                                               Wc ( p) *Ws ( p)
As proposed by Tomasi and Manduchi, the filter is
controlled by 3 parameters:
        N(u) – The neighbor size of the filter support,
        c   – The variance of the spatial distances,
        s   – The variance of the value distances,
The filter can be applied for several iterations in order to
further strengthen its edge-preserving smoothing
        Bilateral Filter
input
        Bilateral Filter
input
         Bilateral Filter
input
        Wc
         Bilateral Filter
input
        Wc     Ws
         Bilateral Filter
input
        Wc     Ws    Ws*Wc
         Bilateral Filter
input                        Output
        Wc     Ws    Ws*Wc
Bilateral Filter Results
         Original
Bilateral Filter Results
         σc = 3, σs = 3
Bilateral Filter Results
         σc = 6, σs = 3
Bilateral Filter Results
         σc = 12, σs = 3
Bilateral Filter Results
         σc = 12, σs = 6
Bilateral Filter Results
         σc = 15, σs = 8
       Additional Comments
The bilateral filter is a powerful filter:
   - Can work with any reasonable distances
  function Ws and Wc,
   - Easily extended to higher dimension signals,
  e.g. Images, video, mesh, animation data etc.
   - Easily extended to vectored-signals, e.g. Color
  images, etc.
                Bilateral Mesh Denoising
               [Fleishman et al, siggraph 03]