1 chapter 4: frequency domain processing image transformations iust

Post on 28-Dec-2015

225 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Chapter 4:Frequency Domain Processing

Image Transformations

IUST

2

Contents

Fourier Transform and DFT Walsh Transform Hadamard Transform Walsh-Hadamard Transform (WHT) Discrete Cosine Transform (DCT) Haar Transform Slant Transform Comparison of various Transforms

3

Introduction

Although we discuss other transforms in some detail in this chapter, we emphasize the Fourier transform because of its wide range of applications in image processing problems.

4

Fourier Transform (1-D)

uX

uXsinAXuF

euXsinu

Adxux2jexpxfuF uXj

5

Fourier Transform (2-D)

vY

vYsin

uX

uXsinAXYv,uFdydxvyux2jexpy,xf)v,u(F

6

Discrete Fourier Transform

In the two-variable case the discrete Fourier transform pair is

7

Discrete Fourier Transform

When images are sampled in a squared array, i.e. M=N, we can write

8

Discrete Fourier Transform

Examples

At all of these examples, the Fourier spectrum is shifted from top left corner to the center of the frequency square.

9

Discrete Fourier Transform

Examples

At all of these examples, the Fourier spectrum is shifted from top left corner to the center of the frequency square.

10

Discrete Fourier Transform

Display

At all of these examples, the Fourier spectrum is shifted from top left corner to the center of the frequency square.

11

Discrete Fourier Transform

Example

Main Image (Gray Level) DFT of Main image

(Fourier spectrum)

Logarithmic scaled

of the Fourier spectrum

12

Discrete Fourier Transform

% Program written in Matlab for computing FFT of a given gray color image.

% Clear the memory. clear; % Getting the name and extension of the image file from the user. name=input('Please write the name and address of the image : ','s'); % Reading the image file into variable 'a'. a=imread(name); % Computing the size of image. Assuming that image is squared. N=length(a); % Computing DFT of the image file by using fast Fourier algorithm. F=fft2(double(a))/N;

MATLAB program page 1 from 3.

13

Discrete Fourier Transform

% Shifting the Fourier spectrum to the center of the frequency square. for i=1:N/2; for j=1:N/2 G(i+N/2,j+N/2)=F(i,j); end;end for i=N/2+1:N; for j=1:N/2 G(i-N/2,j+N/2)=F(i,j); end;end for i=1:N/2; for j=N/2+1:N G(i+N/2,j-N/2)=F(i,j); end;end for i=N/2+1:N; for j=N/2+1:N G(i-N/2,j-N/2)=F(i,j); end;end

MATLAB program page 2 from 3.

14

Discrete Fourier Transform

% Computing and scaling the logarithmic Fourier spectrum. H=log(1+abs(G)); for i=1:N H(i,:)=H(i,:)*255/abs(max(H(i,:))); end % Changing the color map to gray scale (8 bits). colormap(gray(255)); % Showing the main image and its Fourier spectrum. subplot(2,2,1),image(a),title('Main image'); subplot(2,2,2),image(abs(G)),title('Fourier spectrum'); subplot(2,2,3),image(H),title('Logarithmic scaled Fourier spectrum');

MATLAB program page 3 from 3.

15

Discrete Fourier Transform(Properties) Separability

The discrete Fourier transform pair can be expressed in the seperable forms:

1N

0v

1N

0u

1N

0y

1N

0x

N/vy2jexpv,uFN/ux2jexpN

1y,xf

N/vy2jexpy,xfN/ux2jexpN

1v,uF

16

Discrete Fourier Transform(Properties)

Translation

N/vyux2jexpv,uFyy,xxf

and

vv,uuFN/yvxu2jexpy,xf

0000

0000

The translation properties of the Fourier transform pair are :

17

Discrete Fourier Transform(Properties)

Periodicity

The discrete Fourier transform and its inverse are periodic with period N; that is,

F(u,v)=F(u+N,v)=F(u,v+N)=F(u+N,v+N)

If f(x,y) is real, the Fourier transform also exhibits conjugate symmetry:

F(u,v)=F*(-u,-v)

Or, more interestingly:

|F(u,v)|=|F(-u,-v)|

18

Discrete Fourier Transform(Properties)

Rotation

If we introduce the polar coordinates

sinvcosu

sinrycosrx

Then we can write:

00 ,F,rf

In other words, rotating F(u,v) rotates f(x,y) by the same angle.

19

Discrete Fourier Transform(Properties)

Convolution

The convolution theorem in two dimensions is expressed by the relations :

v,uG*v,uFy,xgy,xf

and

v,uGv,uF)y,x(g*y,xf

Note :

ddy,xg,fy,xg*y,xf

20

Discrete Fourier Transform(Properties)

Correlation

The correlation of two continuous functions f(x) and g(x) is defined by the relation

dxgfxgxf *

So we can write:

v,uGv,uFy,xgy,xf

and

v,uGv,uFy,xgy,xf

*

*

21

Discrete Fourier Transform

Sampling

(Properties)

1-D

The Fourier transform and the convolution theorem provide the tools for a deeper analytic study of sampling problem. In particular, we want to look at the question of how many samples should be taken so that no information is lost in the sampling process. Expressed differently, the problem is one of the establishing the sampling conditions under which a continuous image can be recovered fully from a set of sampled values. We begin the analysis with the 1-D case.

As a result, a function which is band-limited in frequency domain must extend from negative infinity to positive infinity in time domain (or x domain).

22

Discrete Fourier Transform

Sampling

(Properties)

1-D

f(x) : a given function

F(u): Fourier Transform of f(x) which is band-limited

s(x) : sampling function

S(u): Fourier Transform of s(x)

G(u): window for recovery of the main function F(u) and f(x).

Recovered f(x) from sampled data

23

Discrete Fourier Transform

Sampling

(Properties)

1-D

f(x) : a given function

F(u): Fourier Transform of f(x) which is band-limited

s(x) : sampling function

S(u): Fourier Transform of s(x)

h(x): window for making f(x) finited in time.

H(u): Fourier Transform of h(x)

24

Discrete Fourier Transform

Sampling

(Properties)

1-D

s(x)*f(x) (convolution function) is periodic, with period 1/Δu. If N samples of f(x) and F(u) are taken and the spacings between samples are selected so that a period in each domain is covered by N uniformly spaced samples, then NΔx=X in the x domain and NΔu=1/Δx in the frequency domain.

25

Discrete Fourier Transform

Sampling

(Properties)

2-D

The sampling process for 2-D functions can be formulated mathematically by making use of the 2-D impulse function δ(x,y), which is defined as

0000 y,xfdydxyy,xxy,xf

A 2-D sampling function is consisted of a train of impulses separated Δx units in the x direction and Δy units in the y direction as shown in the figure.

26

Discrete Fourier Transform

Sampling(Properties)

2-D

If f(x,y) is band limited (that is, its Fourier transform vanishes outside some finite region R) the result of covolving S(u,v) and F(u,v) might look like the case in the case shown in the figure. The function shown is periodic in two dimensions.

0

1

v,uG

(u,v) inside one of the rectangles enclosing R

elsewhere

The inverse Fourier transform of G(u,v)[S(u,v)*F(u,v)] yields f(x,y).

27

The Fast Fourier Transform (FFT) Algorithm

28

Other Seperable Image Transforms

For 2-D square arrays the forward and inverse transforms are

1N

0u

1N

0v

1N

0x

1N

0y

v,u,y,xhv,uTy,xf

and

v,u,y,xgy,xfv,uT g(x,y,u,v) : forward transformation kernel

h(x,y,u,v) : inverse transformation kernel

The forward kernel is said to be seperable if

g(x,y,u,v)=g1(x,u)g2(y,v)

In addition, the kernel is symmetric if g1 is functionally equal to g2. In this case we can write:

g(x,y,u,v)=g1(x,u)g1(y,v)

29

Other Seperable Image Transforms

AFAT

BTBF

AB

BAFABBTB1

Where F is the N×N image matrix,

A is an N×N symmetric transformation matrix

T is the resulting N×N transform.

If the kernel g(x,y,u,v) is seperable and symmetric,

1N

0x

1N

0y

v,u,y,xgy,xfv,uT

also may be expressed in matrix form:

And for inverse transform we have:

30

Walsh Transform

When N=2n, the 2-D forward and inverse Walsh kernels are given by the relations

1n

0i

vbybubxb1n

0i

vbybubxb i1nii1nii1nii1ni 1N

1v,u,y,xhand1

N

1v,u,y,xg

Where bk(z) is the kth bit in the binary representation of z.

So the forward and inverse Walsh transforms are equal in form; that is:

31

Walsh Transform

“+” denotes for +1 and “-” denotes for -1.

1n

0i

ubxb i1ni1N

1u,xgIn 1-D case we have :

In the following table N=8 so n=3 (23=8).

1-D kernel

32

Walsh Transform

This figure shows the basis functions (kernels) as a function of u and v (excluding the 1/N constant term) for computing the Walsh transform when N=4. Each block corresponds to varying x and y form 0 to 3 (that is, 0 to N-1), while keeping u and v fixed at the values corresponding to that block. Thus each block consists of an array of 4×4 binary elements (White means “+1” and Black means “-1”). To use these basis functions to compute the Walsh transform of an image of size 4×4 simply requires obtaining W(0,0) by multiplying the image array point-by-point with the 4×4 basis block corresponding to u=0 and v=0, adding the results, and dividing by 4, and continue for other values of u and v.

33

Walsh Transform

Example

Main Image (Gray Level) WT of Main image

(Walsh spectrum)

Logarithmic scaled

of the Walsh spectrum

34

Walsh Transform (WT)

% Program written in Matlab for computing WT of a given gray color image. clear; % Getting the name and extension of the image file from the user. name=input('Please write the name and address of the image : ','s'); a=imread(name); N=length(a); % Computing Walsh Transform of the image file. n=log2(N);n=1+fix(n);f=ones(N,N); for x=1:N; for u=1:N p=dec2bin(x-1,n); q=dec2bin(u-1,n); for i=1:n; f(x,u)=f(x,u)*((-1)^(p(n+1-i)*q(i))); end;end;end F=(1/N)*f*double(a)*f;

MATLAB program page 1 from 3.

35

Walsh Transform (WT)

% Shifting the Fourier spectrum to the center of the frequency square. for i=1:N/2; for j=1:N/2 G(i+N/2,j+N/2)=F(i,j); end;end for i=N/2+1:N; for j=1:N/2 G(i-N/2,j+N/2)=F(i,j); end;end for i=1:N/2; for j=N/2+1:N G(i+N/2,j-N/2)=F(i,j); end;end for i=N/2+1:N; for j=N/2+1:N G(i-N/2,j-N/2)=F(i,j); end;end

MATLAB program page 2 from 3.

36

Walsh Transform (WT)

% Computing and scaling the logarithmic Walsh spectrum. H=log(1+abs(G)); for i=1:N H(i,:)=H(i,:)*255/abs(max(H(i,:))); end % Changing the color map to gray scale (8 bits). colormap(gray(255)); % Showing the main image and its Walsh spectrum. subplot(2,2,1),image(a),title('Main image'); subplot(2,2,2),image(abs(G)),title('Walsh spectrum'); subplot(2,2,3),image(H),title('Logarithmic scaled Walsh spectrum');

MATLAB program page 3 from 3.

37

Hadamard Transform

When N=2n, the 2-D forward and inverse Hadamard kernels are given by the relations

1n

0i

vbybubxb1n

0i

vbybubxb iiiiiiii 1N

1v,u,y,xhand1

N

1v,u,y,xg

Where bk(z) is the kth bit in the binary representation of z.

So the forward and inverse Hadamard transforms are equal in form; that is:

38

Hadamard Transform

1n

0i

ubxb ii1N

1u,xgIn 1-D case we have :

In the following table N=8 so n=3 (23=8).

1-D kernel

“+” denotes for +1 and “-” denotes for -1.

39

Hadamard Transform

This figure shows the basis functions (kernels) as a function of u and v (excluding the 1/N constant term) for computing the Hadamard transform when N=4. Each block corresponds to varying x and y form 0 to 3 (that is, 0 to N-1), while keeping u and v fixed at the values corresponding to that block. Thus each block consists of an array of 4×4 binary elements (White means “+1” and Black means “-1”) like Walsh transform. If we compare these two transforms we can see that they only differ in the sense that the functions in Hadamard transform are ordered in increasing sequency and thus are more “natural” to interpret.

40

Hadamard Transform

Example

Main Image (Gray Level) HT of Main image

(Hadamard spectrum)

Logarithmic scaled

of the Hadamard spectrum

41

Hadamard Transform (HT)

% Program written in Matlab for computing HT of a given gray color image. clear; % Getting the name and extension of the image file from the user. name=input('Please write the name and address of the image : ','s'); a=imread(name); N=length(a); % Computing Hadamard Transform of the image file. n=log2(N);n=1+fix(n);f=ones(N,N); for x=1:N; for u=1:N p=dec2bin(x-1,n); q=dec2bin(u-1,n); for i=1:n; f(x,u)=f(x,u)*((-1)^(p(n+1-i)*q(n+1-i))); end;end;end F=(1/N)*f*double(a)*f;

MATLAB program page 1 from 3.

42

Hadamard Transform (HT)

% Shifting the Fourier spectrum to the center of the frequency square. for i=1:N/2; for j=1:N/2 G(i+N/2,j+N/2)=F(i,j); end;end for i=N/2+1:N; for j=1:N/2 G(i-N/2,j+N/2)=F(i,j); end;end for i=1:N/2; for j=N/2+1:N G(i+N/2,j-N/2)=F(i,j); end;end for i=N/2+1:N; for j=N/2+1:N G(i-N/2,j-N/2)=F(i,j); end;end

MATLAB program page 2 from 3.

43

Hadamard Transform (HT)

% Computing and scaling the logarithmic Hadamard spectrum. H=log(1+abs(G)); for i=1:N H(i,:)=H(i,:)*255/abs(max(H(i,:))); end % Changing the color map to gray scale (8 bits). colormap(gray(255)); % Showing the main image and its Hadamard spectrum. subplot(2,2,1),image(a),title('Main image'); subplot(2,2,2),image(abs(G)),title('Hadamard spectrum'); subplot(2,2,3),image(H),title('Logarithmic scaled Hadamard

spectrum');

MATLAB program page 3 from 3.

44

Walsh-Hadamard Transform (WHT)

45

1-D WHT Kernel Functions

46

2-D WHT Kernel Functions

47

WHT and Fourier Transform

48

WHT Example

49

Discrete Cosine Transform

50

Discrete Cosine Transform (DCT)

Each block consists of 4×4 elements, corresponding to x and y varying from 0 to 3. The highest value is shown in white. Other values are shown in grays, with darker meaning smaller.

51

Discrete Cosine Transform

Example

Main Image (Gray Level) DCT of Main image

(Cosine spectrum)

Logarithmic scaled

of the Cosine spectrum

52

Discrete Cosine Transform

% Program written in Matlab for computing DCT of a given gray color image.

% Clear the memory. clear; % Getting the name and extension of the image file from the user. name=input('Please write the name and address of the image : ','s'); % Reading the image file into variable 'a'. a=imread(name); % Computing the size of image. Assuming that image is squared. N=length(a); % Computing DCT of the image file. F=dct2(double(a));

MATLAB program page 1 from 3.

53

Discrete Cosine Transform

% Shifting the Fourier spectrum to the center of the frequency square. for i=1:N/2; for j=1:N/2 G(i+N/2,j+N/2)=F(i,j); end;end for i=N/2+1:N; for j=1:N/2 G(i-N/2,j+N/2)=F(i,j); end;end for i=1:N/2; for j=N/2+1:N G(i+N/2,j-N/2)=F(i,j); end;end for i=N/2+1:N; for j=N/2+1:N G(i-N/2,j-N/2)=F(i,j); end;end

MATLAB program page 2 from 3.

54

Discrete Cosine Transform

% Computing and scaling the logarithmic Cosine spectrum. H=log(1+abs(G)); for i=1:N H(i,:)=H(i,:)*255/abs(max(H(i,:))); end % Changing the color map to gray scale (8 bits). colormap(gray(255)); % Showing the main image and its Cosine spectrum. subplot(2,2,1),image(a),title('Main image'); subplot(2,2,2),image(abs(G)),title('Cosine spectrum'); subplot(2,2,3),image(H),title('Logarithmic scaled Cosine spectrum');

MATLAB program page 3 from 3.

55

DCT and Fourier Transform

56

DCT Example

57

Blockwise DCT Example

58

Fast DCT Algorithm

59

Fast DCT Algorithm

60

Haar Transform

The Haar transform is based on the Haar functions, hk(z), which are defined over the

continuous, closed interval [0,1] for z, and for k=0,1,2,…,N-1, where N=2n. The first

step in generating the Haar transform is to note that the integer k can be decomposed

uniquely as k=2p+q-1

where 0≤p≤n-1, q=0 or 1 for p=0, and 1≤q≤2p for p≠0.

With this background, the Haar functions are defined as

1,0zforotherwise02

qz

2

2/1q2

2

2/1qz

2

1q2

N

1zhzh

and

1,0zforN

1zhzh

pp2/p

pp2/p

00k

000

61

Haar Transform

Haar transform matrix for sizes N=2,4,8

11

11

2

1Hr2

2011

2011

0211

0211

4

1Hr4

20002011

20002011

02002011

02002011

00200211

00200211

00020211

00020211

8

1Hr8

Can be computed by taking sums and differences.

Fast algorithms by recursively applying Hr2.

62

Haar Transform Example

63

Haar Transform Example

64

Haar TransformMATLAB program page 1 from 1.

% Program written in Matlab for computing HT of a given gray color image.% Getting the name and extension of the image file from the user.name=input('Please write the name and address of the image : ','s');a=imread(name); N=length(a);% Computing Haar Transform of the image file.for i=1:N p=fix(log2(i)); q=i-(2^p); for j=1:N z=(j-1)/N; if (z>=(q-1)/(2^p))&&(z<(q-1/2)/2^p) f(i,j)=(1/(sqrt(N)))*(2^(p/2)); elseif (z>=(q-1/2)/(2^p))&&(z<(q/2^p)) f(i,j)=(1/(sqrt(N)))*(-(2^(p/2))); else f(i,j)=0; end;end;endF=f*double(a)*f;% Changing the color map to gray scale (8 bits).colormap(gray(255));% Showing the main image and its Hadamard spectrum.subplot(2,2,1),image(a),title('Main image');subplot(2,2,2),image(abs(F)),title('Haar spectrum');

65

Slant Transform

The Slant Transform matrix of order N*N is the recursive expression

66

Slant Transform

11

11

2

1S2

2

1

2

2

N 1N4

N3a

Where I is the identity matrix, and

2

1

2

2

N 1N4

4Nb

67

Slant Transform

Example

Main Image (Gray Level) Slant Transform of Main image

(Slant spectrum)

68

Slant TransformMATLAB program page 1 from 1.

% Program written in Matlab for computing ST of a given gray color image.% Getting the name and extension of the image file from the user.name=input('Please write the name and address of the image : ','s');a=imread(name); N=length(a);% Computing Slant Transform of the image file.A=[ 1/(2^0.5) 1/(2^0.5);1/(2^0.5) -1/(2^0.5)];for i=2:log2(N) N=2^i; aN=((3*(N^2))/(4*((N^2)-1)))^0.5; bN=(((N^2)-4)/(4*((N^2)-1)))^0.5; m=1/(2^0.5)*[1 0 zeros(1,(N/2)-2) 1 0 zeros(1,(N/2)-2) aN bN zeros(1,(N/2)-2) -aN bN zeros(1,(N/2)-2) zeros((N/2)-2,2) eye((N/2)-2) zeros((N/2)-2,2) eye((N/2)-2) 0 1 zeros(1,(N/2)-2) 0 -1 zeros(1,(N/2)-2) -bN aN zeros(1,(N/2)-2) bN aN zeros(1,(N/2)-2) zeros((N/2)-2,2) eye((N/2)-2) zeros((N/2)-2,2) -eye((N/2)-2)]; n=[A A-A;A-A A]; A=m*n;endF=A*double(a)*A;% Changing the color map to gray scale (8 bits).colormap(gray(255));% Showing the main image and its Hadamard spectrum.subplot(2,2,1),image(a),title('Main image');subplot(2,2,2),image(abs(F)),title('Slant spectrum');

69

Comparison Of Various Transforms

70

Comparison Of Various Transforms

71

Comparison Of Various Transforms

72

Comparison Of Various Transforms

73

References

“Digital image processing” by Rafael C. Gonzalez and Richard E. Woods

“Digital image processing” by Jain Image communication I by Bernd Girod Lecture 3, DCS339/AMCM053 by Pengwei

Hao, University of London

top related