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

05 Image Filtering 2023

This document summarizes a lecture on image filtering from a computer vision class taught by Professor Xu Zhao at Shanghai Jiao Tong University. The lecture covers spatial and frequency domain linear filtering techniques. It provides examples of applying a box filter, which averages the values of neighboring pixels, to demonstrate how linear filters combine local image values. The box filter examples show how the output value at each pixel location is the average of that pixel and its neighbors.

Uploaded by

evelyn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views

05 Image Filtering 2023

This document summarizes a lecture on image filtering from a computer vision class taught by Professor Xu Zhao at Shanghai Jiao Tong University. The lecture covers spatial and frequency domain linear filtering techniques. It provides examples of applying a box filter, which averages the values of neighboring pixels, to demonstrate how linear filters combine local image values. The box filter examples show how the output value at each pixel location is the average of that pixel and its neighbors.

Uploaded by

evelyn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 110

Shanghai Jiao Tong University

Instructor: Xu Zhao

Computer Vision Class No.: AU7005


Spring 2023

Xu Zhao @ Shanghai Jiao Tong university

Lecture 5: Image Filtering


Contents

❖ Spatial ltering
๏ Linear filter

๏ Non-linear filter

❖ Frequency perspective
๏ Spatial frequency

๏ Fourier transform
fi

Image formation

Camera Sensor Output Image


Image filtering, why and how?

❖ Motivation
❖ Enhance an image (denoise, resize, etc)
❖ Extract information (texture, edges, etc)
❖ Detect patterns (template matching)
❖ Compute a function of the local neighborhood at each
pixel in the image
❖ Function specified by a “filter” or mask saying how to
combine values from neighbors.

Linear filtering
I(m, n) h(m, n)

h[m, n] = å f [k , l ] I [m + k , n + l ]
k ,l

For a linear system, each output is a linear


combination of all the input values
Example - Box filter

f [× ,× ]
1 1 1

1 1 1

1 1 1

Slide credit: David Lowe (UBC)


Example - Box filter
h[m, n] = å f [k , l ] I [m + k , n + l ]
I [.,.] k ,l h[.,.]
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
0
0 0 0 90 90 90 90 90 0 0
f [× ,× ]
0 0 0 90 90 90 90 90 0 0
1 1 1

0 0 0 90 90 90 90 90 0 0 1 1 1

1 1 1
0 0 0 90 0 90 90 90 0 0

0 0 0 90 90 90 90 90 0 0

0 0 0 0 0 0 0 0 0 0

0 0 90 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

m =1, n = 1
k,l = [-1,0,1]

Example - Box filter


h[m, n] = å f [k , l ] I [m + k , n + l ]
I [.,.] k ,l h[.,.]
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
10
0

0 0 0 90 90 90 90 90 0 0
f [× ,× ]
0 0 0 90 90 90 90 90 0 0
1 1 1

0 0 0 90 90 90 90 90 0 0 1 1 1

1 1 1
0 0 0 90 0 90 90 90 0 0

0 0 0 90 90 90 90 90 0 0

0 0 0 0 0 0 0 0 0 0

0 0 90 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

m =2, n = 1
k,l = [-1,0,1]

Example - Box filter


h[m, n] = å f [k , l ] I [m + k , n + l ]
I [.,.] k ,l h[.,.]
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
20
0 10

0 0 0 90 90 90 90 90 0 0
f [× ,× ]
0 0 0 90 90 90 90 90 0 0
1 1 1

0 0 0 90 90 90 90 90 0 0 1 1 1

1 1 1
0 0 0 90 0 90 90 90 0 0

0 0 0 90 90 90 90 90 0 0

0 0 0 0 0 0 0 0 0 0

0 0 90 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

m =3, n = 1
k,l = [-1,0,1]

Example - Box filter


h[m, n] = å f [k , l ] I [m + k , n + l ]
I [.,.] k ,l h[.,.]
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
30
0 10 20

0 0 0 90 90 90 90 90 0 0
f [× ,× ]
0 0 0 90 90 90 90 90 0 0
1 1 1

0 0 0 90 90 90 90 90 0 0 1 1 1

1 1 1
0 0 0 90 0 90 90 90 0 0

0 0 0 90 90 90 90 90 0 0

0 0 0 0 0 0 0 0 0 0

0 0 90 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

m =4, n = 1
k,l = [-1,0,1]

Example - Box filter


h[m, n] = å f [k , l ] I [m + k , n + l ]
I [.,.] k ,l h[.,.]
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
30
0 10 20 30

