laboratory exercise

5
1 Obrada i Analiza Digitalne Slike Mr.sc. Seudin Kasumović, 2006 Laboratorijska Vježba: Linearno Filtriranje Linearno Filtriranje Filtriranje je tehnika modificiranja ili poboljšavanja kvaliteta slike. Npr., slika se može filtrirati da se istakne određena osobina ili ukloni druga osobina. Operacije implementirane filtriranjem slike uključuju izoštravanje, glačanje i isticanje ivica. Filtriranje je operacija nad susjednim pikselima, u kojoj se za vrijednost bilo kojeg piksela izlazne slike određuje primjenom nekog algoritma na vrijednosti piksela u susjedstvu. Susjedstvo nekog piksela određeno je relativno njihovom lokacijom od datog piksela. Na slici niže je prikazan segment slike i susjedstva veličine 3x3 piksela. U toku izvođenja operacija nad graničnim pikselima vrši se dopunjavanje nulama (zero padding). Kod linearnog filtriranja izlazni piksel je linearna kombinacija vrijednosti piksela u ulaznom susjedstvu. Konvolucija Linearno filtriranje slike se izvodi operacijom koja se naziva konvolucija. Konvolucija je operacija nad susjedima u kojoj je izlaz faktorizirana suma težinskim koeficijentima susjednih piksela. Matrica težinskih koeficijenata naziva se konvolucijski kernel, takođe poznat pod nazivom filter. Konvolucijski kernel je korelacijski kernel rotiran za 180 stepeni. Konvolucija nad slikom je 2D operacija te

Upload: dorijan

Post on 25-Dec-2015

8 views

Category:

Documents


5 download

DESCRIPTION

laboratory exercise in something

TRANSCRIPT

Page 1: laboratory exercise

1

Obrada i Analiza Digitalne Slike Mr.sc. Seudin Kasumović, 2006

Laboratorijska Vježba: Linearno Filtriranje

Linearno Filtriranje Filtriranje je tehnika modificiranja ili poboljšavanja kvaliteta slike. Npr., slika se može filtrirati da se istakne određena osobina ili ukloni druga osobina. Operacije implementirane filtriranjem slike uključuju izoštravanje, glačanje i isticanje ivica. Filtriranje je operacija nad susjednim pikselima, u kojoj se za vrijednost bilo kojeg piksela izlazne slike određuje primjenom nekog algoritma na vrijednosti piksela u susjedstvu. Susjedstvo nekog piksela određeno je relativno njihovom lokacijom od datog piksela. Na slici niže je prikazan segment slike i susjedstva veličine 3x3 piksela. U toku izvođenja operacija nad graničnim pikselima vrši se dopunjavanje nulama (zero padding).

Kod linearnog filtriranja izlazni piksel je linearna kombinacija vrijednosti piksela u ulaznom susjedstvu.

Konvolucija Linearno filtriranje slike se izvodi operacijom koja se naziva konvolucija. Konvolucija je operacija nad susjedima u kojoj je izlaz faktorizirana suma težinskim koeficijentima susjednih piksela. Matrica težinskih koeficijenata naziva se konvolucijski kernel, takođe poznat pod nazivom filter. Konvolucijski kernel je korelacijski kernel rotiran za 180 stepeni. Konvolucija nad slikom je 2D operacija te

Page 2: laboratory exercise

2

moramo koristiti matlab funkciju conv2. Ova funkcija je direktna formalna implementacija jednačine za 2D konvoluciju u prostornoj formi. Ako su a i b dvije funkcije diskretnih varijabli m i n respektivno onda je formula za 2D konvoluciju a i b:

∑∑∞

−∞=

−∞=−−=

j k

