Upload
angel-gain
View
219
Download
4
Embed Size (px)
Citation preview
CS 691 Computational Photography
Instructor: Gianfranco DorettoFrequency Domain
Overview
• Frequency domain analysis• Sampling and reconstruction
Linear image transformations
• In analyzing images, it’s often useful to make a change of basis.
Fourier transform, or Wavelet transform, orSteerable pyramid transform
fUF
Vectorized image
transformed image
Self-inverting transforms
FU
FUf
1
Same basis functions are used for the inverse transform
U transpose and complex conjugate
Salvador Dali“Gala Contemplating the Mediterranean Sea, which at 30 meters becomes the portrait of Abraham Lincoln”, 1976
A nice set of basis
This change of basis has a special name…
Teases away fast vs. slow changes in the image.
Jean Baptiste Joseph Fourier (1768-1830)
had crazy idea (1807):Any univariate function can be rewritten as a weighted sum of sines and cosines of different frequencies.
• Don’t believe it? – Neither did
Lagrange, Laplace, Poisson and other big wigs
– Not translated into English until 1878!
• But it’s (mostly) true!– called Fourier
Series– there are some
subtle restrictions
...the manner in which the author arrives at these equations is not exempt of difficulties and...his
analysis to integrate them still leaves something to be desired on the score of generality and even rigour.
Laplace
LagrangeLegendre
A sum of sinesOur building block:
Add enough of them to get any signal f(x) you want!
xAsin(
Frequency Spectra
• example : g(t) = sin(2πf t) + (1/3)sin(2π(3f) t)
= +
Frequency Spectra
= +
=
Frequency Spectra
= +
=
Frequency Spectra
= +
=
Frequency Spectra
= +
=
Frequency Spectra
= +
=
Frequency Spectra
= 1
1sin(2 )
k
A ktk
Frequency Spectra
Fourier basis for image analysis
Intensity Image
Frequency Spectra
http://sharp.bu.edu/~slehar/fourier/fourier.html#filtering
Signals can be composed
+ =
http://sharp.bu.edu/~slehar/fourier/fourier.html#filteringMore: http://www.cs.unm.edu/~brayer/vision/fourier.html
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
22 )()( IRA )(
)(tan 1
R
IAmplitude:
Euler’s formula:
Phase:
Computing the Fourier Transform
Continuous
Discrete
k = -N/2..N/2
Fast Fourier Transform (FFT): NlogN
Fourier Transform pairs
Phase and Magnitude
• Fourier transform of a real function is complex– difficult to plot,
visualize– instead, we can think of
the phase and magnitude of the transform
• Phase is the phase of the complex transform
• Magnitude is the magnitude of the complex transform
• Curious fact– all natural images have
about the same magnitude transform
– hence, phase seems to matter, but magnitude largely doesn’t
• Demonstration– Take two pictures, swap
the phase transforms, compute the inverse - what does the result look like?
This is the magnitude transform of the cheetah pic
This is the phase transform of the cheetah pic
This is the magnitude transform of the zebra pic
This is the phase transform of the zebra pic
Reconstruction with zebra phase, cheetah magnitude
Reconstruction with cheetah phase, zebra magnitude
The Convolution Theorem
• The Fourier transform of the convolution of two functions is the product of their Fourier transforms
• The inverse Fourier transform of the product of two Fourier transforms is the convolution of the two inverse Fourier transforms
• 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)
Filtering in spatial domain
-101
-202
-101
* =
Filtering in frequency domain
FFT
FFT
Inverse FFT
=
Play with FFT in Matlab• Filtering with fft
• Displaying with fft
im = ... % “im” should be a gray-scale floating point image[imh, imw] = size(im);fftsize = 1024; % should be order of 2 (for speed) and include paddingim_fft = fft2(im, fftsize, fftsize); % 1) fft im with paddinghs = 50; % filter half-sizefil = fspecial('gaussian', hs*2+1, 10); fil_fft = fft2(fil, fftsize, fftsize); % 2) fft fil, pad to same size as imageim_fil_fft = im_fft .* fil_fft; % 3) multiply fft imagesim_fil = ifft2(im_fil_fft); % 4) inverse fft2im_fil = im_fil(1+hs:size(im,1)+hs, 1+hs:size(im, 2)+hs); % 5) remove padding
figure(1), imagesc(log(abs(fftshift(im_fft)))), axis image, colormap jet
Convolution versus FFT
• 1-d FFT: O(NlogN) computation time, where N is number of samples.
• 2-d FFT: 2N(NlogN), where N is number of pixels on a side
• Convolution: K N2, where K is number of samples in kernel
• Say N=210, K=100. 2-d FFT: 20 220, while convolution gives 100 220
Why is the Fourier domain particularly useful?
• It tells us the effect of linear convolutions.
• There is a fast algorithm for performing the DFT, allowing for efficient signal filtering.
• The Fourier domain offers an alternative domain for understanding and manipulating the image.
Analysis of our simple filters
original0
Pixel offsetco
effi
cien
t
1.0
Filtered(no change)
1
][][1
0
M
k
M
kmi
ekfmF
0
1.0 constant
Analysis of our simple filters
0Pixel offset
coef
fici
ent
original
1.0
shifted
M
mi
M
k
M
kmi
e
ekfmF
][][1
0
0
1.0
Constant magnitude, linearly shifted phase
Analysis of our simple filters
0Pixel offset
coef
fici
ent
original
0.3
blurred
M
m
ekfmFM
k
M
kmi
cos213
1
][][1
0 Low-pass filter
0
1.0
Analysis of our simple filters
original
0
2.0
0
0.33
sharpened
M
m
ekfmFM
k
M
kmi
cos213
12
][][1
0 high-pass filter
0
1.0
2.3
Playing with the DFT of an image
Can change spectrum, then reconstruct
Low and High Pass filtering
Why does the Gaussian give a nice smooth image, but the square filter give edgy
artifacts?
Gaussian Box filter
Gaussian Filter
Box Filter
Overview
• Frequency domain analysis• Sampling and reconstruction
Sampling and Reconstruction
Sampled representations
• How to store and compute with continuous functions?
• Common scheme for representation: samples– write down the function’s values at many
points
[FvD
FH fi
g.14
.14b
/ W
olbe
rg]
Reconstruction
• Making samples back into a continuous function– for output (need realizable method)– for analysis or processing (need mathematical method)– amounts to “guessing” what the function did in between
[FvD
FH fi
g.14
.14b
/ W
olbe
rg]
1D Example: Audio
low highfrequencies
Sampling in digital audio
• Recording: sound to analog to samples to disc
• Playback: disc to samples to analog to sound again– how can we be sure we are filling in the gaps
correctly?
Sampling and Reconstruction
• Simple example: a sign wave
Undersampling
• What if we “missed” things between the samples?
• Simple example: undersampling a sine wave– unsurprising result: information is lost
Undersampling
• What if we “missed” things between the samples?
• Simple example: undersampling a sine wave– unsurprising result: information is lost– surprising result: indistinguishable from lower
frequency
Undersampling
• What if we “missed” things between the samples?
• Simple example: undersampling a sine wave– unsurprising result: information is lost– surprising result: indistinguishable from lower
frequency– also was always indistinguishable from higher
frequencies– aliasing: signals “traveling in disguise” as other
frequencies
Aliasing in video
Aliasing in images
What’s happening?Input signal:
x = 0:.05:5; imagesc(sin((2.^x).*x))
Plot as image:
Alias!Not enough samples
Fourier Transform of a Sampled Signal
Sampling period T
T 2T 3T … -F 0 F …
Sampling frequency F = 1/T
Fourier Transform of a Sampled Signal
Sampling period T
T 2T 3T … -2F -F 0 F 2F …
Sampling frequency F = 1/T
• When sampling a signal at discrete intervals, the sampling frequency must be F > 2 x fmax
• fmax = max frequency of the input signal
• This will allow to reconstruct the original perfectly from the sampled version
• Do not know fmax or cannot sample at that rate? Prefiltering! We lose something but still better than aliasing!!!!!
good
bad
v v v
Nyquist-Shannon Sampling Theorem
Image half-sizing
This image is too big tofit on the screen. Howcan we reduce it?
How to generate a half-sized version?
Image sub-sampling
Throw away every other row and column to create a 1/2 size image
- called image sub-sampling
1/4
1/8
Image sub-sampling
1/4 (2x zoom) 1/8 (4x zoom)
Aliasing! What do we do?
1/2
Gaussian (lowpass) pre-filtering
G 1/4
G 1/8
Gaussian 1/2
Solution: filter the image, then subsample• Filter size should double for each ½ size reduction. Why?
Subsampling with Gaussian pre-filtering
G 1/4 G 1/8Gaussian 1/2
Compare with...
1/4 (2x zoom) 1/8 (4x zoom)1/2
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 pixelim_small = im_blur(1:2:end, 1:2:end);
Slide Credits
• This set of sides also contains contributionskindly made available by the following authors– Alexei Efros– Frédo Durand– Bill Freeman– Steve Seitz– Derek Hoiem– Steve Marschner