cs 691 computational photography instructor: gianfranco doretto frequency domain

72
CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Upload: angel-gain

Post on 15-Dec-2015

220 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

CS 691 Computational Photography

Instructor: Gianfranco DorettoFrequency Domain

Page 2: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Overview

• Frequency domain analysis• Sampling and reconstruction

Page 3: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 4: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Self-inverting transforms

FU

FUf

1

Same basis functions are used for the inverse transform

U transpose and complex conjugate

Page 5: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 6: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain
Page 7: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

A nice set of basis

This change of basis has a special name…

Teases away fast vs. slow changes in the image.

Page 8: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 9: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

A sum of sinesOur building block:

Add enough of them to get any signal f(x) you want!

xAsin(

Page 10: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Frequency Spectra

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

= +

Page 11: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Frequency Spectra

Page 12: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

= +

=

Frequency Spectra

Page 13: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

= +

=

Frequency Spectra

Page 14: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

= +

=

Frequency Spectra

Page 15: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

= +

=

Frequency Spectra

Page 16: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

= +

=

Frequency Spectra

Page 17: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

= 1

1sin(2 )

k

A ktk

Frequency Spectra

Page 18: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Fourier basis for image analysis

Intensity Image

Frequency Spectra

http://sharp.bu.edu/~slehar/fourier/fourier.html#filtering

Page 19: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Signals can be composed

+ =

http://sharp.bu.edu/~slehar/fourier/fourier.html#filteringMore: http://www.cs.unm.edu/~brayer/vision/fourier.html

Page 20: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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:

Page 21: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Computing the Fourier Transform

Continuous

Discrete

k = -N/2..N/2

Fast Fourier Transform (FFT): NlogN

Page 22: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Fourier Transform pairs

Page 23: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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?

Page 24: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain
Page 25: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

This is the magnitude transform of the cheetah pic

Page 26: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

This is the phase transform of the cheetah pic

Page 27: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain
Page 28: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

This is the magnitude transform of the zebra pic

Page 29: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

This is the phase transform of the zebra pic

Page 30: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Reconstruction with zebra phase, cheetah magnitude

Page 31: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Reconstruction with cheetah phase, zebra magnitude

Page 32: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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!

Page 33: CS 691 Computational Photography Instructor: Gianfranco Doretto 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)

Page 34: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Filtering in spatial domain

-101

-202

-101

* =

Page 35: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Filtering in frequency domain

FFT

FFT

Inverse FFT

=

Page 36: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 37: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 38: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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.

Page 39: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 40: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 41: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 42: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 43: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Playing with the DFT of an image

Page 44: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Can change spectrum, then reconstruct

Page 45: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Low and High Pass filtering

Page 46: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

artifacts?

Gaussian Box filter

Page 47: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Gaussian Filter

Page 48: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Box Filter

Page 49: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Overview

• Frequency domain analysis• Sampling and reconstruction

Page 50: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Sampling and Reconstruction

Page 51: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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]

Page 52: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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]

Page 53: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

1D Example: Audio

low highfrequencies

Page 54: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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?

Page 55: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Sampling and Reconstruction

• Simple example: a sign wave

Page 56: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Undersampling

• What if we “missed” things between the samples?

• Simple example: undersampling a sine wave– unsurprising result: information is lost

Page 57: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 58: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 59: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Aliasing in video

Page 60: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Aliasing in images

Page 61: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

What’s happening?Input signal:

x = 0:.05:5; imagesc(sin((2.^x).*x))

Plot as image:

Alias!Not enough samples

Page 62: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Fourier Transform of a Sampled Signal

Sampling period T

T 2T 3T … -F 0 F …

Sampling frequency F = 1/T

Page 63: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Fourier Transform of a Sampled Signal

Sampling period T

T 2T 3T … -2F -F 0 F 2F …

Sampling frequency F = 1/T

Page 64: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

• 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

Page 65: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Image half-sizing

This image is too big tofit on the screen. Howcan we reduce it?

How to generate a half-sized version?

Page 66: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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

Page 67: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Image sub-sampling

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

Aliasing! What do we do?

1/2

Page 68: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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?

Page 69: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Subsampling with Gaussian pre-filtering

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

Page 70: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

Compare with...

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

Page 71: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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);

Page 72: CS 691 Computational Photography Instructor: Gianfranco Doretto Frequency Domain

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