0 0 0 90 90 90 90 90 0 0
f [× ,× ]
0 0 0 90 90 90 90 90 0 0
1 1 1

0 0 0 90 90 90 90 90 0 0 1 1 1

1 1 1
0 0 0 90 0 90 90 90 0 0

0 0 0 90 90 90 90 90 0 0

0 0 0 0 0 0 0 0 0 0

0 0 90 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

m =5, n = 1
k,l = [-1,0,1]

Example - Box filter


h[m, n] = å f [k , l ] I [m + k , n + l ]
I [.,.] k ,l h[.,.]
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
30
0 10 20 30

0 0 0 90 90 90 90 90 0 0
f [× ,× ]
0 0 0 90 90 90 90 90 0 0
1 1 1

0 0 0 90 90 90 90 90 0 0 1 1 1

1 1 1
0 0 0 90 0 90 90 90 0 0


0 0 0 90 90 90 90 90 0 0

0 0 0 0 0 0 0 0 0 0

0 0 90 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

m =4, n = 6
k,l = [-1,0,1]

Example - Box filter


h[m, n] = å f [k , l ] I [m + k , n + l ]
I [.,.] k ,l h[.,.]
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 10 20 30 30

0 0 0 90 90 90 90 90 0 0
f [× ,× ]
0 0 0 90 90 90 90 90 0 0
1 1 1

1 1 1

0 0 0 90 90 90 90 90 0 0
1 1 1
0 0 0 90 0 90 90 90 0 0

0 0 0 90 90 90 90 90 0 0 50

0 0 0 0 0 0 0 0 0 0

0 0 90 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

m =6, n = 4
k,l = [-1,0,1]

Example - Box filter


h[m, n] = å f [k , l ] I [m + k , n + l ]
I [.,.] k ,l h[.,.]
0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 10 20 30 30 30 20 10

0 0 0 90 90 90 90 90 0 0
f [× ,× ] 0 20 40 60 60 60 40 20

0 0 0 90 90 90 90 90 0 0 0 30 60 90 90 90 60 30
1 1 1

0 0 0 90 90 90 90 90 0 0 1 1 1 0 30 50 80 80 90 60 30
1 1 1
0 0 0 90 0 90 90 90 0 0 0 30 50 80 80 90 60 30

0 0 0 90 90 90 90 90 0 0 0 20 30 50 50 60 40 20

0 0 0 0 0 0 0 0 0 0 10 20 30 30 30 30 20 10

0 0 90 0 0 0 0 0 0 0 10 10 10 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0
Box filter

❖ What does it do? f [× ,× ]


❖ Replaces each pixel with an
1 1 1
average of its neighborhood
1 1 1
❖ Achieve smoothing effect
(remove sharp features) 1 1 1

Smoothing with box filter

f [× ,× ]
1 1 1

1 1 1

1 1 1
Integral image
❖ Don’t forget to use integral image to improve computational
efficiency for utilization of bunch of box filters.
3.2 Linear filtering 121

3 2 7 2 3 3 5 12 14 17 3 5 12 14 17
1 5 1 3 4 4 11 19 24 31 4 11 19 24 31
5 1 3 5 1 9 17 28 38 46 9 17 28 38 46
4 3 2 1 6 13 24 37 48 62 13 24 37 48 62
2 4 1 4 8 15 30 44 59 81 15 30 44 59 81

(a) S = 24 (b) s = 28 (c) S = 24

Figure 3.17 Summed area tables: (a) original image; (b) summed area table; (c) computation
of area sum. Each value in the summed area table s(i, j) (red) is computed recursively from
Correlation and Convolution

❖ 2D correlation: ❖ Convolution is the same as


correlation with a 180°
h[m, n] = å f [k , l ] I [m + k , n + l ] rotated lter kernel.
k ,l
❖ Correlation and
❖ 2D convolution: convolution are identical
when the lter kernel is
h[m, n] = å f [k , l ] I [m - k , n - l ] symmetric.
k ,l
fi
fi

Key properties of linear filters


❖ Linearity:

imfilter(I, f1+f2)=imfilter(I,f1)+imfilter(I,f2)

❖ Shift invariance: same behavior given intensities


regardless of pixel location m,n

imfilter(I,shift(f)) = shift(imfilter(I,f))

❖ Any linear, shift-invariant operator can be represented as a


convolution.

Convolution properties
❖ 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)
❖ Correlation is _not_ associative (rotation effect)
❖ 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

Source: S. Lazebnik

Correlation for template matching


