09/16/11
Thinking in Frequency
Computer Vision
Brown
James Hays
Slides: Hoiem, Efros, and others
Review: questions
1. Write down a 3x3 filter that returns a
positive value if the average value of the 4-
adjacent neighbors is less than the center
and a negative value otherwise
2. Write down a filter that will compute the
gradient in the x-direction:
gradx(y,x) = im(y,x+1)-im(y,x) for each x, y
Slide: Hoiem
Review: questions Filtering Operator
a) _ = D * B A
3. Fill in the blanks: b) A = _ * _
c) F = D * _
d) _ = D * D
B
E
G
F C
H I D
Slide: Hoiem
Today’s Class
• Fourier transform and frequency domain
– Frequency view of filtering
– Hybrid images
– Sampling
Why does the Gaussian give a nice smooth
image, but the square filter give edgy
artifacts?
Gaussian Box filter
Hybrid Images
• A. Oliva, A. Torralba, P.G. Schyns,
“Hybrid Images,” SIGGRAPH 2006
Why do we get different, distance-dependent
interpretations of hybrid images?
Slide: Hoiem
Why does a lower resolution image still make
sense to us? What do we lose?
Image: [Link] Slide: Hoiem
Thinking in terms of frequency
Jean Baptiste Joseph Fourier (1768-1830)
...the manner in which the author arrives at these
had crazy idea (1807): equations is not exempt of difficulties and...his
Any univariate function can be analysis to integrate them still leaves something to
rewritten as a weighted sum of be desired on the score of generality and even
sines and cosines of different rigour.
frequencies.
• Don’t believe it?
– Neither did Lagrange,
Laplace
Laplace, Poisson and
other big wigs
– Not translated into
English until 1878!
• But it’s (mostly) true!
– called Fourier Series Legendre
Lagrange
– there are some subtle
restrictions
A sum of sines
Our building block:
Asin(x
Add enough of them to get
any signal f(x) you want!
Frequency Spectra
• example : g(t) = sin(2πf t) + (1/3)sin(2π(3f) t)
= +
Slides: Efros
Frequency Spectra
Frequency Spectra
= +
=
Frequency Spectra
= +
=
Frequency Spectra
= +
=
Frequency Spectra
= +
=
Frequency Spectra
= +
=
Frequency Spectra
1
= A sin(2 kt )
k 1 k
Example: Music
• We think of music in terms of frequencies at
different magnitudes
Slide: Hoiem
Other signals
• We can also think of all kinds of other signals
the same way
[Link]
Fourier analysis in images
Intensity Image
Fourier Image
[Link]
Signals can be composed
+ =
[Link]
More: [Link]
Fourier Transform
• Fourier transform stores the magnitude and phase at each
frequency
– Magnitude encodes how much signal there is at a particular frequency
– Phase encodes spatial information (indirectly)
– For mathematical convenience, this is often notated in terms of real
and complex numbers
I ( )
1
Amplitude:
2
A R( ) I ( ) 2
Phase: tan
R( )
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]
•The inverse Fourier transform of the product of two
Fourier transforms is the convolution of the two
inverse Fourier transforms
1 1 1
F [ gh] F [ g ] F [ h]
•Convolution in spatial domain is equivalent to
multiplication in frequency domain!
Properties of Fourier Transforms
• Linearity
• 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
See Szeliski Book (3.4)
1 0 -1
Filtering in spatial domain 2 0 -2
1 0 -1
* =
Filtering in frequency domain
FFT
FFT
Inverse FFT
=
Slide: Hoiem
Fourier Matlab demo
FFT in Matlab
• Filtering with fft
im = double(imread(‘…'))/255;
im = rgb2gray(im); % “im” should be a gray-scale floating point image
[imh, imw] = size(im);
hs = 50; % filter half-size
fil = fspecial('gaussian', hs*2+1, 10);
fftsize = 1024; % should be order of 2 (for speed) and include padding
im_fft = fft2(im, fftsize, fftsize); % 1) fft im with padding
fil_fft = fft2(fil, fftsize, fftsize); % 2) fft fil, pad to same size as
image
im_fil_fft = im_fft .* fil_fft; % 3) multiply fft images
im_fil = ifft2(im_fil_fft); % 4) inverse fft2
im_fil = im_fil(1+hs:size(im,1)+hs, 1+hs:size(im, 2)+hs); % 5) remove padding
• Displaying with fft
figure(1), imagesc(log(abs(fftshift(im_fft)))), axis image, colormap jet
Slide: Hoiem
Filtering
Why does the Gaussian give a nice smooth
image, but the square filter give edgy
artifacts?
Gaussian Box filter
Gaussian
Box Filter
Sampling
Why does a lower resolution image still make
sense to us? What do we lose?
Image: [Link]
Subsampling by a factor of 2
Throw away every other row and
column to create a 1/2 size image
Aliasing problem
• 1D example (sinewave):
Source: S. Marschner
Aliasing problem
• 1D example (sinewave):
Source: S. Marschner
Aliasing problem
• Sub-sampling may be dangerous….
• Characteristic errors may appear:
– “Wagon wheels rolling the wrong way in
movies”
– “Checkerboards disintegrate in ray tracing”
– “Striped shirts look funny on color television”
Source: D. Forsyth
Aliasing in video
Slide by Steve Seitz
Aliasing in graphics
Source: A. Efros
Sampling and aliasing
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
Anti-aliasing
Solutions:
• Sample more often
• 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 filter
Algorithm for downsampling by factor of 2
1. Start with image(h, w)
2. Apply low-pass filter
im_blur = imfilter(image, fspecial(‘gaussian’, 7, 1))
3. Sample every other pixel
im_small = im_blur(1:2:end, 1:2:end);
Anti-aliasing
Forsyth and Ponce 2002
Subsampling without pre-filtering
1/2 1/4 (2x zoom) 1/8 (4x zoom)
Slide by Steve Seitz
Subsampling with Gaussian pre-filtering
Gaussian 1/2 G 1/4 G 1/8
Slide by Steve Seitz
Why do we get different, distance-dependent
interpretations of hybrid images?
?
Salvador Dali invented Hybrid Images?
Salvador Dali
“Gala Contemplating the Mediterranean Sea,
which at 30 meters becomes the portrait
of Abraham Lincoln”, 1976
Clues from Human Perception
• Early processing in humans filters for various orientations and scales of
frequency
• Perceptual cues in the mid-high frequencies dominate perception
• When we see an image from far away, we are effectively subsampling it
Early Visual Processing: Multi-scale edge and blob filters
Campbell-Robson contrast sensitivity curve
Hybrid Image in FFT
Hybrid Image Low-passed Image High-passed Image
Perception
Why do we get different, distance-dependent
interpretations of hybrid images?
?
Things to Remember
• Sometimes it makes sense to think of
images and filtering in the frequency
domain
– Fourier analysis
• Can be faster to filter using FFT for
large images (N logN vs. N2 for auto-
correlation)
• Images are mostly smooth
– Basis for compression
• Remember to low-pass before sampling
Practice question
1. Match the spatial domain image to the
Fourier magnitude image
1 2 3 4 5
A C E
D
Next class
• Template matching
• Image Pyramids
• Filter banks and texture
• Denoising, Compression
Questions