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
1e
( 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 2u0 ( x Bx ) / M 2v0 ( 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