You are on page 1of 3

Postopki obdelave signalov

10. vaja – obdelava slik v prostoru vzorcev (II)
Pri obdelavi enodimenzionalnih signalov smo izrazili signal na izhodu LČN sistema kot konvolucijo signala na vhodu in prevajalne funkcije LČN sistema:

y[n] = x[n] ∗ h[n] =

k = −∞

∑ x[k ]⋅ h[n − k ]

Postopek smo imenovali tudi filtriranje, saj se je frekvenčna karakteristika prevajalne funkcije izkazala kot sito, oz. Filter, za določene frekvenčne komponente. Postopek kovolucije, oz. Filtriranja, je enostavno posplošiti na večdimenzionalne signale. Pri slikah, ki so predstavnik dvodimenzionalnih signalov, konvolucijo zapišemo na naslednji način:

S [x, y ] = A[x, y ] ∗ B[x, y ] =

k = −∞ l = −∞

∑ ∑ A[k , l ]⋅ B[x − k , y − l ]

Tako kot pri enodimenzionlnih signalih, lahko tudi pri slikah filtriranje ponazorimo grafično. In sicer filter (matriko B) premikamo po sliki (matriki A), ter izračunamo filtrirane vrednosti – pomnožimo istoležne elemente ter jih seštejemo. Tako kot pri enodiomenzionalnih signalih tudi pri slikah ne smemo pozabiti, da je pri tem potrebno filter obrniti, in sicer po obeh prostostnih dimenzijah (horizontalno in vertikalno). Pri enodimenzionalnem filtriranju smo ugotovili, da je izhodni niz daljši od vhodnega, in sicer je veljalo: L y = L x + Lh − 1

Pri tem so dodani vzorci nastali pri nepopolnem (delnem) prekrivanju nizov. Pri filtriranju slik lahko opazimo identični pojav, la da tokrat po obeh prostostnih dimenzijah. Glede na način filtriranja zato ločimo tri variacije, ki se razlikujejo v dimenziji filtrirane slike: • polna slika – upoštevamo vsa možna prekrivanja originalne slike in filtra, neznane vrednosti (izven originalne slike) običajno nadomestimo z ničlami, filtrirana slika je zato večja od originalne. • enaka slika – pri tej varianti je potrebno poznati 'centralni' element filtra, to je element pri indeksu k = l = 0 . Upoštevamo vsa prekrivanja, kjer se centralni element filtra nahaja znotraj originalne slike, neznane vrednosti nadomestimo z ničlami, filtrirana slika je enako velika kot originalna. • veljavna slika – upoštevamo le popolna prekrivanja originalne slike in filtra, filtrirana slika je zato manjša od originalne. Postopek filtriranja slike najpogosteje uporabimo pri odpravi šuma in motenj predobdelavi slik (npr. ostrenju in iskanju robov)

• •

1.) Linearni in nelinearni dvodimenzionalni filtri za odpravo šumov in motenj.

Pri vaji bomo uporabili sliko 'fotograf' (cameraman.tif). Omenjena slika je del Matlabov-ih knjižnic, zato je ni potrebno ročno nameščati.
foto = imread('cameraman.tif'); colormap(gray) imshow(foto) . a) Sliki 'fotograf' dodajte dve vrsti motnje na naslednji način foto_gs = imnoise(foto,'gaussian',0,0.01); foto_sp = imnoise(foto,'salt & pepper', 0.02);

Oglejte si popačeni sliki. Kakšni motnje smo vnesli?

b) Primer linearnega filtra je Povprečevalni filter. Preizkusite njegovo delovanje na popačenih slikah. Povprečevalni filter naj bo dimenzije 3x3 : ⎡1 1 1⎤ B = 1 / 9 ⎢1 1 1⎥ ⎢ ⎥ ⎢1 1 1⎥ ⎣ ⎦
B=1/9*ones(3,3); foto_gs_filter = uint8(filter2(B,foto_gs)); foto_sp_filter = uint8(filter2(B,foto_sp));

Oglejte si filtrirani sliki. V katerem primeru je povprečevalni filter učinkovit?

c) Kot primer nelinarnega filtra si oglejte filter 'mediane'. Ta deluje tako, da po vrsti uredi vrednosti iz okolice dane točke, kot rezultat pa vrne vrednost iz sredine množice. Preizkusite njegovo delovanje na popačenih slikah.
foto_gs_mediane = medfilt2(foto_gs); foto_sp_mediane = medfilt2(foto_sp);

Oglejte si filtrirani sliki. V katerem primeru je učinkovit filter 'mediane'?

2.) Dvodimenzionalni filtri in predobdelava slik Pri vaji bomo uporabili sliko 'riž' (rice.png). Omenjena slika je del Matlabov-ih knjižnic, zato je ni potrebno ročno nameščati. Postopke v nadaljevanju lahko preizkusite tudi na testni sliki 'fotograf' iz prejšne naloge.
riz = imread('rice.png'); colormap(gray) imshow(riz)

a) Na testni sliki preizkusite Laplaceov operator. Predstavlja ga matrika: ⎡ 0 −1 0 ⎤ L = ⎢− 1 4 − 1⎥ ⎢ ⎥ ⎢ 0 −1 0 ⎥ ⎣ ⎦
L = [0,-1,0;-1,4,-1;0,-1,0] riz_edges = uint8(filter2(L,riz));

Oglejte si filtrirano sliko. Kako deluje filter, ki ga predstavlja Laplaceov operator?

b) Na podlagi prejšnega na testni sliki. ⎡ __ __ E = ⎢ __ __ ⎢ ⎢ __ __ ⎣

primera pripravite filter, ki robove le poudari (izostri sliko). Preizkusite ga
__ ⎤ __ ⎥ ⎥ __ ⎥ ⎦

E=[ , , ; , , ; , , ] riz_sharpen = uint8(filter2(E,riz));