knjmbkjanmc ),(),(),(

U praksi conv2 funkcija izračunava konvoluciju na konačnom intervalu. Npr., pretpostavimo da je slika A A = [17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9]

A konvolucijski kernel h: h = [8 1 6 3 5 7 4 9 2]

Sledeća slika prikazuje kako se izračunava (2,4) izlazni piksel koristeći sledeće korake:

1. Rotira se konvolucijsku kernel za 180 stepeni oko centra. 2. Pomjeri se centralni element konvolucijskog kernela tako da leži iznad (2,4)

elementa matrice A 3. Množi se svaki težinski faktor rotiranog konvolucijskog kernela sa

pikselima A 4. Saberu se pojedinačni proizvodi iz koraka 3

Prema tome izlazni (2,4) piksel je: 1•2+8•9+15•4+7•7+14•5+16•3+13•6+20•1+22•8=575

Korelacija Operacija korelacije je slična operaciji konvolucije. U korelaciji vrijednosti izlaznog piksela se takođe izračunava kao suma vrijednosti susjednih piksela faktorisanih

Page 3: laboratory exercise

3

težinskim koeficijentima. Razlika je u tome da se matrica težinskih koeficijenata, koja se zove korelacioni kernel, se ne rotira u izračunavanju.

Filtriranje Filtriranje slike, ili korelacijom ili konvolucijom, može se izvesti korištenjem matlab funkcije imfilter. Npr., filtrirajmo sliku sa 5x5 kernelom istih težinskih koeficijenata. Ovakav filter se još zove filter usrednjavanja. I = imread('eight.tif'); h = ones(5,5) / 25; I2 = imfilter(I,h); imshow(I), title('Original slika'); figure, imshow(I2), title('Filtrirana slika')

Orginalna slika Filtrirana slika

Funkcija imfilter može da filtrira bilo koji ulazni tip. Međutim potrebno je razmisliti o ulaznom tipu jer funkcija može preuduzeti zaokruživanja ili odbacivanja decimalnih vrijednosti ili može rezultat biti negativna vrijednost. Fikcija imfilter može izvršiti filtriranje ili korelacijom ili konvolucijom. Podra-zumijevana je opcija korelacija. Međutim ako želite izvršiti filtriranje konvolucijom može se proslijediti string 'conv' kao opcioni parametar funkcije imfilter. Primijetite da u predhodnom primjeru zbog simetričnog kernela rotacija nema uticaja te je rezultat korelacijom ekvivalentan filtriranju konvolucijom. Ova funkcija može filtrirati i RGB slike kao multidimenzione podatake. Prilikom filtriranja 2D filterom RGB slike filtrira se svaki sloj odnosno komponenta. Rezultat slika je takođe RGB.

Page 4: laboratory exercise

4

Opcije dodavanja graničnih vrijednosti Kada se računa izlazni piksel na granici slike dio konvolucije ili korelacije je izvan ivice slike.

imfilter funkcija normalno puni nedostajuće piksele izvan ivice slike podrazumijevajući da su one 0. Ovo se zove dopunjavanje nulama kao što je prikazano na slici iznad. Kada se slika filtrira sa dopunjenim nulama kao rezultat se može pojaviti crni okvir na rubu slike, kao što je to prikazano na predhodnom primjeru. Da se eliminira efekat prouzrokovan dodavanjem nula izvan ivica slike imfilter nudi alternativu dopunjavanjem granica metodom replikacija granica. Ovo je prikazano na sledećoj slici.

Da se slika filtrira koristeći raplikaciju granica funkciji treba proslijediti opcioni argu-ment 'replicate'.

Page 5: laboratory exercise

5

I = imread('eight.tif'); h = ones(5,5) / 25; I2 = imfilter(I,h,'conv','replicate'); imshow(I) title('Original slika'); figure, imshow(I2), title('Filtrirana slika')

Filtrirana slika sa replikacijom

granica

Predefinirani tipovi filtera Matlab funkcija fspecial proizvodi različite vrste predefiniranih filtera, u obliku korelacijskog kernela. Poslije kreiranja filtera sa fspecial on se može primijeniti direktno na sliku korištenjem funkcije imfilter. Npr. filter za izoštravanje slike primijenjen na sivu sliku. Ovaj filter ima efekat da ivice i fini detalji u slici postaju jasniji. I = imread('moon.tif'); h = fspecial('unsharp'); I2 = imfilter(I,h); imshow(I), title('Original slika') figure, imshow(I2), title('Filtrirana slika')

Orginalna slika Filtrirana slika sa 'unsharp'

Zadatak: • Filtrirati proizvoljno odabranu sliku sa predefiniranim tipovima filtera iz

funkcije fspecial varirajući veličine susjedstva: 3x3, 5x5, 7x7; • Za tip filtera 'gaussian' uporediti frekventne karakteristike orginalne slike i

filtrirane slike Napomena: kerneli koji se koriste za izdvajanje ivica su predefinirani za izdvajanje horizontalnih ivica. Za izdvajanje vertikalnih ivica koristite transponovani kernel h'.