Let’s see if we can use correlation to ‘ nd’ the parts of the image
that look like the lter.

D I = correlate2d( D, f, ‘same’ )

Correct
location
+

Response peak

f It does’t work. Why?

[Thanks to Robert Collins @ Penn State]


fi
fi
Correlation for template matching
D
❖ It does’t work. Why?

h[m, n] = å f [k , l ] I [m + k , n + l ]
k ,l

❖ As brightness in I increases,
the response in h will
increase, as long as f is
positive.
f
❖ Overall brighter regions will
give higher correlation
response.

Correlation for template matching


❖ Normalization correlation. Subtract the mean so zero centered.
Score is higher only when dark parts match and when light parts
match.
❖ This is a great way to build simple, fast pattern detectors that require
little computation.

I2 = correlate2d( D2, f2, ‘same’ )

D2 = D – np.mean(D) f2 = f – np.mean(f)
Correlation for template matching

❖ What happens with convolution?

I2 = convolve2d ( D2, f2, ‘same’ )

D2 = D – np.mean(D) f2 = f – np.mean(f)
Correlation for template matching

Forsyth and Ponce


Gaussian filters
x

0.003 0.013 0.022 0.013 0.003


0.013 0.059 0.097 0.059 0.013
y 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

x y 5 x 5, s = 1

Weight contributions of neighboring pixels by nearness


Smoothing with Gaussian filter
Smoothing with box filter
Gaussian filters
❖ Remove “high-frequency” components from the image (low-pass filter)
❖ Images become more smooth
❖ Gaussian convolved with Gaussian is another Gaussian
❖ So can smooth with small-width kernel, repeat, and get same result
as larger-width kernel would have
❖ Convolving twice 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
Gaussian filters
❖ What parameters matter here?
❖ Size of kernel or mask

σ = 5 with 10 x 10 kernel σ = 5 with 30 x 30 kernel


Gaussian filters
❖ What parameters matter here?
❖ Variance of Gaussian: determines extent of smoothing

σ = 5 with 10 x 10 kernel σ = 5 with 30 x 30 kernel

Source: K. Grauman
Gaussian filters: Separability

Source: D. Lowe
Separability
2D convolution
(center location only)

The lter factors


into a product of 1D
lters:

Perform convolution
* =
along rows, followed by
convolution
along the remaining *
=

column:
Source: K. Grauman
fi
fi






Separability

❖ Why is separability useful in practice?


❖ MxN image, PxQ filter
❖ 2D convolution: ~MNPQ      multiply-adds
❖ Separable 2D:    ~MN(P+Q) multiply-adds
❖ Speed up = PQ/(P+Q)
❖ 9x9 filter = ~4.5x faster

Practical matters
❖ 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

Convolution in Convolutional Neural Networks

❖ Convolution is the basic operation in CNNs


