You are on page 1of 12

V d bin i Fourier trong matlab:

Cho nh f c gi tr tng ng sau:


f(0) = 2,f(1) = 4,f(2) = 6,f(3) = 0
tm bin i Fourier ri rc ca dy:
matlab:
c vo gi tr tng ng ca f:
>> f = [2 4 6 0];
Thc hin bin i Fourier:
>> F = ifft(f1)
Kt qu thu c nh sau:
F1 =
3.2500
-0.5000 - 0.2500i -0.2500

-0.5000 + 0.2500i

Bin i Fourier ri rc ngc:


Cho F(0) = 2i, F(1) = 4i,F(2) = 6i,F(3) = 8i.
Tnh bin i Fourier ri rc ngc.
Matlab:
>> F = [2i 4i 6i 8i]
F=
0 + 2.0000i

0 + 4.0000i

0 + 6.0000i

0 + 8.0000i

>> f = fft(F)
Kt qu thu c nh sau:
f=
0 +20.0000i -4.0000 - 4.0000i

0 - 4.0000i 4.0000 - 4.0000i

V d 5:
c vo mt nh: >> f = imread('cameraman.tif');
Thc hin php bin i Fourier hai chiu: >> F = fft2(f);
Ph Fourier ca nh l: >> SF = abs(F);
Gc pha: >> pha = angle(F);
Hin th ph Fourier ca nh: >> g = log(1+abs(fftshift(F)));
>> imshow(g,[])
Hm ifft2 (bin i Fourier ri rc ngc hai chiu): >> fn = ifft2(F);
>> imshow(fn)

hm ifftshift a im v tr trung tm v gc bn tri trn cng ca ph:


>>ft= ifftshift(F);
Gi nguyn gc pha, thay i ph ca nh:
>> G1 = 100 *exp(i*pha);
>> f1 = ifft2(G1);
Gi nguyn ph, thay i gc pha ca nh:
>> G2 = SF*exp(i*100);
>> f2 = ifft2(G2);
Kt qu thu c nh sau:
>> imshow(f1),figure,imshow(f2)

lm sc nt nh vi mt n w nh sau:
>> A = 1;
>> w = [-1,-1,-1,-1,A+8,-1,-1,-1,-1];
>> a =imread('rice.png');
>> b = filter2(w,p);
>> imshow(p), figure, imshow(a/255)

nh gc

nh lm sc nt

Vi A = 1.7, sc nt ca nh gim dn:

Ngoi ra ta c th s dng mt n unsharp lm sc nt nh.


V d:
>> a = imread('tire.tif');
>> u = fspecial('unsharp',0.5);
>> au = filter2(u,a);
>> imshow(a),figure,imshow(au/255)

nh gc

After unsharp masking

ng dng khc ca b lc ngc:


Lm r nh m do chuyn ng:
>>
>>
>>
>>

bc = imread('board.tif');
bg = im2uint8(rgb2gray(bc));
b = bg(100:355,50:305);
m = fspecial('motion',7,0);

>> bm = imfilter(b,m);
>> imshow(bm)

lm r nh ta cn thc hin gia php chia DFT ca nh m cho DFT


ca b lc lm m nh.
Trc tin cn to ma trn tng ng vi s bin i lm m nh:
>> m2 = zeros(256,256);
>>m2(1,1:7) = m;
>>mf = fft2(m2);
>>bmi = ifft2(fft2(bm)./mf);
>> imshow(bm),figure, fftshow(bmi,'abs')
Kt qu khng c tt do c tnh ca b lc ngc:

khc phc c tnh ca b lc ngc, ta s dng mt ngng (


trnh chia cho 0):
>> d = 0.02;
>> mf = fft2(m2);
>> mf(find(abs(mf)<1))=1;
>> bmi = ifft2(fft2(bm)./mf);
>> imshow(mat2gray(abs(bmi))*2)

