0% found this document useful (0 votes)
16 views

Lec05 Filter

This presentation discusses linear filtering in image processing, including techniques for noise reduction and image smoothing. It introduces the concept of convolution, filter kernels, and properties of linear filtering. It also explains the effects of different filters, such as Gaussian filters, and the challenges of applying them near image edges

Uploaded by

cap.cafu
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Lec05 Filter

This presentation discusses linear filtering in image processing, including techniques for noise reduction and image smoothing. It introduces the concept of convolution, filter kernels, and properties of linear filtering. It also explains the effects of different filters, such as Gaussian filters, and the challenges of applying them near image edges

Uploaded by

cap.cafu
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 42

Linear filtering

Motivation: Noise reduction


Given a camera and a still scene, how can you
reduce noise?

Take lots of images and average them!


What’s the next best thing?
Source: S. Seitz
Moving average
• Let’s replace each pixel with a weighted
average of its neighborhood
• The weights are called the filter kernel
• What are the weights for the average of a
3x3 neighborhood?

1 1 1
1 1 1
1 1 1

“box filter”
Source: D. Lowe
Defining convolution
• Let f be the image and g be the kernel. The
output of convolving f with g is denoted f * g.

( f  g )[m, n]  f [m  k , n  l ] g[k , l ]
k ,l

• Convention: kernel is “flipped”


• MATLAB: conv2 vs. filter2 (also imfilter)
Source: F. Durand
Key properties
• Linearity: filter(f1 + f2 ) = filter(f1) + filter(f2)
• Shift invariance: same behavior regardless of
pixel location: filter(shift(f)) = shift(filter(f))
• Theoretical result: any linear shift-invariant
operator can be represented as a convolution
Properties in more detail
• Commutative: a * b = b * a
• Conceptually no difference between filter and signal
• Associative: a * (b * c) = (a * b) * c
• Often apply several filters one after another: (((a * b1) * b2) * b3)
• This is equivalent to applying one filter: a * (b1 * b2 * b3)

• Distributes over addition: a * (b + c) = (a * b) + (a * c)


• Scalars factor out: ka * b = a * kb = k (a * b)
• Identity: unit impulse e = […, 0, 0, 1, 0, 0, …],
a*e=a
Annoying details
What is the size of the output?
• MATLAB: filter2(g, f, shape)
• shape = ‘full’: output size is sum of sizes of f and g
• shape = ‘same’: output size is same as f
• shape = ‘valid’: output size is difference of sizes of f and g

full same valid


g g g g
g g

f f f

g g g
g g g
Annoying details
What about near the edge?
• the filter window falls off the edge of the image
• need to extrapolate
• methods:
– clip filter (black)
– wrap around
– copy edge
– reflect across edge

Source: S. Marschner
Annoying details
What about near the edge?
• the filter window falls off the edge of the image
• need to extrapolate
• methods (MATLAB):
– clip filter (black): imfilter(f, g, 0)
– wrap around: imfilter(f, g, ‘circular’)
– copy edge: imfilter(f, g, ‘replicate’)
– reflect across edge: imfilter(f, g, ‘symmetric’)

Source: S. Marschner
Practice with linear filters

0 0 0
0 1 0 ?
0 0 0

Original

Source: D. Lowe
Practice with linear filters

0 0 0
0 1 0
0 0 0

Original Filtered
(no change)

Source: D. Lowe
Practice with linear filters

0 0 0
0 0 1 ?
0 0 0

Original

Source: D. Lowe
Practice with linear filters

0 0 0
0 0 1
0 0 0

Original Shifted left


By 1 pixel

Source: D. Lowe
Practice with linear filters

?
1 1 1
1 1 1
1 1 1

Original

Source: D. Lowe
Practice with linear filters

1 1 1
1 1 1
1 1 1

Original Blur (with a


box filter)

Source: D. Lowe
Practice with linear filters

0 0 0 1 1 1
0 2 0
0 0 0
- 1 1 1
1 1 1
?
(Note that filter sums to 1)
Original

Source: D. Lowe
Practice with linear filters

