Fourier Transform

Download Report

Transcript Fourier Transform

Image Restoration
Comp344 Tutorial
Kai Zhang
Outline
 DIPUM Tool box
 Noise models
 Periodical noise and removal
 Noise parameter estimation
 Spatiral noise removal
The DIPUM Tool box
 M-functions from the book Digital Image
Processing Using MATLAB
 http://www.imageprocessingplace.com/DIPU
M_Toolbox_1/dipum_toolbox_main_page.htm
 Freedownload


No original m-functions
But can still used for demo
Noise models
 Given a random number generator, how to generate
random numbers with a pre-specified CDF?


Suppose the random number w is in [0,1]
We want to generate a Rayleigh distributed sample set
F ( z) 


1 e  ( z a )
0, z  a
2 /b
, z  a
To find z solve the following equation
1e
 ( z a )2 / b
z  a
 w
b ln(1 w )
Functions
 Function r = imnoise(f, type, parameters)
 Corrupt image f with noise specified in type
and parameters
 Results returned in r
 Type include: uniform, gaussian, salt &
pepper, lognormal, rayleigh, exponential
 Function r = imnoise2(type, M,N,a,b);
 Generates arrar r of size M-by-N,
 Entries are of the specified distribution type
 A and b are parameters
Examples
Codes
 Code1
 f = imread('lenna.jpg');
 g = imnoise(f, 'gaussian', 0, 0.01);
 figure, imshow(g);
 g = imnoise(f, 'salt & pepper', 0.01);
 figure, imshow(g);
 Code2
 r = imnoise2('gaussian',10000,1,0,1);
 p = hist(r,50);
 bar(p);
Periodical spatial noise
 Model
 Using 2-d sinusoid functions




r ( x, y )  A sin 2u0 ( x  Bx ) / M  2v0 ( y  B y ) / N 
M, N: image size
A: magnitude of noise
U0, v0: frequency along the two directions
Bx, By: phase displacement
 Observation: when x goes through 0,1,2,…,M, the left
term will repeat u0 times. So the horizontal frequency
is u0. Similar for v0.
 Function: [r, R, S] = imnoise3(M,N, C, A, B);
 Generate a sinusoide noise pattern r
 Of size M by N
 With Fourier transform R
 And spectrum S
 C is a K-by-2 matrix, each row being coordinate (u,v)
of an impulse
 A 1-by-K contains the amplitude of each impulse
 B is K-by-2 matrix each row being the phase
replacement
Periodic noise examples
Codes
 C = [0 64; 0 128; 32 32; 64 0; 128 0; -32 32];
 [r, R, S] = imnoise3(256,256,C);
 figure,imshow(S,[]);
 figure,imshow(r,[]);
Noise estimation
 How to determine type and parameters of noise
given an image f corrupted by noise?




Step 1. Manually choosing a region as featureless as
possible, so that variability is primarily due to noise.
[B,c,r] = roipoly(f);
Step2. compute the histogram of the selected image
patch
[p, npix] = histroi(f, c, r);
Step3. determine the noise type
through observation
Step4. estimating the central moments
[v, unv] = statmoments(p, 2);
Illustrations
Functions
 Function: [B,c,r] = roipoly(f);
 F is the image
 C and r are sequential column and row
coordinates of the polygon / can also be
specified by the mouse
 B is the region selected (of value 1), and all
the rest part of the image is 0
 Function [p, npix] = histroi(f, c,r);
 Generating histogram p of the region of
interest(ROI) specified in c and r (vertex
coordinates)
codes









f = imread(‘lenna.jpg’);
noisy_f = imnoise(f,'gaussian',0,0.01);
figure,imshow(noisy_f,[]);
[B, c, r] = roipoly(noisy_f); %needs mouse interations
figure,plot(B);
[p,npix] = histroi(f,c,r);
figure,bar(p,1);
[v, unv] = statmoments(p,2);
X = imnoise2('gaussian',
npix,1,unv(1),unv(2)^0.5); figure, hist(X,100);
Spatial noise removal
 Function f = spfilter(g, type, m, n, parameter);


Performs spatial filtering
Type include: amean, gmean, hmean,
chmean, median, max, min, midpoint,
artimmed
Codes
 Creating a salt noise image
 f = imread('lenna.jpg');
 R = imnoise2('salt & pepper', M, N, 0.1, 0);
 c = find(R == 0);
 gp = f;
 gp(c) = 0;
 figure, imshow(gp);
 Filtering
 fp = spfilt(gp, 'chmean', 3, 3, 1.5);
 fpmax = spfilt(gp, 'max',3,3);
 figure,imshow(fp);
 figure,imshow(fpmax);
Examples of filtering