Lc thng thp:
u tin ta c vo mt nh: >>cm = imread('cameraman.tif');
Dch chuyn ph v trung tm ca nh v hin th n:
>>cf = fftshift(fft2(cm));
>> fftshow(cf,'log')

Tip n to mt hnh trn (khot l):


>>[x,y] = meshgrid(-128:127,-128:127);
>>z = sqrt(x.^2+y.^2);
ivi z >15 th c nhn gi tr 0, ngc li c nhn gi tr 1:
>>c = (z<15);
di qua thnh phn tn s cao, gi li thnh phn tn s thp:
>>cfl = cf.*c;
>> fftshow(cfl,'log')

Bin i Fourier ngc hin th nh ban u v hin th nh :


>>cfli = ifft2(cfl);
>>figure,fftshow(cfli,'log')

Nhiu:
cng nhiu Salt and pepper vo mt nh ta dng cu lnh sau:
>>t = imnoise(image,salt & pepper)
S lng nhiu cng vo c mc nh l 10%. Ta c th cung cp thm cc thng s
thay i lng nhiu c cng vo ny.
c vo mt nh:
>> a = imread('autumn.tif');
Thm nhiu mui v tiu vo nh, vi 10% nhiu cng vo:
>> b= imnoise(a,'salt & pepper');
Xa nhiu mui tiu vi lc trung bnh:
Thc hin trong matlab bng lnh:
>>w = fspecial(average,[m,n])
>>f = imfilter(g,w)
p dng loi b nhiu mui v tiu:
chuyn nh mu sang nh gi tr xm:
>> a = rgb2gray(a);
To mt n lc trung bnh 3x3:
>> a1 = fspecial('average');
Lc nh vi mt n trung bnh 3x3:
>> b1 = filter2(a1,b);
>> imshow(b1,[])
To mt n trung bnh 7x7:
>> a1 = fspecial('average',[7,7]);
Lc nh vi mt n trung bnh 7x7:
>> b1 = filter2(a1,b);
>> imshow(b1,[])
S dng lc trung v xa nhiu mui tiu:
p dng loi b nhiu mui v tiu vi mt n lc mc nh l 3x3:
>> b2 = medfilt2(a);
>> imshow(b2)

Vi mt n 5x5, nhiu c loi b nhiu hn:


>> b3 = medfilt2(a,[5 5]);
Nhiu tun hon:
>> a = imread('cameraman.tif');
To ma trn tun hon:
>> [x y] = meshgrid(1:256,1:256);
>> p = sin(x+y/1.5)+1;
Cng vo nh ma trn tun hon:
>> ap = (double(a)/128+p)/4;
Dch ph v trung tm ca nh:
>> cpf = fftshift(fft2(ap))
Hin th nh:
>> imshow(ap,[]),figure,imshow(log(abs(cpf)+1),[]),pixval on

nhiu tun hon

ph nh

Kh nhiu tun hon:


1.
S dng lc Band Reject:
S dng mt mt n hnh trn br c bn knh bn trong hnh l z.
C gi tr cc pixels bn trong hnh trn l 1 v gi tr cc pixels trn bin l 0.
ng bin phi c dy ln che c cc im nhiu.
To nhiu tun hon:
>> [x,y] = meshgrid(1:256,1:256);
>> s = 1+sin(x+y/1.5);
c vo mt nh:
>> cm = imread('cameraman.tif');
>> cp = (double(cm)/128+s)/4;
Dch ph v trung tm ca nh:
>> cpf = fftshift(fft2(cp));