0 0 0 1 1 1
0 2 0
0 0 0
- 1 1 1
1 1 1

Original Sharpening filter


- Accentuates differences
with local average

Source: D. Lowe
Sharpening

Source: D. Lowe
Smoothing with box filter revisited
• Smoothing with an average actually doesn’t compare
at all well with a defocused lens
• Most obvious difference is that a single point of light
viewed in a defocused lens looks like a fuzzy blob; but
the averaging process would give a little square

Source: D. Forsyth
Smoothing with box filter revisited
• Smoothing with an average actually doesn’t compare
at all well with a defocused lens
• Most obvious difference is that a single point of light
viewed in a defocused lens looks like a fuzzy blob; but
the averaging process would give a little square
• Better idea: to eliminate edge effects, weight
contribution of neighborhood pixels according to their
closeness to the center, like so:

“fuzzy blob”
Gaussian Kernel

0.003 0.013 0.022 0.013 0.003


0.013 0.059 0.097 0.059 0.013
0.022 0.097 0.159 0.097 0.022
0.013 0.059 0.097 0.059 0.013
0.003 0.013 0.022 0.013 0.003

5 x 5,  = 1

• Constant factor at front makes volume sum to 1 (can be


ignored, as we should re-normalize weights to sum to 1 in
any case)
Source: C. Rasmussen
Choosing kernel width
• Gaussian filters have infinite support, but
discrete filters use finite kernels

Source: K. Grauman
Choosing kernel width
• Rule of thumb: set filter half-width to about

Example: Smoothing with a Gaussian
Mean vs. Gaussian filtering
Gaussian filters
• Remove “high-frequency” components from
the image (low-pass filter)
• Convolution with self is another Gaussian
• So can smooth with small-width kernel, repeat, and get
same result as larger-width kernel would have
• Convolving two times with Gaussian kernel of width σ is
same as convolving once with kernel of width σ√2
• Separable kernel
• Factors into product of two 1D Gaussians

Source: K. Grauman
Separability of the Gaussian filter

Source: D. Lowe
Separability example

2D convolution
(center location only)

The filter factors


into a product of 1D
filters:

Perform convolution
along rows: * =

Followed by convolution =
along the remaining column: *

Source: K. Grauman
Separability
• Why is separability useful in practice?
Review: Linear filtering
• Properties of convolution
• Properties of Gaussian kernels
Noise
• Salt and pepper
noise: contains
random occurrences
of black and white
pixels
• Impulse noise:
contains random
occurrences of white
pixels
• Gaussian noise:
variations in
intensity drawn from
a Gaussian normal
distribution

Source: S. Seitz
Gaussian noise
• Mathematical model: sum of many
independent factors
• Good for small standard deviations
• Assumption: independent, zero-mean noise

Source: M. Hebert
Reducing Gaussian noise

Smoothing with larger standard deviations suppresses noise,


but also blurs the image
Reducing salt-and-pepper noise
3x3 5x5 7x7

What’s wrong with the results?


Alternative idea: Median filtering
• A median filter operates over a window by
selecting the median intensity in the window

• Is median filtering linear?


Source: K. Grauman
Median filter
• What advantage does median filtering have
over Gaussian filtering?
• Robustness to outliers

Source: K. Grauman
Median filter
Salt-and-pepper noise Median filtered

MATLAB: medfilt2(image, [h w])


Source: M. Hebert
Median vs. Gaussian filtering
3x3 5x5 7x7

Gaussian

Median
Sharpening revisited
What does blurring take away?

– =

original smoothed (5x5) detail

Let’s add it back:

+α =

original detail sharpened


Unsharp mask filter
f   ( f  f  g ) (1   ) f   f  g  f  ((1   )e  g )

image blurred unit impulse


image (identity)

unit impulse
Gaussian Laplacian of Gaussian
Application: Hybrid Images

A. Oliva, A. Torralba, P.G. Schyns,


“Hybrid Images,” SIGGRAPH 2006
Application: Hybrid Images

A. Oliva, A. Torralba, P.G. Schyns,


“Hybrid Images,” SIGGRAPH 2006

You might also like