❖ Learning convolution kernels allows us to learn which
`features’ provide useful information in images
Non-linear filters
❖ Median filter
❖ Operates over a window
by selecting the median
intensity in the window.
❖ ‘Rank’ filter as based on
ordering of gray levels
❖ E.G., min, max, range
filters

Non-linear filters
❖ Median filter
❖ Operates over a window by selecting the median
intensity in the window.
❖ ‘Rank’ filter as based on ordering of gray levels
❖ E.G., min, max, range filter
❖ Very efficient to remove salt-and–pepper noise
❖ Variants: α-trimmed mean, weighted median

Salt and
pepper noise Median
filtered

Plots of a row of the image

Source: M. Hebert
Non-linear filters
❖ Median filter
❖ Median filter is edge preserving

Source: K. Grauman

Frequency perspective

What can you see?

Salvador Dali (萨尔瓦多·达利),1976


Hybrid Images

Aude Oliva & Antonio Torralba & Philippe G Schyns, SIGGRAPH 2006
Hybrid Images

Aude Oliva & Antonio Torralba & Philippe G Schyns, SIGGRAPH 2006
Hybrid Images

Aude Oliva & Antonio Torralba & Philippe G Schyns, SIGGRAPH 2006
Aude Oliva & Antonio Torralba & Philippe G Schyns, SIGGRAPH 2006
Sampling
❖ Why does a lower resolution image still make sense to us? 
What do we lose?

Source: James Tompkin


Subsampling

❖ Subsampling by a factor of 2

Throw away every other row


and column to create a 1/2 size
image Source: James Tompkin
Figure from David Forsyth
1/2

1/4 2x subsample 1/8 4x subsample

Steve Seitz
Sampling and aliasing
Sampling and aliasing
1D example (sinewave):

Source: S. Marschner
Sampling and aliasing
1D example (sinewave):

Source: S. Marschner
Aliasing problem
❖ Sub-sampling may be dangerous….
❖ Characteristic errors may appear:
❖ “car wheels rolling the wrong
way in movies
❖ “checkerboards disintegrate in
ray tracing”
❖ “striped shirts look funny on
color television”
❖ Moiré patterns

Source: James Tompkin


Aliasing and Moiré patterns


❖ Moire pattern, known as the moire effect
❖ Useful in metrology, strain analysis or even document authentication and anti-
counterfeiting. In other situations moire patterns may be unwanted.
❖ This visual perception occurs when a fine pattern on your subject meshes with
the pattern on the imaging chip of your camera. Difference in frequency.

Aliasing in video

Slide by Steve Seitz


Nyquist-Shannon Sampling Theorem
❖ When sampling a signal at discrete intervals, the sampling frequency must
be ≥ 2 × fmax
❖ fmax = max frequency of the input signal
❖ This will allows to reconstruct the original perfectly from the sampled
version

v v v good

bad
How to fix aliasing?

❖ Sample more often (better sensor)


❖ Get rid of all frequencies that are greater than half the
new sampling frequency
❖ Will lose information
❖ But it’s better than aliasing
❖ Apply a smoothing (low pass) filter

Hays

Anti-aliasing

Forsyth and Ponce 2002


Algorithm for downsampling by factor of 2

❖ Start with image(h, w)


❖ Apply low-pass filter:

im_blur = imfilter( image, fspecial(‘gaussian’, 7, 1) )


❖ Sample every other pixel

im_small = im_blur( 1:2:end, 1:2:end )


1/2 1/4 (2x subsample) 1/8 (4x subsample)

Gaussian 1/2 G 1/4 G 1/8

Subsampling with Gaussian pre- ltering


fi
Human spatial frequency sensitivity
Why do we get different, distance-dependent
interpretations of hybrid images?

Hays
Clues from Human Perception
Early processing in humans lters for orientations and scales of frequency.

Early Visual Processing: Multi-scale edge and blob lters


Source: James Tompkin
fi
fi
Campbell-Robson contrast sensitivity curve v

Perceptual cues in the mid-high frequencies dominate perception.


Contrast decrease (log)

Frequency increase (log)


Source: James Tompkin
Salvador Dali
“Gala Contemplating the Mediterranean Sea,
which at 30 meters becomes the portrait
of Abraham Lincoln”, 1976

Fourier Transforms

❖ The tool manipulating frequency. Sampling, De-noise,


filtering…
❖ Linear, space invariant operations are just diagonal
operations in the frequency domain
❖ Linear convolution is multiplication in the frequency
domain

Fourier series
❖ A bold idea (1807):
❖ Any univariate function can
be rewritten as a weighted
sum of sines and cosines of
different frequencies.
"

! "! cos('() + +! sin('()


!#$

❖ Add enough of them to


get any signal g(t) you
want!
Jean Baptiste Joseph Fourier (1768-1830)

t = [0,2], f = 1

g(t) = (1)sin(2πf t) + (1/3)sin(2π(3f) t)

g = +

t Coefficient

Slides: Efros
Wikipedia-Fourier transform
Sine/cosine and circle

Wikipedia - Unit circle


Square wave (approx.)

Mehmet E. Yavuz
Square wave (approx.)

Mehmet E. Yavuz
One series in each of x and y

Generative Art, じゃがりきん, Video, 2018


Amplitude-phase form
❖ Add phase term to shift
cos values into sin values

"
! "! sin('( + ∅! )
!#$

Phase

[Peppergrower; Wikipedia]


Amplitude-phase form
❖ Add component of infinite frequency
‣ = mean of signal over period

‣ = value around which signal fluctuates

# !!
!!
+ $ !" sin()* + ∅" ) 2
2
"$%

Average of signal
over period

Amplitude-phase form

[Peppergrower; Wikipedia]

Fourier Transform
❖ Stores the amplitude and phase at each frequency:
❖ For mathematical convenience, this is often
notated in terms of real and complex numbers
❖ Related by Euler’s formula
❖ Amplitude encodes how much signal there is at a
particular frequency

A = ± Re(j ) 2 + Im(j ) 2

❖ Phase encodes spatial information (indirectly)

Im(j )
f = tan-1

Re(j )

Fourier analysis in images


Spatial domain images

Fourier decomposition amplitude images


http://sharp.bu.edu/~slehar/fourier/fourier.html#filtering More: http://www.cs.unm.edu/~brayer/vision/fourier.html
Signals can be composed
Spatial domain images

+ =

Fourier decomposition amplitude images


http://sharp.bu.edu/~slehar/fourier/fourier.html#filtering More: http://www.cs.unm.edu/~brayer/vision/fourier.html
Natural images
Natural image Fourier decomposition amplitude image

① What does it mean to be at pixel x,y?


② What does it mean to be more or less bright in the Fourier decomposition
image?
Source: James Tompkin

Amplitude / Phase

❖ Amplitude tells you “how


much”
❖ Phase tells you “where”
❖ Translate the image?
❖ Amplitude unchanged
❖ Adds a constant to the
phase.
[Peppergrower; Wikipedia]

Amplitude / Phase

Efros
Amplitude / Phase
Amplitude Phase

Efros
Amplitude / Phase

Efros
Amplitude / Phase

Amplitude Phase

Efros
Amplitude / Phase
Cheebra
Zebra phase, cheetah amplitude Cheetah phase, zebra amplitude

Efros
Amplitude / Phase
❖ The frequency amplitude of natural images are quite
similar
❖ Heavy in low frequencies, falling off in high frequencies
❖ Will any image be like that, or is it a property of the
world we live in?
❖ Most information in the image is carried in the phase, not
the amplitude
❖ Not quite clear why
Efros
Properties of Fourier Transforms

❖ Linearity
F[ax(t ) + by (t )] = a F[ x(t )] + b F[ y (t )]

❖ Fourier transform of a real signal is symmetric about the


origin
❖ The energy of the signal is the same as the energy of its
Fourier transform

The Convolution Theorem

❖ The Fourier transform of the convolution of two


functions is the product of their Fourier transforms
F[ g * h] = F[ g ] F[ h]

❖ Convolution in spatial domain is equivalent to


multiplication in frequency domain
-1
g * h = F [F[ g ] F[h]]

Filtering in spacial domain


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

* =
Convolution

Hays
Filtering in frequency domain

Element-wise
product

Fourier Fourier
transform transform
Inverse
Fourier transform

Slide: Hoiem
Frequency manipulation
Low and high pass filtering
Removing frequency bands

Brayer
Why does the Gaussian filter give a nice smooth image, but
the square filter give edgy artifacts?

Gaussian Box filter


Why do we have those lines in the image?

❖ Sharp edges in the image need all frequencies to


represent them.

¥
1
= Aå sin(2p kt )
k =1 k
Box filter / sinc filter duality
❖ What is the spatial representation of the hard cutoff (box) in the
frequency domain?
❖ http://madebyevan.com/dft/
Box filter Sinc filter sinc(x) = sin(x) / x

Spatial Domain Frequency Domain


Frequency Domain Spatial Domain
Gaussian filter duality
❖ Fourier transform of one Box filter (spatial)
Frequency domain
magnitude
Gaussian is another Gaussian
(with inverse variance).
❖ Why is this useful?
❖ Smooth degradation in
frequency components Gaussian filter Frequency domain
(spatial) magnitude

❖ No sharp cut-off
❖ No negative values
❖ Never zero (infinite extent)
Source: James Tompkin
Ringing artifacts -> ‘Gibbs effect’
Where infinite series can never be reached
Gaussian Box filter

Source: James Tompkin


Is convolution invertible?

❖ If convolution is just multiplication in the Fourier


domain, isn’t deconvolution just division?
❖ Sometimes, it clearly is invertible (e.g. a convolution
with an identity filter)
❖ In one case, it clearly isn’t invertible (e.g. convolution
with an all zero filter)
❖ What about for common filters like a Gaussian?

Convolution

* =

FFT FFT iFFT

.x =

Hays
Deconvolution

iFFT FFT FFT

= ./

Hays
But under more realistic conditions
Random noise, .000001 magnitude

iFFT FFT FFT

= ./

Hays
But under more realistic conditions
Random noise, .0001 magnitude

iFFT FFT FFT

= ./

Hays
But under more realistic conditions
Random noise, .001 magnitude

iFFT FFT FFT

= ./

Hays
Deconvolution is hard.

❖ Active research area.


❖ Even if you know the filter (non-blind deconvolution), it is still hard
and requires strong regularization to counteract noise.
❖ If you don’t know the filter (blind deconvolution), then it is harder
still.
Earl F. Glynn
Earl F. Glynn

You might also like