You are on page 1of 2

Postopki obdelave signalov

11. vaja – obdelava slik v frekvenčnem prostoru
Pojem frekvence pri slikah ne smemo mešati z barvo slikovnega elementa. Čeprav gre pri slednjem prav tako za frekvenco, ta vpliva na to, kakšno vrednost zavzame določen slikovni element. Nas pa zanima, kako se vrednosti slikovnih elemento spreminjajo, če naredimo prerez slike – če se spreminjajo malo, gre za nizke frekvence, če se močno spreminjajo, pa gre za prisotnost visokih frekvenc. Tako kot za enodimenzionalne kot tudi večdimenzionalne signale velja, da v frekvenčni prostor preidemo s katero izmed frekvenčnih transformacij, na primer Fouriejevo transformacijo. Seveda pri tem izvajamo diskretno verzijo – diskretno Fouriejevo transformacijo, le da moramo analizirati spremembe v sliki tako po vrsticah, kot tudi po stolpcih. Rezultat DFT slike sta dve matriki, obe enake velikosti kot matrika, ki predstavlja sliko – ena opisuje amplitudni del, druga pa fazni del DFT slike.

Zaradi lastnosti slike, da je večina sprememb v prerezu majhnih, je spekter slike običajno zgoščen v levi zgornji kot – h komponentam z nizko frekvenco. To ponuja ugodne razmere za postopke zgoščevanja slike, kjer namesto matrike slike shranimo raje matriko tistega dela njenega spektra, ki nosi informacijo. V praktični uporabi pa se za zgoščevanje slik ne uporablja DFT, temveč bolj enostavna transformacija – diskretna kosinusna transformacija (DCT). Ta za razliko od DFT pozna samo amplitudni del spektra, saj so vsi členi faznega dela enaki 0. Matematično gledano – DCT poizkuša signal zapisati kot vsoto 'nepremaknjenih' harmoničnih funkcij (fazni zasuk = 0). DFT : x[n] = ∑ Ak ⋅ cos(ω k ⋅ n + φ k )

DCT :

x[n] = ∑ Ak ⋅ cos(ω k ⋅ n)

1.) Pripravite sliko, ki se bo v vodoravni smeri spreminjala z eno samo frekvenco, v navpični smeri pa je vedno enaka. n=0:7; x=128*sin(n/8*2*pi); A=repmat(x,8,64); colormap(gray); imshow(A)

a) Skicirajte vodoravni prerez slike po izbrani vrstici in ocenite periodo. Za prikaz prereza uporabite funkcijo plot(...).
r=A(index_vrstice,:); stem(r)

b) Izračunajte DFT slike. Koliko in katere frekvenčne komponente lahko odčitamo iz DFT?
Adft = dft2(A); imshow(uint8(abs(Adft)));

2.) Uporabite realno sliko, na primer 'cameraman.tif'.
B=imread('cameraman.tif'); colormap(gray); imshow(B)

a) Tako kot prej skicirajte prerez slike po izbrani vrstici. Tokrat za prikaz prereza uporabite funkcijo plot(...).
r=A(index_vrstice,:); plot(r)

b) Izračunajte DCT slike. V katerem delu DCT se nahaja večina informacije?
Bdct=dct2(B); imshow(uint8(Bdct))

3.) Oglejte si Matlab-ov demo za ponazoritev zgoščevanja slik pri formatu JPEG (dctdemo). Kako vpliva izbira koeficientov na kvaliteto zgoščevanja? Kako deluje 'progresivno' zgoščevanje?