Chapter 7

advertisement
Chapter 7: The Fourier Transform
7.1 Introduction
• The Fourier transform allows us to perform tasks
that would be impossible to perform any other
way
• It is more efficient to use the Fourier transform
than a spatial filter for a large filter
• The Fourier transform also allows us to isolate
and process particular image frequencies
1
7.2 Background
2
FIGURE 7.2
• A periodic function may be written as the sum of sines and
cosines of varying amplitudes and frequencies
3
7.2 Background
Fourier series
 These are the equations for the Fourier series
expansion of f (x), and they can be expressed in
complex form
4
7.2 Background
 If the function is nonperiodic, we can obtain similar
results by letting T → ∞, in which case
 Fourier transform pair
5
7.3 The One-Dimensional Discrete
Fourier Transform
6
7.3 The One-Dimensional Discrete
Fourier Transform
• Definition of the One-Dimensional DFT
 This definition can be expressed as a matrix
multiplication
 where F is an N × N matrix defined by
7
7.3 The One-Dimensional Discrete
Fourier Transform
 Given N, we shall define
 e.g. suppose f = [1, 2, 3, 4] so that N = 4. Then
8
7.3 The One-Dimensional Discrete
Fourier Transform
9
7.3 The One-Dimensional Discrete
Fourier Transform
• THE INVERSE DFT
 If you compare Equation (7.3) with Equation 7.2 you
will see that there are really only two differences:
1. There is no scaling factor 1/N
2. The sign inside the exponential function has been
changed to positive.
3. The index of the sum is u, instead of x
10
7.3 The One-Dimensional Discrete
Fourier Transform
11
7.3 The One-Dimensional Discrete
Fourier Transform
12
7.4 Properties of the
One-Dimensional DFT
• LINEARITY
 This is a direct consequence of the definition of the DFT as
a matrix product
 Suppose f and g are two vectors of equal length, and p and
q are scalars, with h = pf + qg
 If F, G, and H are the DFT’s of f, g, and h, respectively, we
have
• SHIFTING
13
 Suppose we multiply each element xn of a vector x by (−1)n.
In other words, we change the sign of every second element
 Let the resulting vector be denoted x’. The DFT X’ of x’ is
equal to the DFT X of x with the swapping of the left and
right halves
7.4 Properties of the
One-Dimensional DFT
e.g.
14
7.4 Properties of the
One-Dimensional DFT
Notice that the first four elements of X are the last four
elements of X1 and vice versa
15
7.4 Properties of the
One-Dimensional DFT
• SCALING
F
 where k is a scalar and F= f
 If you make the function wider in the x-direction, it's
spectrum will become smaller in the x-direction, and
vice versa
 Amplitude will also be changed
• CONJUGATE SYMMETRY
• CONVOLUTION
16
7.4 Properties of the
One-Dimensional DFT
• THE FAST FOURIER TRANSFORM
2n
17
7.5 The Two-Dimensional DFT
• The 2-D Fourier transform rewrites the original
matrix in terms of sums of corrugations
18
7.5.1 Some Properties of the TwoDimensional Fourier Transform
• SIMILARITY
• THE DFT AS A SPATIAL FILTER
• SEPARABILITY
19
7.5.1 Some Properties of the TwoDimensional Fourier Transform
• LINEARITY
• THE CONVOLUTION THEOREM
 Suppose we wish to convolve an image M with a
spatial filter S
1. Pad S with zeroes so that it is the same size as M; denote
this padded result by S’
2. Form the DFTs of both M and S’ to obtain (M)and (S’)
3. Form the element-by-element product of these two
transforms:
4. Take the inverse transform of the result:
20
Put simply, the convolution theorem states
or
7.5.1 Some Properties of the TwoDimensional Fourier Transform
• THE DC COEFFICIENT
• SHIFTING
DC coefficient
DC coefficient
21
7.5.1 Some Properties of the TwoDimensional Fourier Transform
• CONJUGATE SYMMETRY
• DISPLAYING YRANSFORMS
 fft, which takes the DFT of a
vector,
 ifft, which takes the inverse DFT of a vector,
 fft2, which takes the DFT of a matrix,
 ifft2, which takes the inverse DFT of a matrix, and
 fftshift, which shifts a transform
22
7.6 Fourier Transforms in MATLAB
e.g.
Note that the DC coefficient is indeed the sum of all the matrix values
23
7.6 Fourier Transforms in MATLAB
e.g.
24
7.6 Fourier Transforms in MATLAB
e.g.
25
7.7 Fourier Transforms of Images
26
FIGURE 7.10
27
FIGURE 7.11
28
FIGURE 7.12
29
FIGURE 7.13
• EXAMPLE 7.7.2
30
FIGURE 7.14
• EXAMPLE 7.7.3
31
FIGURE 7.15
• EXAMPLE 7.7.4
32
7.7 Fourier Transforms of Images
33
7.8 Filtering in the Frequency Domain
• Ideal Filtering
 LOW-PASS FILTERING
34
FIGURE 7.16
35
FIGURE 7.17
D = 15
36
7.8 Filtering in the Frequency Domain
>> cfl = cf.*b
>> cfli = ifft2(cfl);
>> figure, fftshow(cfli, ’abs’)
37
FIGURE 7.18
D=5
38
D = 30
7.8 Filtering in the Frequency Domain
 HIGH-PASS FILTERING
39
FIGURE 7.19
40
FIGURE 7.20
41
7.8.2 Butterworth Filtering
 Ideal filtering simply cuts off the Fourier transform at
some distance from the center
 It has the disadvantage of introducing unwanted
artifacts (ringing) into the result
 One way of avoiding these artifacts is to use as a filter
matrix, a circle with a cutoff that is less sharp
42
FIGURE 7.21
43
FIGURE 7.22 & 7.23
44
FIGURE 7.24
45
FIGURE 7.25
46
FIGURE 7.26
>> bl = lbutter(c,15,1);
>> cfbl = cf.*bl;
>> figure, fftshow(cfbl, ’log’);
47
>> cfbli = ifft2(cfbl);
>> figure, fftshow(cfbli, ’abs’)
FIGURE 7.27
48
7.8.3 Gaussian Filtering
A wider function, with a large standard deviation, will
have a low maximum
49
FIGURE 7.28
50
FIGURE 7.29
51
7.9 Homomorphic Filtering
where f(x, y) is intensity, i(x, y) is the illumination and
r(x, y) is the reflectance
52
7.9 Homomorphic Filtering
53
FIGURE 7.32
function res=homfilt(im,cutoff,order,lowgain,highgain)
% HOMFILT(IMAGE,FILTER) applies homomorphic filtering
% to the image IMAGE
% with the given parameters
u=im2uint8(im/256);
u(find(u==0))=1;
l=log(double(u));
ft=fftshift(fft2(l));
f=hb_butter(im,cutoff,order,lowgain,highgain);
b=f.*ft;
ib=abs(ifft2(b));
res=exp(ib);
54
FIGURE 7.33
>>i=imread(‘newborn.tif’);
>>r=[1:256]’*ones(1,256);
>>x=double(i).*(0.5+0.4*sin((r-32)/16));
>>imshow(i);figure;imshow(x/256);
55
FIGURE 7.34
>>xh=homfilt(x,10,2,0.5,2);
>>imshow(xh/16);
56
FIGURE 7.35
>>
>>
>>
>>
57
a=imread('arch.tif');
figure;imshow(a);
a1=a(:,:,1);
figure;imshow(a1);
>> a2=double(a1);
>> ah=homfilt(a2,128,2,0.5,2);
>> figure;imshow(ah/14);
Download