>> fftshow(cpf,'log'),pixval on
Chng ta s xa nhng thnh phn tng t bin v tr ngc li kt qu. t pixval on v
di chuyn xung quanh nh, chng ta tm thy nhng hng, ct c gi tr tng t bin l
(156,170) v (102,88).
>> [x,y] = meshgrid(-128:127,-128:127);
>> z = sqrt(x.^2+y.^2);
Khong cch t t ti trung tm ca nh l 49.0918:
>> z(156,170)
ans =
49.0918
>> z(102,88)
ans =
49.0918
Chng ta to ra mt lc vi br = 1 nu (z<47 | z>51) v ngc li bng 0 (gia vng trn
nh v vng trn ln):
>> br = (z<47 | z>51);
Thc hin php nhn bi bin i:
>> SF = fftshift(fft2(cp));
>> tbr = SF.*br;
>> figure,fftshow(tbr,'log')
Bin i Fourier ngc ta c:
>> tbri =ifft2(tbr);
>> figure,fftshow(tbri,'log')

A band-reject filter
2.

After inversion

S dng b lc Notch:

S dng cc ng k ngang v ng k dc che cc im nhiu sao cho giao ca cc


ng k ny c th che c cc im nhiu.

To nhiu tun hon


>> [x,y] = meshgrid(1:256,1:256);
>> s = sin(x+y/1.5)+1;
c vo nh cameraman:
>> f = imread('cameraman.tif');
Dch ph v trung tm ca nh:
>> F = fftshift(fft2(a));
>> sf = (double(f)/128+s)/4;
>> SF = fftshift(fft2(sf));
>> fftshow(F,'log'),figure,fftshow(SF,'log')

SF

n gin l cho hng v ct ca thnh phn ph nhiu bng 0.


Gi s ta ca cc thnh phn nhiu ny ln lt l (156,170), (102,88).
>> SF(156,:) = 0;
>> SF(102,:) = 0;
>> SF(:,88) = 0;
>> SF(:,170) = 0;
>> figure,fftshow(SF,'log')
Bin i Fourier ngc ta thu c nh ban u:
>> ln =ifft2(SF);
>> fftshow(ln,'log')

SF

ln

Nhiu nhiu trung tm b loi b. To nhiu hng v ct dch chuyn v v tr nhiu s


loi b c nhiu nhiu hn.

Pht hin ng bin, bin ngang, bin dc:


c vo mt nh:
>>ic = imread('circuit.tif');
Pht hin ng bin ng:
>>px = [-1 0 1;-1 0 1;-1 0 1];
Tnh p ng mt n px vi nh ic:
>>icx = filter2(px,ic);
>>figure,imshow(icx/255)

Pht hin ng bin ngang:


py= px';% chuyen vi ca px
Tnh p ng mt n py vi nh ic:
icy = filter2(py,ic);
figure,imshow(icy/255)

Kt hp lc ng bin ngang, bin dc:


Gi px l kt qu ca lc ng bin song song vi trc oy.
Gi py l kt qu ca lc ng bin song song vi trc ox.

Gi p l kt qu tng hp, c gi tr bng:

p 2x + p 2y

>>edge_p = sqrt(icx.^2+icy.^2);
>>figure,imshow(edge_p/255)
C2: s dng hm edge:
G lnh help edge

Php dn:
Trong matlab g lnh:
>>imdilate(image,kernel )
Vi image l nh nh phn hoc nh mc xm cn gin, kernel l nh nhn hay phn t
cu trc.
V d:
>> t = imread('text.png');
To phn t cu trc sq:
>> sq = ones(3,3);
Gin nh t theo phn t cu trc sq:
>> td = imdilate(t,sq);

nh gc

nh sau khi gin

php co:
Trong matlab thc hin lnh:
>> imerode (image,kernel )
Vi image l nh nh phn hoc nh mc xm cn co, kernel l nh nhn hay phn t cu
trc.
V d:
>> c = imread('text.png');
Thc hin php co theo phn t cu trc sq:

>> ce = imerode(c,sq);

nh gc

nh co

ng dng php dn v co l: pht hin bin.


V d:
To nh nh phn da vo ngng xm T:
>> rice = imread('rice.png');
>> r = rice > 110;
Co nh theo phn t cu trc sq:
>> re = imerode(r,sq);
Hin th ng bin ca nh theo php hiu:
>> r_int = r &~re;

nh gc r

bin nh r_int

You might also like