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]