69
UNIVERZITET U NIŠU PRIRODNO MATEMATIČKI FAKULTET DEPARTMAN ZA RAČUNARSKE NAUKE Kompresija, kodiranje i restauracija slika u MATLAB u MASTER RAD Kandidat: Mentor: Aleksandar Ivanović Prof. dr Predrag Stanimirović Niš, 2018.

Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

  • Upload
    others

  • View
    59

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

UNIVERZITET U NIŠU

PRIRODNO – MATEMATIČKI FAKULTET

DEPARTMAN ZA RAČUNARSKE NAUKE

Kompresija, kodiranje i restauracija slika

u MATLAB – u

MASTER RAD

Kandidat: Mentor:

Aleksandar Ivanović Prof. dr Predrag Stanimirović

Niš, 2018.

Page 2: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 1

Page 3: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 2

Zahvalnica

Najsrdačnije se zahvaljujem svom mentoru, prof. dr Predragu Stanimiroviću na nesebičnoj

pomoći i razumevanju tokom izrade master rada, za sve sugestije, savete, ukazano poverenje i

spremnost na zajednički rad.

Takođe, želim da se zahvalim svojoj supruzi Jeleni na razumevanju, ljubavi i bezuslovnoj

podršci od početka studija do izrade master rada i svojoj ćerki Mili koja je moj neiscrpan izvor

inspiracije.

Konačno, veliku zahvalnost dugujem svojim roditeljima, jer bez njih ne bih bio to što

jesam.

Autor

Page 4: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 3

Sadržaj

Predgovor ........................................................................................................................................ 4

1. Uvod u image processing toolbox............................................................................................... 5

2. Furijeova analiza i diskretna Furijeova transformacija ............................................................... 9

3. Diskretna kosinusna transformacija .......................................................................................... 11

3.1. Jednodimenzionalna DCT .................................................................................................. 12

3.2. Dvodimenzionalna DCT .................................................................................................... 13

4. Restauracija slike ...................................................................................................................... 20

4.1. Model procesa degradacije i restauracije slika ................................................................... 21

4.2. Model šuma ........................................................................................................................ 22

4.2. Modeli zamućenja slike ...................................................................................................... 30

4.3. Restauracija zamućene slike............................................................................................... 36

u MATLAB – u ......................................................................................................................... 36

5. Zaključak................................................................................................................................... 55

6. Prilog ......................................................................................................................................... 56

7. Literatura ................................................................................................................................... 62

Biografija ...................................................................................................................................... 64

Page 5: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 4

Predgovor

Svet računarske grafike se razvija velikom brzinom. Na tržištu se nalazi veliki broj

programa koji su usko specijalizovani za obradu slika ili za njihovo kodiranje. Nažalost, mali broj

njih je multifunkcionalan i može se koristiti za druge namene u cilju daljeg razvoja nauke i

tehnologije. Srećom, postoji jedan programski paket u kome je moguće kombinovati obradu i

kodiranje slika sa tehnikama programiranja. Njegovo ime je MATLAB.

MATLAB (izvedeno od eng. matrix laboratary) je multiplatformsko numeričko računarsko

okruženje. Razvijen je od strane kompanije MathWorks i dozvoljava rad sa matricama, obradu

funkcija i podataka, implementaciju algoritama, kreiranje korisničkih interfejsa i kombinovanje sa

drugim programskim jezicima uključujući C, C++, Javu, Fortran i Pyton. MATLAB ima više

miliona korisnika, a koristi se masovno u akademskim i naučnim istraživanjima.

Ovaj rad će se fokusirati na aspekte računarske grafike, upoznavanje sa JPEG kompresijom

i korišćenjem diskretne kosinusne transformacije u cilju kodiranja i kompresije slika korišćenjem

Diskretne kosinusne transformacije, kao i nekoliko modela za restauraciju zamućene slike. Sve

teoretske studije su pokazane na praktičnim primerima u izabranom radnom okruženju.

Rešenja prikazana u ovom master radu ostavljaju prostora za dalji razvoj. Mogućnosti i

ideje za doradu datih rešenja prikazani su u poslednjem poglavlju.

Page 6: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 5

1. Uvod u image processing

toolbox

U MATLAB – u se nalaze funkcije specijalizovane za ulazno – izlazne operacije,

prikazivanje i obradu slika. Te funkcije se nalaze u tzv. Image Processing Toolbox – u. Da biste

videli listu svih funkcija u ovom toolbox – u treba ukucati help images u MATLAB komandnoj

liniji. Vidimo da je na raspolaganju veliki broj funkcija. Mi ćemo se u okviru ovog master rada

dotaći samo nekih. Cilj ovog rada je upoznavanje sa načinima reprezentacije slike u memoriji

računara, kao i pronalazak načina za smanjivanje prostora koji je potreban za čuvanje slike.

Kao što mu i samo ime navodi, MATLAB memoriše sliku kao matricu, tako što svakom

pikselu na slici odgovara jedan element matrice. Zbog njegovog fleksibilnog okruženja,

mogućnosti razvoja različitih algoritama i programiranja i širokom spektru ugrađenih funkcija

kojima se efikasno dolazi do željenih numeričkih okruženja, MATBLAB se nametnuo kao

nezamenljiv alat za analizu i rešavanje različitih problema u mnogim oblastima inženjerske prakse

i u različitim akademskim istraživanjima. Pored toga, on omogućava programski i interaktivni rad.

U interaktivnom radu naredbe se zadaju direktno u komandnom prozoru ovog radnog okruženja i

direktno se izvršavaju po zadavanju. Naredbe koje su prethodno izvršene ostaju u istoriju i lako se

mogu vratiti jednostavnim pritiskanjem tastera ↑ na tastaturi (gore). One se zatim mogu menjati i

ponovo pokretati. Pored ovoga, moguće je takođe pozivanje programa iz komandnog prozora tako

što navedemo njegovo ime. Oni se izvršavaju liniju po liniju.

Najjednostavniji način za korišćenje MATLAB – a je kao veoma moćan kalkulator.

Pomoću pozivanja ugrađenih funkcija lako možemo izvesti mnoge eksponencijalne,

trigonometrijske ili aritmetičke operacije. Pored ovih osnovnih, ovo radno okruženje omogućava

veliku kolekciju funkcija pomoću kojih je moguće izvršavanje veoma složenih operacija. Velika

prednost je i što je moguće definisanje sopstvene funkcije.

Numerička izračunavanja u MATLAB – u se obavljaju korišćenjem veličina klase double,

pa se zbog toga u digitalnoj obradi slike ova klasa često koristi za reprezentaciju vrednosti piksela.

Tada se svaki element pamti kao 64–bitni broj u pokretnom zarezu. Međutim, na ovaj način slike

mogu zauzimati izuzetno mnogo memorije. Danas čak i mobilni telefoni mogu praviti panoramske

fotografije rezolucija većih od 50Mpix. Na primer, slika dimenzija 1000x1000 piksela zahtevala

Page 7: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 6

bi oko 8MB prostora. U praksi je zadovoljavajuća i grublja kvantizacija vrednosti piksela pa se

često koriste 8–bitne i 16–bitne reprezentacije vrednosti piksela. U MATLAB – u su ove

reprezentacije podržane klasama uint8 i uint16 koje omogućavaju da se svaki element matrice

(piksel) memoriše kao 8–bitni, odnosno 16–bitni neoznačeni celi broj. Pored ovih, za

reprezentaciju vrednosti piksela koristi se i klasa logical.

Ovu osobinu MATLAB – a ćemo iskoristiti prilikom kompresije i kodiranja slika.

Pored osnovnih funkcija, MATLAB raspolaže dodatnim paketima alata za rešavanje

posebnih klasa problema (eng. toolbox) koji se mogu dobiti uz osnovnu verziju programa. Pored

njih, postoje i paketi koji se posebno nabavljaju. Neki od osnovnih su Signal Processing Toolbox

(koji obezbeđuje grafičko okruženje, omogućava opisno skiciranje blok dijagrama sistema i

izvršava njihova simulacija), Control System Toolbox (kolekcija algoritma za modeliranje, analizu

i projektovanje različitih sistema automatskog upravljanja), Identification Toolbox (za primenu u

identifikaciji sistema), Statistic Toolbox (velika primena u statistici), Neural Network Toolbox

(koristi se za rad sa neuralnim mrežama), Optimisation Toolbox (za rešavanje različitih linearnih

i nelinearnih problema), Image Processing Toolbox (digitalna obrada slike). Broj podržanih paketa

je ogroman, pa mnoge od njih čak ni eksperti ne koriste niti znaju sve postojeće funkcije. Sa druge

strane, kada se jednom usvoje osnovne operacije, sve složene komande i funkcije se usvajaju lako

i brzo. Umnogome pomaže ugrađena naredba help, koja sadrži detaljno objašnjenje mnogih

problema sa kojima se korisnici susreću i mnoge praktične primere od kojih su neki korišćeni u

izradi ovog rada.

Mi ćemo se u ovom radu fokusirati na poslednji navedeni Toolbox.

U Image Processing Toolbox – u su podržana četiri osnovna tipa slika koji se javljaju i u

poznatim rasterskim grafičkim programima kao što je Adobe Photoshop, GIMP i drugi. Ovi tipovi

su:

1. Indeksirane slike,

2. Intenzitetske slike,

3. RGB slike,

4. Binarne slike.

Page 8: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 7

Tipom slike se utvrđuje veza između vrednosti elemenata matrice i boje, intenziteta

piksela.

Indeksirane slike se čuvaju u memoriji kao dve matrice i to matrica slike i paleta. Matrica

slike za svaki piksel sadrži indeks elemenata u paleti boja koji predstavlja boju tog elementa. Ona

predstavlja matricu klase double koja ima dimenzije m x 3. Svaka vrsta palete sadrži vrednosti

crvene, zelene i plave (R, G, B) komponente određene boje. To su realni skalari koji imaju

vrednosti iz uređenog para [0, 1]. Paleta, sa druge strane, sadrži vrednosti koje predstavljaju boje

piksela u slici. Osnovni format za indeksirane slike je .tiff.

Intenzitetska slika se u MATLAB – u čuvaju kao jedna matrica u kojoj svaki element

odgovara jednom pikselu slike. Ta matrica može biti klase double kada su njeni elementi iz opsega

[0, 1], klase uint8 kada sui z opsega [0, 255] ili uint 16 kada su [0, 65535]. Elementi te matrice

predstavljaju nijansu sive (odnosno intenzitet, odakle je i dobio naziv) pojedinih piksela, gde

vrednost 0 odgovara crnoj a 1 (tj. 255 ili 65535) odgovara beloj boji, odnosno pun intenzitet. Ovu

karakteristiku ćemo koristiti u ovom radu.

Kada je reč o binarnim slikama, kao što mu i samo ime kaže, svaki piksel može imati samo

jednu od dve vrednosti. Te date vrednosti se mogu tumačiti kao pozadina i objekat. Slika se

predstavlja uz pomoć matrice sa elementima 0 i 1, gde ove dve vrednosti predstavljaju pozadinu i

objekat, respektivno. Kao što vidimo, ovaj tip slika se zbog ove karakteristike može smatrati

posebnim, najjednostavnijim, slučajem intenzitetskih slika. Treba obratiti pažnju da se u slučaju

binarnih slika koriste isključivo elementi klase logical. Matrica koja se sastoji iz elemenata 0 i 1

ali čija klasa nije logical, se ne smatra binarnom slikom u MATLAB – u.

Kada je reč o RGB slikama, one se poput indeksiranih slika određuju na osnovu

komponente crvene, zelene i plave boje, pa su zbog toga i dobile ime (eng. Red, Green, Blue).

Osnovna razlika između ove dve vrste slika je to što se kod RGB slika one pamte u samoj matrici

slike, a ne u posebnoj paleti boja. Matrica u tom slučaju ima dimenzije m x n x 3, gde m i n

predstavljaju broj vrsta i kolona matrice slike. Treća dimenzija se sastoji iz tri ravni. Njenom

kombinacijom se dobijaju boje piksela. Zbog kompleksnosti, u ovom radu nećemo koristiti RGB

slike. One će, na samom ulazu, biti konvertovane u indeksirane slike.

Page 9: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 8

Većina funkcija u ovom toolbox – u su MATLAB M – datoteke, čiji izvorni kod možemo

pregledati otvaranjem datoteke koristeći MATLAB editor ili jednostavno ukucati type

function_name u prozoru za komande. Lokacija u kome se M – datoteka čuva se može naći

kucanjem komande which function_name u prozoru za komande. Za određivanje koja verzija IPT

je instalirana na Vašem računaru, treba ukucati ver.

Moguće je proširiti mogućnosti IPT – a tako što ćete napisati sopstvene M – datoteke,

modifikovati i proširivati postojeće M – datoteke, ili koristeći IPT u kombinaciji sa drugim toolbox

– evima.

IPT poseduje kolekciju funkcija i algoritama koji su zaduženi za popravljanje kvaliteta

slika, pooštravanje, filtriranje, korekciju šuma, kreiranje histograma, podešavanje boja i svetla,

balansa boja, kontrasta, detekciju objekata i analize oblika.

U MATLAB – u su podržani sledeći formati za čuvanje slika:

• JPEG image (*.jpg)

• Bitmap mage (*.bmp)

• EPS file (*.eps)

• Enhancet metafile (*.emf)

• MATLAB Figure (*.fig)

• Paintbrush 24 – bit file (*.pcx)

• Portable Bitmap file (*.pbm)

• Portable Document Format (*.pdf)

• Portable Graymap file (*.pgm)

• Portable Network Graphic file (*.png)

• Portable Pixmap file (*.ppm)

• Scalable Vector Graphic file (*.svg)

• TIFF image i Tiff no compression image (*.tif)

U ovom radu ćemo se fokusirati na najzastupljeniji, JPEG format.

Page 10: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 9

2. Furijeova analiza i

diskretna Furijeova

transformacija

Furijeova analiza omogućava predstavljanje signala u frekvencijskom domenu. Signal je u

frekvencijskom domenu predstavljen preko svog spektra. Značaj pretvaranja signala iz

vremenskog u frekvencijski domen leži u činjenici da se neke važne osobine signala mogu bolje

interpretirati u frekvencijskom domenu. Opšti termin Furijeova analiza se odnosi na obradu:

• kontinualnih i periodičnih signala (Furijeov red),

• kontinualnih i aperiodičnih signala (Furijeova transformacija)

• i diskretnih signala (Diskretna Furijeova transformacija).

U ovom radu ćemo posebnu pažnju posvetiti Diskretnoj Furijeovoj transformaciji.

U matematici, Diskretna Furijeova transformacija (u daljem tekstu DFT) je posebna

vrsta diskretne transformacije koja se koristi u Furijeovoj analizi. Ona nastaje odabirom jedne

periode Furijeove transformacije i transformiše jednu funkciju u drugu, pomoću postupka koji

nazivamo domen zastupljenosti frekvencije (eng. frequency domain representation) originalne

funkcije. Na taj način se spektar signala predstavlja preko niza brojeva, što omogućava

direktnu obradu na računaru.

Za DFT je potrebno uneti diskretnu funkciju na ulazu. Ovakav ulaz se može dobiti

uprošćavanjem funkcija koje se ponavljaju, kao što je na primer amplituda ljudskog glasa tokom

vremena.

Furijeova transformacija se može predstaviti na sledeći način:

𝑓(𝑣) = 𝐹𝑡[𝑓(𝑡)](𝑣)

(1)

= ∫ 𝑓(𝑡)𝑒−2𝜋𝑖𝑣𝑡𝑑𝑡∞

−∞

(2)

Page 11: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 10

Uzmimo u obzir generalizaciju u slučaju da imamo diskretnu funkciju, 𝑓(𝑡) → 𝑓(𝑡𝑘) tako

što ubacujemo 𝐹𝑘 ≡ 𝑓(𝑡), u 𝑡𝑘 ≡ 𝑘∆, sa 𝑘 = 0,… ,𝑁 − 1.

Na ovaj način dobijamo DFT 𝐹𝑛 ≡ 𝐹𝑘[{𝑓𝑘}𝑛=0𝑁−1](𝑛)

u sledećem obliku:

𝐹𝑁 ≡ ∑ 𝑓𝑘𝑒−2𝜋𝑖𝑛𝑘

𝑁

𝑁−1

𝑘=0

(3)

Inverznom transformacijom funkcije 𝑓𝑘 ≡ 𝐹𝑛−1[{𝐹𝑛}𝑛=0

𝑁−1](𝑘) dobijamo:

𝑓𝑘 =1

𝑁∑ 𝐹𝑛𝑒

2𝜋𝑖𝑛𝑘𝑁

𝑁−1

𝑛=0

(4)

DFT je naročito koristan zato što pomoću njega možemo da otkrijemo periodičnosti

prilikom unosa podataka i jačinu komponenti koje se ponavljaju. Naročito je koristan algoritam

brze Furijeove transformacije (eng. Fast Fourier transform, u daljem tekstu FFT). Taj algoritam

smanjuje broj računskih operacija koje su potrebne za 𝑁 tačaka od 2𝑁2 do 2𝑁𝑙𝑔𝑁, gde je osnova

logaritam sa osnovom dva.

FFT je isprva definisan od strane Kolija i Tukija (Cooley, Tukey) 1965. godine, iako je

Gaus još 1805. godine objasnio osnovne procese prilikom faktorizacije. DFT može biti izračunata

korišćenjem FFT – a, korišćenjem Danijelson – Lankosove leme ako je broj poena 𝑁 stepen sa

osnovom dva. Ako broj poena nema osnovu dva, transformacija može biti izvršena grupom poena

sa odgovarajućim osnovama za 𝑁 što prouzrokuje smanjivanje brzine ovog algoritma.

FFT algoritmi se u opštem slučaju dele u dve grupe – desetkovanje po vremenu i

desetkovanje po učestanosti. Koli – Tukijev FFT algoritam najpre ređa ulazne elemente u

obrnutom redu, a zatim obrazuje izlaznu transformaciju (desetkovanje po vremenu). Osnovna ideja

je da nizove dužine za 𝑁 razbijemo u dva niza dužine 𝑁

2 korišćenjem sledećeg identiteta:

𝐹𝑁 = ∑ 𝑓𝑘𝑒−2𝜋𝑖𝑛𝑘

𝑁

𝑁−1

𝑘=0

= ∑ 𝑒−

2𝜋𝑖𝑛𝑘𝑁2 + 𝑊𝑛

𝑁2−1

𝑘=0

∑ 𝑒−

2𝜋𝑖𝑛𝑘𝑁2 𝑓2𝑘+1

𝑁2−1

𝑘=0

= 𝐹𝑛𝑒 + 𝑊𝑚𝐹𝑛

𝑒

(5)

koji se naziva Danijelson – Lankosova lema.

Page 12: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 11

3. Diskretna kosinusna

transformacija

Za izradu ovog rada koristićemo osnovne principe diskretne kosinusne transformacije (eng.

Discrete Cosine Transform, u daljem tekstu DCT). DCT predstavlja tehniku za konverziju signala

u elementarne komponente frekvencija. Ona je široko rasprostranjena u postupcima kodiranja i

kompresije slika. Mi ćemo razviti neke jednostavne funkcije za korišćenje ove transformacije u

cilju rešavanja problema kompresije i kodiranja slika..

Nagli razvoj aplikacija za digitalne slike, koji uključuje objavljivanje istih na različitim

platformama, multimedijalno korišćenje, video pozivanje i televiziju visoke definicije (HDTV i

UHTV) je povećao potrebu za efikasnim i standardnim tehnikama kompresije. Usvojeni su sledeći

standardi:

1) JPEG, za kompresiju statičnih slika;

2) MPEG, za kompresiju videa;

3) CCITT H.261, za kompresiju video poziva.

Sva tri standarda koriste DCT za osnovnu tehniku kompresije. Mi ćemo se u ovom radu

fokusirati na kompresiju statičnih slika.

DCT je razvijen od strane Ahmeda, Natarajana i Raoa 1974. godine. On je razvijen po

ugledu na Diskretnu Furijeovu transformaciju, ali za razliku od nje koristi isključivo realne

brojeve. Prvu primenu za kompresiju i kodiranje slika su pronašli Čen i Prat (Chen, Pratt) 1984.

godine. Postoje dve osnovne varijante DCT – a, i to:

1) Jednodimenzionalna DCT i

2) Dvodimenzionalna DCT.

Page 13: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 12

3.1. Jednodimenzionalna DCT

Jednodimenzionalna konačna diskretna sekvenca poput x[n], n = 0, 1…, N – 1 može se

razviti u red ortogonalnih funkcija g[n, k], sa konačnim brojem članova, na sledeći način:

𝑥[𝑛] = ∑ 𝑋[𝑘]𝑔[𝑛, 𝑘], 𝑛 = 0, 1, … ,𝑁 − 1

𝑁−1

𝑘=0

gde su koeficijenti razvoja određeni izrazom:

(6)

𝑋[𝑘] = ∑ 𝑥[𝑛]𝑓[𝑛, 𝑘], 𝑘 = 0, 1, … ,𝑁 − 1

𝑛

𝑘=0

(7)

Diskretna funkcija f[n, k] naziva se jezgro direktne transformacije ili bazisna funkcija, a

funkcija g[n, k] se naziva jezgro inverzne transformacije. U matričnom obliku, jednačine (6) i (7)

izgledaju ovako:

XN = FN×NxN

xN = GN×NXN

(8)

Vektori XN i xN imaju sledeći oblik:

XN = (𝑋1, 𝑋2 …𝑋𝑛)𝑇

xN = (𝑥1, 𝑥2 …𝑥𝑛)𝑇

(9)

Ovde je FN×N=[f[n,k]] transformaciona matrica dimenzija N×N, a GN×N=[g[n, k]] matrica

inverzne transformacije istih dimenzija za koje važi:

GN×N= F-1N×N (10)

Skup funkcija f[n,k] zadovoljava osobinu ortonormalnosti (11) i uslov kompletnosti (12):

∑ 𝑓[𝑛, 𝑘]𝑓 ∗ [𝑛, 𝑘′] = 𝛿[𝑘 − 𝑘′]

𝑘

𝑛=0

(11)

Page 14: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 13

∑ 𝑓[𝑛, 𝑘]𝑓 ∗ [𝑛′, 𝑘] = 𝛿[𝑛 − 𝑛′]

𝑘

𝑛=0

(12)

Gde za 𝑓[𝑛, 𝑘] važi:

𝑓[𝑛, 𝑘] =∝𝑘 cos [𝜋(2𝑛 + 1)

2𝑁]

(13)

Dok za 𝛿[𝑘 − 𝑘′] važi:

𝛿[𝑘 − 𝑘′] =1

2𝜋∫ 𝑑𝑝 cos (𝑝𝑘 − 𝑝𝑘′)

−∞

(14)

Vrste transformacione matrice FN×N čine skup bazisnih vektora u N dimenzionalnom vektorskom

prostoru. Oni predstavljaju skup ortonormalnih vektora pošto zadovoljavaju osobinu

ortonormalnosti (11).

3.2. Dvodimenzionalna DCT

Izvođenje DCT za dvodimenzionalne slike predstavlja jednostavnu generalizaciju

jednodimenzionalnog slučaja. Dvodimenzionalna DCT M×N matrice A je definisana na sledeći

način:

𝐵𝑝𝑞 =∝𝑝∝𝑞 ∑

𝑀−1

𝑚=0

∑ 𝐴𝑚𝑛𝑐𝑜𝑠𝜋(2𝑚 + 1)𝑝

2𝑀𝑐𝑜𝑠

𝜋(2𝑛 + 1)𝑞

2𝑁, 0≤𝑞≤𝑁−10≤𝑝≤𝑀−1

𝑁−1

𝑛=0

(15)

∝𝑝= {

1

√𝑀, 𝑝 = 0

√2/𝑀, 1 ≤ 𝑝 ≤ 𝑀 − 1

∝𝑞= {

1

√𝑁, 𝑞 = 0

√2/𝑀, 1 ≤ 𝑞 ≤ 𝑁 − 1

(16)

Inverzna DCT jednačina može biti predstavljena kao bilo koja suma funkcija MN u

sledećem obliku:

∝𝑝∝𝑞 𝑐𝑜𝑠𝜋(2𝑚 + 1)𝑝

2𝑀𝑐𝑜𝑠

𝜋(2𝑛 + 1)𝑞

2𝑁, 0≤𝑞≤𝑁−10≤𝑝≤𝑀−1

(17)

Page 15: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 14

Ove funkcije se nazivaju bazisne funkcije DCT. Koeficijent ove transformacije Bpq mogu

se smatrati kao težina koja se dodaje svakoj bazisnoj funkciji. Ukoliko imamo matricu 8×8, 64

bazisne funkcije su ilustrovane sledećom slikom.

Slika 1. 64 bazisne funkcije matrice 8×8

Na slici 1. vidimo da se horizontalne frekvencije povećavaju sa leva na desno, dok se

vertikalne povećavaju od vrha ka dnu. Bazisna funkcija sa konstantnim vrednostima u gornjem

levom ćošku se naziva DC bazisna funkcija, a odgovarajući DCT B00 koeficijent se naziva DC

koeficijent.

Page 16: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 15

Kao ilustracija dvodimenzionalne transformacije, primenićemo DCT na slici našeg

čuvenog naučnika Nikole Tesle. Data slika zauzima 307KB prostora na disku. Prikazivanje ove

slike u MATLAB – u vršimo sledećim kodom:

A = imread('tesla.jpg'); imshow(A)

Slika 2. Originalna slika

Page 17: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 16

Za izvršavanje kompresije i dekompresije naše slike potrebno je otvoriti datoteku

imagec.m i podesiti putanju na odgovarajuću fasciklu. Obično MATLAB to automatski odradi

prilikom pokretanja kodova. Zatim pokrećemo kod klikom na taster RUN. MATLAB će nas pitati

za ime slike u navodnicima nad kojom želimo da izvršimo DCT. Za potrebe našeg primera

koristićemo sliku ’tesla.jpg’. Zbog obimnosti koda, on je dat u prilogu. Autor je potpisnik ovih

redova.

Kod će podeliti sliku u blokove dimenzija 8×8 piksela. Taj blok piksela se može videti u

obliku matrice:

B =

[ 255 234 255 255 255 255 255 255207 212 255 255 255 255 255 255216 195 225 255 252 255 254 247217 218 214 239 252 255 250 248218 230 205 218 251 255 246 252217 218 209 206 249 255 244 255212 202 222 208 243 253 247 255206 202 229 217 235 250 252 255]

Nule predstavljaju crnu boju, 255 belu, a sve vrednosti izmeću predstavljaju sivu. Mi ćemo

sa svake vrednosti odstraniti 128, i dobiti matricu:

f =

[ 87 106 127 127 127 127 127 12779 84 127 127 127 127 127 12788 67 97 127 124 127 126 11989 90 86 111 111 124 122 12090 102 77 90 123 127 118 12789 90 81 78 121 127 116 12784 74 94 80 115 125 119 12778 74 101 89 107 122 124 127]

Transponovana matrica ima sledeći oblik:

T =

[ 0,3536 0,3536 0,3536 0,3536 0,3536 0,3536 0,3536 0,35360,4904 0,4157 0,2778 0,0975 −0,0975 −0,2778 −0,4157 −0,47040,4619 0,1913 −0,1913 −0,4619 −0,1619 −0,1913 0,1913 0,46190,4157 −0,0975 −0,4904 −0,2778 0,2778 0,4904 0,0975 −0,41570,3536 −0,3536 −0,3536 0,3536 0,3536 −0,3536 −0,3536 0,35360,2778 −0,4904 0,0975 0,4157 −0,4157 −0,0975 0,4904 −0,27780,1913 −0,4619 0,4619 −0,1913 −0,1913 0,4619 −0,1619 0,19130,0975 −0,2778 0,4157 −0,4904 0,4904 0,4157 0,2778 −0,0975]

Page 18: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 17

Kao što vidimo, transponovana matrica im 8 𝑥 8 oblik, gde se svaki element 𝑡𝑚𝑛

izračunava na sledeći način:

𝑡1𝑛 = √1

8

(18)

𝑡𝑚𝑛 = √1

4cos (

𝜋(2𝑛 − 1)(𝑚 − 1)

16)

(19)

Računamo 𝐹 = 𝑇𝑓𝑇’ i dobijamo sledeću matricu:

F =

[ 241,831 242,891 279,307 293,096 342,240 356,735 349,129 352,8461,960 12,290 31,792 53,834 15,728 3,283 7,965 −2,612

−9,146 −5,352 38,254 7,312 −6,579 −2,692 5,847 6,1504,998 26,741 −2,756 −18,649 5,395 1,884 −5,548 5,0341,414 20,153 −2,828 1,768 −2,121 −1,061 1,061 −0,7074,439 −3,247 −3,658 1,018 0,379 0,408 −0,451 −2,4433,788 −2,758 −7,426 1,946 −1,102 −0,033 0,257 −1,7822,341 −3,334 −4,393 0,724 −0,626 −0,068 0,266 −1,364 ]

Koristićemo sledeću matricu kvantizacije zvaničnog JPEG standarda:

Q =

[ 16 11 10 16 24 40 51 6112 12 14 19 26 58 60 5514 13 16 24 40 57 69 5614 17 22 29 51 87 80 6218 22 37 56 68 109 103 7724 35 55 64 81 104 113 9249 64 78 87 103 121 120 10172 92 95 98 112 100 103 99 ]

Primećujemo kako unosi u donjem desnom uglu teže većim brojevima.

Kvantizacija je definisana kao celobrojno deljenje svakog DCT koeficijenta sa

odgovarajućim koeficijentom navedene matrice kvantizacije, pomoću sledeće formule:

F𝑄(𝑢, 𝑣) = Celobrojno deljenje 𝐹(𝑢, 𝑣)

𝑄(𝑢, 𝑣)

(20)

Page 19: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 18

Dobijamo matricu koja ima sledeći oblik:

FQ =

[ 15 22 28 18 14 9 8 60 1 2 3 1 0 0 0

−1 0 2 0 0 0 0 00 2 0 −1 0 0 0 00 1 0 0 0 0 0 00 1 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0]

Poslednja matrica se sastoji od puno nula. Razlog tome je veća apsolutna vrednost

kvantizatora od apsolutnih vrednosti DCT koeficijenata koji posle celobrojnog deljenja postaju

nula. Koliko će elemenata matrice biti zaokruženo na nulu zavisi od sadržaja pojedinačnog bloka

i od izbora kvantizatorske tablice (da li se koristi standardna, za luminantne komponente, kao u

našem slučaju, ili neka druga). Postupkom kvantizacije se smanjio broj potrebnih bitova za prikaz

DCT koeficijenta. To u praksi znači da naša slika zauzima manje prostora na disku.

Evo primera bloka piksela pre i posle kodovanja:

1) 2)

Slika 3. 1) Originalni blok pre bilo kakve obrade; 2) Blok posle dekompresije

U našem primeru vidimo razliku između ova dva bloka. I pored toga, on sadrži dovoljno

informacija za približnu rekonstrukciju iste slike.

Page 20: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 19

Postupak se ponavlja za svaki blok 8 × 8 ove slike, a zatim se svaki blok snima na disk.

Dekompresija i dekodiranje slike podrazumeva isti postupak kao gore navedeni u suprotnom

rasporedu. Dati kod na izlazu prikazuje sliku posle dekompresije. Ukoliko ovu sliku sačuvamo u

jpg formatu, poput originalne, koristeći ugrađenu „save as“ komandu, primetićemo da izlazna slika

ima višestruko manju veličinu, odnosno 76.7KB. Originalna slika je zauzimala 307KB, odnosno

tačno četiri puta više.

Pogledaćemo sada kompletnu sliku pre i posle obrade:

1) 2)

Slika 4. 1) Slika pre kompresije i kodovanja; 2) Slika posle kompresije i kodovanja

Kao što vidimo na slici 4., slika po završetku ovog postupka se razlikuje od originalne

slike, pre svega fine nijanse sive boje su izgubljene a sačuvani su kontrasni tonovi. Međutim,

ušteda prostora prilikom ovog postupka je izuzetno velika i ona opravdava gubitke u kvalitetu.

Page 21: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 20

4. Restauracija slike

Pomoću MATLAB – a moguće je kreirati kod koji služi za restauraciju slika. Restauracija

je proces obrade oštećene slike u cilju uklanjanja određenih degradacija u kvalitetu da bi se kao

rezultat dobila slika što bliža originalnoj slici. Za razliku od tehnika poboljšavanja vizuelnog

aspekta slike, koji je većinom subjektivan proces, restauracija je najvećim delom objektivan

proces, gde uklanjamo degradaciju koristeći znanje koje smo već stekli o načinu na kojem je

degradacija nastala. Za uklanjanje degradacija koristimo inverzni postupak u cilju restauracije

originalne slike.

Kao primer prethodne tvrdnje možemo navesti povećanje kontrasta, zato što je slika sa više

kontrasta često ugodnija ljudskom oku, pa stoga ta tehnika spada u tehnike poboljšavanja slike. Za

razliku od njega, odstranjivanje zamućenja slike (eng. deblurring) predstavlja jednu od osnovnih

tehnika restauracije slika.

Određena slika može se smatrati „lošom“ zbog mnogo razloga. Svako ko je ikada uslikao

sliku, bilo ona digitalnog ili analognog oblika, zna kako zamrljana ili zamućena slika izgleda. To

zamućenje može nastati iz mnogo različitih razloga, kao što je, na primer, defokusiranje objektiva

kamere. Tom prilikom, zamućenje dolazi od same kamere, tačnije od optičkog sistema objektiva.

Bez obzira koliko se trudili da pravilno fokusiramo kameru, postoje fizički limiti same

konstrukcije koji nas sprečavaju da napravimo sliku idealne oštrine. Neki od ovih limita nastaju

zato što svetlo putuje različitim talasnim dužinama (različitim bojama) i ulazi u kameru, a tačan

put kretanja svetla zavisi od njegove talasne dužine. Kamere koje imaju objektive visokog kvaliteta

kompenzuju ovaj problem koliko je to moguće.

Nekada ovakva ograničenja nisu problem, ali ponekad ove male nesavršenosti moramo

uzeti u obzir, kao na primer u mikroskopiji.

Nekada zamućenje slike nastaje izvan mehanizma kamere i van kontrole fotografa. Dobar

primer je zamućenje prilikom pokreta (eng. motion blur) – objekat se pomerio dok je zatvarač

(eng. shutter) aparata bio otvoren, što je za rezultat imalo zamrljan objekat na slici. Isti problem se

javlja ako se aparat pomera prilikom fotografisanja.

Zamućene slike nisu vizuelno privlačne i mnogi programi za obradu slika sadrže osnovne

elemente za korekciju ovog problema. Mi ćemo za rešavanje istog koristiti MATLAB.

Page 22: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 21

4.1. Model procesa degradacije i restauracije

slika

Kao što vidimo na slici 5, proces degradacije je modelovan kao funkcija, koja zajedno za

šumom operiše na ulaznoj slici f(x, y) i za rezultat daje izlaznu sliku degradiranog kvaliteta g(x, y).

Ukoliko imamo g(x, y), neko znanje o funkcije degradacije H i o stepenu šuma µ(x, y), cilj

restauracije je doći do procenjenog ḟ(x, y)originalne slike. Mi želimo da procena bude što bliža

originalnoj slici, zbog čega mi moramo znati što više o H i µ.

Slika 5. Model procesa degradacije i restauracije slike

Prostorni domen degradirane slike dat je sa:

𝑔(𝑥, 𝑦) = ℎ(𝑥, 𝑦) ∗ 𝑓(𝑥, 𝑦) + 𝜇(𝑥, 𝑦) (21)

Gde je h(x, y) prostorni domen funkcije degradacije, 𝜇 predstavlja šum, a simbol *

predstavlja konvoluciju. Skup u prostornom domenu je jednak množenju u frekvencijskom

domenu, pa je model predstavljen u jednačini (14) ekvivalentan sledećem predstavljanju

frekvencijskog domena:

𝐺(𝑢, 𝑣) = 𝐻(𝑢, 𝑣)𝐹(𝑢, 𝑣) + 𝑁(𝑢, 𝑣) (22)

gde su velikim slovima označene Furijeove transformacije (eng. Fourier transformations)

odgovarajućih izraza iz jednačine (14). Ove dve jednačine čine osnovu ovog poglavlja.

Page 23: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 22

4.2. Model šuma

Osnovni izvori šuma u digitalnim slikama javljaju se prilikom pravljenja same slike

(digitalizacije), ili prilikom prenosa iste. Performanse objektiva aparata su pod uticajem mnogih

faktora, kao što su uticaj okruženja prilikom slikanja kao i kvalitet samih komponenti. Kod

pravljenja fotografija digitalnim aparatima, nivoi svetlosti i temperatura senzora su najveći razlog

stvaranja šuma na slici. Takođe, oštećenja mogu nastati usled smetnji na kanalu prilikom prenosa

slike.

Da bismo odstranili šum sa slike, jako je bitno definisati prostorni domen šuma i u kakvoj

je vezi sa samom slikom. Frekvencijska svojstva se odnose na frekvencijski sadržaj šuma u

Furijeovom smislu (npr. da li je suprotna elektromagnetnom spektru). Na primer, kada je Furijeov

spektar šuma konstantan, šum nazivamo belim šumom. Ova terminologija proističe od fizičkih

svojstava belog svetla, koji sadrži gotovo sve frekvencije vidljivog spektra u jednakim

proporcijama.

Sa izuzetkom periodičnog šuma, pretpostavićemo da je šum nezavisan od prostornih

koordinata i da nije povezan sa samom slikom. Iako su ove pretpostavke u nekim slučajevima

delimično netačne (npr. rendgenski snimci) kompleksnost ovakvih šumova su izvan granica ovog

master rada.

Na osnovu prethodne pretpostavke, opis prostornog šuma kojim ćemo se mi baviti zavisi

od statističkog ponašanja sivih vrednosti komponente šuma sa modela predstavljenog na slici 1.

Oni se mogu smatrati nasumičnim, a opisuju se funkcijom gustine verovatnoće (eng. Probability

density function, u daljem tekstu PDF). Opisaćemo najčešće vrste PDF – a:

Page 24: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 23

Gausov šum

Model Gausovog šuma (eng. Gaussian noise), koji se često nazivan i „normalan šum“, se

zbog svoje matematičke fleksibilnosti u prostornom i frekvencijskom domenu često susreće u

praksi.

PDF Gausove slučajne promenljive z je dat sa:

𝑝(𝑧) =1

√2𝜋𝜎𝑐(𝑧−𝜇)2/2𝜎2

(23)

gde z predstavlja nivo sive, µ je srednja vrednost od z i 𝜎 standardna devijacija. Kada je

standardna devijacija kvadrirana, 𝜎2, nazivamo ga varijansa od z. Grafik te funkcije je prikazan na

slici 2. a). Kada je z opisan jednačinom (16), oko 70% njegove vrednosti će biti u opsegu [(µ

- 𝜎), (µ + 𝜎)], a oko 95% će biti u opsegu [(µ - 2 𝜎), (µ + 2𝜎)].

Rejlijev šum

PDF Rejlijevog šuma (eng. Rayleigh noise) je dat sa:

𝑝(𝑧) = {

2𝑏

(𝑧 − 𝑎)𝑒−(𝑧−𝑎)2

𝑏

0

𝑧𝑎 𝑧 ≥ 𝑎

𝑧𝑎 𝑧 < 𝑎

(24)

srednja vrednost i varijanse gustine su date sa:

μ = a + √𝜋𝑏/4 (25)

i

σ2 =𝑏(4 − 𝜋)

4

(26)

Grafik gustine Rejlijevog šuma je prikazan na slici 2. b). Primećujemo odstupanje od

grafika PDF Gausove slučajne promenljive i činjenicu da je osnovni okvir nakrivljen na desno.

Rejlijeva gustina može biti korisna za aproksimaciju nakrivljenih histograma.

Page 25: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 24

Erlangov (Gama) šum

PDF Erlangovog ili Gama šuma (eng. Erlang (Gamma) noise) je dat sa:

𝑝(𝑧) = {

𝑎𝑏𝑧𝑏−1

(𝑏 − 1)!𝑒−𝑎𝑧

0

𝑧𝑎 𝑧 ≥ 0

𝑧𝑎 𝑧 < 0

(27)

gde su parametri poput a>0 pozitivne celobrojne vrednosti, a „!“ predstavlja faktorijel.

Srednja vrednost i varijanse u gustini date su sa:

μ =𝑏

𝑎

(28)

i

σ2 =𝑏

𝑎2

(29)

Grafik gustine ovog šuma dat je na slici 2. c). Iako se jednačina (20) često odnosi na Gama

šum, preciznije bi bilo reći da se to odnosi samo ukoliko je imenilac gama funkcija Г(b). Kada je

imenilac definisan kao na slici, gustina se naziva Erlang gustina.

Page 26: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 25

Slika 6. Neke važnije funkcije verovatne gustine

Page 27: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 26

Eksponencijalni šum

PDF eksponencijalnog šuma dat je na sledeći način:

𝑝(𝑧) = {𝑎𝑒−𝑎𝑧

0

𝑧𝑎 𝑧 ≥ 0

𝑧𝑎 𝑧 < 0

(30)

gde je a>0. Srednja vrednost i varijanse u gustini date su sa:

μ =1

𝑎

(31)

i

σ2 =1

𝑎2

(32)

Ova funkcija je posebna vrsta Erlang PDF – a, sa b = 1. Grafik gustine ovog šuma dat je

na slici 2. d).

Jednolični šum

PDF jednoličnog šuma (eng. Uniform noise) dat je na sledeći način:

𝑝(𝑧) = {

1𝑏 − 𝑎

0

𝑎𝑘𝑜 𝑗𝑒 𝑎 ≤ 𝑧 ≥ 𝑏

𝑖𝑛𝑎č𝑒

(33)

Srednja vrednost i varijanse u gustini date su sa:

μ =𝑎 + 𝑏

2

(34)

a njegove varijanse sa:

σ2 =(𝑏 − 𝑎)2

12

(35)

Slika 6. e) pokazuje gustinu jednoličnog šuma.

Page 28: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 27

Impulsni (so – i – biber) šum

PDF (bipolarnog) impulsnog šuma (eng. Impulse (salt – and – pepper) noise) je dat sa:

𝑝(𝑧) = {

𝑃𝑎 𝑧𝑎 𝑧 = 𝑎𝑃𝑏 𝑧𝑎 𝑧 = 𝑏0 𝑢 𝑠𝑢𝑝𝑟𝑜𝑡𝑛𝑜𝑚

(36)

Ako je b>a, nivo sive b će se pojaviti kao svetla tačka na slici. U suprotnom slučaju, nivo

a će se pojaviti kao tamna tačka. Ukoliko je 𝑃𝑎 ili 𝑃𝑏 nula, impulsni šum nazivamo unipolarni. Ako

nijedna verovatnoća nije jednaka nuli, i ako su približno jednake, impulsne vrednosti šuma će

podsećati na zrnca bibera i soli koja su nasumično raspoređeni po slici. Zbog toga, bipolarni

impulsni šum se takođe naziva so – i – biber šum.

Impulsi ovog šuma mogu biti pozitivni ili negativni. Skaliranje je često deo procesa

digitalizacije slika. Zato što je impulsno oštećenje obično veliko u poređenju sa snagom signala

slika, impulsni šum je generalno digitalizovan kao ekstremna vrednost (čista bela ili crna) na slici.

Zbog toga, pretpostavljamo da su a i b zasićene vrednosti, u smislu da su jednake minimalnoj i

maksimalnoj dozvoljenoj vrednosti digitalizovane slike. Kao rezultat, negativni impulsi se

pojavljuju kao crne (biber) tačke na slici. Iz istog razloga, pozitivni impulsi se pojavljuju kao beli

(so) šum. Za 8 – bit sliku ovo znači da je a = 0 (crno) i b = 255 (belo). Slika 6. f) nam pokazuje

PDF impulsnog šuma.

Page 29: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 28

Kao što smo već naveli, pomoću MATLAB – a je moguće je dodavati i odstranjivati šum

sa slika. Na sledećem primeru imamo sliku na kojoj je dodat so – i – biber šum sa vrednošću 20%

i drugu sliku na kojoj je taj šum odstranjen pomoću median filtera:

slika = imread('Moon.tif');

[r c]=size(slika);

d=ndims(slika);

if d == 3

slika = rgb2gray(slika);

end

slika = double(slika);

slika = slika/225;

slika1=imnoise(slika,'salt & pepper',0.3);

slika2 = medfilt2( slika1 ,[5 5]);

imshow(slika2);

clc;

psnr( slika1 , slika2 );

subplot(1,2,1);

imshow(slika1);

title('Slika sa šumom');

subplot(1,2,2);

imshow(slika2);

title('Slika bez šuma');

Page 30: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 29

Na slici 7. vidimo rezultat inicijalizacije našeg koda:

Slika 7: Primer dodavanja i odstranjivanja šuma sa slike Moon.tif

Page 31: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 30

4.2. Modeli zamućenja slike

Uzroci degradacije slike mogu biti različiti: zamućenost usled lošeg fokusiranja, pokreti

objekata i/ili pozadine, šum, proces kvantizacije, mehanički problemi, neodgovarajuća

osvetljenost… Ovo je posebno izraženo u poslednjih nekoliko godina, kada je većina slika

napravljena mobilnim telefonima, koji obično imaju male senzore i uzan otvor blende. Iako mnogi

programi za manipulaciju digitalnim slikama sadrže korisne osnovne alatke za popravljanje

kvaliteta slike, poput „izoštravanja“ kontura slika, oni ne mogu da nam pomognu kod većih

zamućivanja koja često nastaju u praksi. Mi ćemo pretpostaviti da zamućivanje može biti opisano

matematičkim modelom, i taj model ćemo koristiti za rekonstrukciju oštrije i vizuelno privlačnije

slike. Druga pretpostavka je da je zamućivanje, odnosno operacija zbog koje smo od oštre slike

dobili zamućenu, linearna. Ovo je najčešće slučaj u praksi, a činjenica je da nam prilikom procesa

rekonstrukcije slika pomažu alati iz linearne algebre i matričnih računanja.

Pre nego što počnemo sa restauracijom slika, moramo napraviti matematički model

nepoznate originalne slike. Na slici 8. vidimo „pravi“ prizor, a sa desne strane zamagljenu verziju

iste slike. Zamagljena verzija je rezultat koji bi fotograf dobio ukoliko ne izfokusira prizor prilikom

slikanja.

Slika 8. Oštra slika (levo) i odgovarajuća zamućena slika (desno)

Crno – bela slika, poput slike 4., se može predstaviti kao matrica dimenzija m × n čiji

elementi, pikseli, predstavljaju jačinu osvetljenja. Tačnije, sa 𝑋 ∈ 𝑅𝑚×𝑛 predstavlja željenu oštru

sliku, dok 𝐵 ∈ 𝑅𝑚×𝑛 predstavlja snimljenu zamućenu sliku.

Page 32: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 31

Neophodno je napraviti model zamućenja koji se može primeniti u praksi. Cilj tog

linearnog modela je zamena mesta elemenata slike X i B u kolonama vektora tako što ređamo

kolone ovih slika u dva duga vektora x i b, oba dužine N = m n. Matematički oblik ovog operatora

je vec, na primer:

𝑥 = 𝑣𝑒𝑐(𝑋) = [𝑥11::

𝑥𝑛1

𝑥12::

𝑥𝑛2

...::…

𝑥1𝑛::

𝑥𝑛𝑛

] ∈ 𝑅𝑁 , 𝑏 = 𝑣𝑒𝑐(𝐵) = [𝑏11::

𝑏𝑛1

𝑏12::

𝑏𝑛2

...::…

𝑏1𝑛::

𝑏𝑛𝑛

] ∈ 𝑅𝑁 , 𝑁 = 𝑛2

Pošto smo pretpostavili da je zamućenje linearna operacija, mora postojati velika matrica

zamućenja 𝐴 ∈ 𝑅𝑁×𝑁, takva da su x i b povezani linearni modeli:

𝐴𝑥 = 𝑏 (37)

i ovo je osnovni model zamućenja slike.

Kada pričamo o snimljenoj zamućenoj slici, koristimo oznaku matrice B za oznaku niza

slike, i b = vec(B) kada pričamo o vektorima. Takođe, pretpostavka je da je originalna slika istih

dimenzija kao zamućena, i to možemo predstaviti ili kao m × n matricu X ili kao vektor x = vec(X).

Dakle, snimljena slika b je zamućena verzija idealne slike x.

U linearnom modelu, postoji velika matrica A dimenzija N × N, sa N = mn, takvi da su b i

x povezani relacijom (15). Matrica A predstavlja zamućenje koje se dešava u procesu zamućivanja

slike.

Ovu matricu možemo objasniti na sledećem praktičnom primeru: zamislite potpuno crnu

sliku, sa izuzetkom jednog belog piksela. Ako napravimo fotografiju te slike, operacija zamućenja

će prouzrokovati širenje tog piksela na okolne slike, što je predstavljeno na slici 9. Taj jedini svetli

piksel nazvaćemo izvor tačke (eng. Point source), a funkciju koja opisuje zamućivanje i

rezultujuću sliku tačke svetlosti nazvaćemo funkcija širenja tačke (eng. Point spread function, u

daljem tekstu PSF).

Slika 9. Levo: jedan svetli piksel, koji nazivamo izvor tačke; desno: zamućena tačka svetlosti,

nazvana funkcija širenja tačke

Page 33: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 32

Matematički, izvor tačke je ekvivalentan nizu koji se sastoji od svih nula, sa izuzetkom

jednog piksela čija je vrednost jednaka jedinici. Ukoliko definišemo x = ei, da bude i – ti jedinični

vektor, koji se sastoji od svih nula osim i – tog unosa, koji je jedinica. Proces pravljenja slike od

originalne se može predstaviti jednačinom

𝐴𝑒𝑖 = 𝐴(: , 𝑖) = 𝑘𝑜𝑙𝑜𝑛𝑎 𝑖 𝑜𝑑 𝐴 (38)

Ako ovaj proces ponovimo za sve jedinične vektore ei za i = 1, . . ., N, onda ćemo pribaviti

kompletnu informaciju o matrici A.

Moguće je utvrditi mnoga bitna svojstva procesa zamućenja tako što gledamo slike

različitih PSF – ova. Na primer, na slici 10. vidimo nekoliko PSF – ova u različitim lokacijama

unutar granica slike. Slike su veličine 120 × 120, a jedinični vektor ei koji se koristi za konstrukciju

ovih PSF – ova odgovara za i = 3500, 7150 i 12555.

Slika 10. Gore: zamagljena slika jednog piksela (levo) i zumirani izvor tačke (desno).

Dole: dve zamućene slike jednog piksela blizu ivica

U navedenom primeru, primetićemo da je PSF jednak bez obzira na lokaciju izvora tačke.

U tom slučaju, kažemo da je zamućenje prostorno invarijantno (eng. spatial invariant). To nije

uvek slučaj, ali se dešava često, pa ćemo za potrebu ovog rada uzeti kao pretpostavku prostornu

invariaciju.

Posledica ovoga je linearna i lokalna priroda zamućenja, i da bismo sačuvali memoriju mi

često možemo predstaviti PSF kao niz P mnogo manjih dimenzija od zamagljene slike. Na našem

primeru PSF ima veličinu 31 × 31. P predstavlja PSF niz.

Page 34: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 33

Ipak, treba imati na umu da mnogi algoritmi protiv zamućivanja traže da PSF niz bude istih

dimenzija kao sama zamagljena slika. U tom slučaju, mali PSF niz se ubacuje u veći niz sastavljen

od nula. Ovaj proces se naziva „ispunjavanje nulama“ (eng. Zero padding).

U nekim slučajevima PSF se može opisati analitički i P može biti sastavljeno iz funkcije.

Primer je zamućenje horizontalnog kretanja (eng. Horizontal motion blur), koji izvor tačke

pretvara u liniju. Ako ta linija pokriva r piksela – po kojima je svetlost rasprostranjena – onda je

dužina svakog elementa PSF niza koji je različit od nule dužine r – 1 . Ovo je prikazano na slici 11.

Slika 11. Primeri četiri PSF – a. U sva četiri primera centar PSF – a se

podudara sa centrom PSF niza

U drugim slučajevima, poznavanje fizičkih procesa koji prouzrokuju zamućenje nam pruža

eksplicitnu formulaciju PSF – a. Tada su elementi PSF niza dati tačnim matematičkim izrazom.

Na primer, elementi pij PSF niza za zamućenje van – fokusa (eng. Out – of – focus blur) dati su

izrazom:

𝑃𝑖𝑗 = {1

𝜋𝑟2

0

𝑎𝑘𝑜 (𝑖 − 𝑘)2 + (𝑗 − 𝑙)2 ≤ 𝑟2

𝑛𝑎 𝑑𝑟𝑢𝑔𝑖𝑚 𝑚𝑒𝑠𝑡𝑖𝑚𝑎

(39)

gde je (k, l) centar P, a r predstavlja prečnik zamućenja.

Page 35: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 34

PSF za zamućenje atmosferske uskomešanosti (eng. Atmospheric turbulence blur) može

biti opisano dvodimenzionalnom Gausovom funcijom, i elementi neskaliranog PSF niza su dati sa

𝑃𝑖𝑗 = 𝑒𝑥𝑝 (−1

2[𝑖 − 𝑘

𝑗 − 𝑙]𝑇

[𝑠1

2 𝜌2

𝜌2 𝑠22]

−1

[𝑖 − 𝑘

𝑗 − 𝑙])

(40)

gde parametri s1, s2 i 𝜌 određuju širinu i orijentaciju PSF – a, koji je centriran na elementu

(k, l) u P. Uvek treba skalirati P tako da zbir elemenata bude jednak 1. Gausova funkcija se raspada

eksponencijalno kako se udaljavamo od centra i razumljivo je skraćivanje vrednosti PSF niza kako

se ono raspada, recimo faktorom 104 ili 108.

PSF astronomskog teleskopa je često modelovan takozvanom Mofat funkcijom (eng.

Moffat function), i za nju ovi PSF elementi od neskaliranog PSF niza su dati sa:

𝑃𝑖𝑗 = (1 + [𝑖 − 𝑘

𝑗 − 𝑙]𝑇

[𝑠1

2 𝜌2

𝜌2 𝑠22]

−1

[𝑖 − 𝑘

𝑗 − 𝑙])

−𝛽

(41)

Poput Gausove SPF funkcije za atmosfersku uskomešanost parametri s1, s2 i 𝜌 određuju

širinu i orijentaciju PSF – a, a P treba biti skalirano tako da elementi imaju zbir 1. Dodatan

pozitivan parametar 𝛽 kontroliše raspadanje PSF – a, koji je sporiji od Gausovog PSF – a.

Ukoliko je 𝜌 = 0 u formulama za Gausovo i Mofat zamućenje, onda je PSF simetričan po

horizontalnoj i vertikalnoj osi, a formule imaju prostije oblike:

𝑃𝑖𝑗 = 𝑒𝑥𝑝 (−1

2(𝑖 − 𝑘

𝑠1)2

−1

2(𝑗 − 𝑙

𝑠2)2

) (42)

i

𝑃𝑖𝑗 = 𝑒𝑥𝑝 (1 (𝑖 − 𝑘

𝑠1)2

+ (𝑗 − 𝑙

𝑠2)2

)

−𝛽

(43)

Ukoliko je 𝑠1 = 𝑠2 onda su PSF simetrične.

Kada jednom odredimo PSF niz, uvek možemo konstruisati matricu zamućivanja A kolonu

po kolonu, jednostavno stavljajući elemente P na odgovarajuće pozicije, ostavljajući nule na

drugim mestima u koloni.

Page 36: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 35

Ukoliko želimo da izračunamo zamućenu sliku B piksel po piksel (data nam je oštra slika

X), onda treba da izračunamo

𝑏𝑖 = 𝑒𝑖𝑇𝑏 = 𝑒𝑖

𝑇𝐴𝑥 = 𝐴(𝑖, : )𝑥 (44)

Pošto mi treba da radimo sa redovima A, a ne sa kolonama, izračunaćemo svaki piksel

zamućene slike kao težinsku aritmetičku sredinu (ili prosečna, eng. weighted sum) odgovarajućih

elemenata i njemu susednih u oštroj slici. Težine (eng. weights) su elementi reda u A. Alternativno,

mi možemo koristiti činjenicu da su težine date vrednostima piksela PSF niza P, i da je operacija

težinska aritmetička sredina poznata u matematici i obradi slike kao dvodimenzionalni skup.

Page 37: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 36

4.3. Restauracija zamućene slike

u MATLAB – u

Za restauraciju ćemo koristiti Vinerov filter (eng. Wiener filter). Ime je dobio po Norbertu

Vineru (eng. Norbert Wiener) koji je prvi predložio ovaj metod 1942. godine. On predstavlja jedan

od prvih i najpoznatijih pristupa ka linearnoj restauraciji slika. Vinerov filter traži procenjeni ḟ koji

minimizira statističku funkciju greške:

𝑒2 = 𝐸{(𝑓 − ḟ)2} (45)

gde je E očekivana vrednost operatora a f je nedegradirana slika. Rešenje ovog izraza je u

frekvencijskom domenu:

�̂�(𝑢, 𝑣) =

[

1

𝐻(𝑢, 𝑣)

|𝐻(𝑢, 𝑣)|2

|𝐻(𝑢, 𝑣)|2 +𝑆𝜇(𝑢, 𝑣)

𝑆𝑓(𝑢, 𝑣)]

𝐺(𝑢, 𝑣)

(46)

gde su:

𝐻(𝑢, 𝑣) = funkcija degradacije

|𝐻(𝑢, 𝑣)|2 = 𝐻 ∗ (𝑢, 𝑣)𝐻(𝑢, 𝑣)

𝐻 ∗ (𝑢, 𝑣) = kompleksna konjugovana vrednost od 𝐻(𝑢, 𝑣)

𝑆𝜇(𝑢, 𝑣) = |𝑁(𝑢, 𝑣)|2 = spektar snage šuma

𝑆𝑓(𝑢, 𝑣) = |𝐹(𝑢, 𝑣)|2 = spektar snage degradirane slike

Odnos 𝑆𝜇(𝑢,𝑣)

𝑆𝑓(𝑢,𝑣) nazivamo odnos signala – do – šuma (eng. Noise – to – signal ratio, u daljem

tekstu NSR). Da bismo videli da li je spektar snage šuma jednak jedinici za sve relevantne

vrednosti u i v, ovaj odnos postaje nula i Vinerov filter se redukuje na običan inverzni filter.

Page 38: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 37

Odnos prosečne jačine šuma i prosečne snage slike je definisan sa:

𝜇𝐴 =1

𝑀𝑁∑∑𝑆𝜇(𝑢, 𝑣)

𝑣𝑢

(47)

i

𝐹𝐴 =1

𝑀𝑁∑∑𝑆𝑓(𝑢, 𝑣)

𝑣𝑢

(48)

Gde su M i N oznake vertikalne i horizontalne veličine nizova slike i šuma, respektivno.

Ove veličine su skalarne konstante i njihov odnos

𝑅 =𝜇𝐴

𝑓𝐴 (49)

koji je takođe skalarna vrednost, se ponekad koristi za generisanje niza konstanti umesto funkcije 𝑆𝜇(𝑢,𝑣)

𝑆𝑓(𝑢,𝑣). U tom slučaju, čak i kada ne znamo stvarni odnos, interaktivno eksperimentisanje postaje

prosto, tako što podešavamo konstantu i gledamo rezultate restauracije. Ukoliko umesto 𝑆𝜇(𝑢,𝑣)

𝑆𝑓(𝑢,𝑣)

stavimo niz konstanti u odgovarajuću jednačinu filtera dobijamo tzv. parametarski Vinerov filter.

Kao što ćemo videti u našem primeru, prosta upotreba ovog filtera nam daje izuzetno upotrebljive

rezultate restauracije slika.

Najpre ćemo kreirati zamućenu sliku sa šumom, a onda ćemo primeniti funkcije

dekonvolucije. IPT sadrži četiri funkcije za odstranjivanje zamućenja. Sve prihvataju PSF i

zamućenu sliku kao svoj primarni argument.

deconvwnr – Koristi rešenje najmanjeg kvadrata, koristeći Vinerov filter. Za restauraciju je

potrebno uneti određene informacije o šumu da bismo smanjili oštećenja koja nastaju prilikom

odstranjivanja zamućenja.

deconvreg – Implementira rešenje ograničenja najmanjeg kvadrata, koristeći regulisan filter,

gde postavljamo određena ograničenja na izlaznu sliku. Kao i u prethodnoj funkciji, moramo uneti

određene informacije o šumu za optimalni rezultat.

deconvblind – Implementira algoritam slepe dekonvolucije, koja vrši odstranjivanje

zamućenja bez znanja o PSF.

deconvlucy – Implementira ubrzani i prigušeni Lusi – Ričardson algoritam. Ova funkcija vrši

više ponavljanja, koristi tehnike optimizacije i Poisonove statistike. Nije potrebno uneti

informacije o dodatom šumu na oštećenoj slici.

Page 39: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 38

Ispitaćemo rezultate restauracije dobijene svakom od ovih funkcija.

U prvom primeru ćemo koristiti funkciju deconvwnr da izvršimo restauraciju. Ova

funkcija predstavlja implementaciju Vinerovog filtera i deo je svakog IPT. Originalnu sliku ćemo

prikazati na sledeći način:

I = im2double(imread('cameraman.tif'));

imshow(I);

title('Originalna slika');

Slika 12. Originalna slika „cameraman.tif“ koja se nalazi u sastavu

programskog paketa MATLAB

Page 40: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 39

Sledećim kodom ćemo simulirati zamućenje:

LEN = 21;

THETA = 11;

PSF = fspecial('motion', LEN, THETA);

zamucena = imfilter(I, PSF, 'conv', 'circular');

figure, imshow(zamucena)

title('Simulacija zamucenja')

Slika 13. Originalna slika na kojoj je simulirano zamućenje kretanja (eng motion blur)

Page 41: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 40

Šum ćemo ovoj slici dodati na sledeći način:

noise_mean = 0;

noise_var = 0.0001;

zamucena_sum = imnoise(zamucena, 'gaussian', ...

noise_mean, noise_var);

figure, imshow(zamucena_sum)

title('Simulacija zamucenja i šuma na slici')

Slika 14. Slika koja je nastala dodavanjem šuma na sliku 12.

Page 42: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 41

Sada ćemo probati restauraciju slike 12. pod pretpostavkom da na njoj nema šuma. Zbog

toga postavljamo da je NSR = 0:

procenjena_nsr = 0;

wnr2 = deconvwnr(zamucena_sum, PSF, procenjena_nsr);

figure, imshow(wnr2)

title('Restoracija zamucene slike koristeci NSR = 0')

Slika 15. Prvi pokušaj restauracije slike

Primetićemo da rezultati nisu zadovoljavajući i da se originalna slika jedva naslućuje. Zato

ćemo pokušati restauraciju koristeći bolju procenu NSR – a:

procenjena_nsr = noise_var / var(I(:));

wnr3 = deconvwnr(zamucena_sum, PSF, procenjena_nsr);

figure, imshow(wnr3)

title('Restauracija zamucene slike koristeci procenjeni NSR');

Page 43: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 42

Slika 16. Konačna verzija restaurisane slike korišćenjem funkcije deconwnr, odnosno

Vinerovim filterom

Kao što na slici 16. vidimo, rezultat restauracije je blizak originalu, iako još uvek imamo

šum na slici. Pošto znamo originalnu sliku i funkciju šuma, mi možemo pretpostaviti tačne

parametre, i slika 16. je najbliže što možemo doći originalu koristeći Vinerov filter u ovom slučaju.

U praksi imamo mnogo veći izazov, kada jedna (ili više) ovih stavki nije poznata. Zato moramo

eksperimentisati sa drugim funkcijama i filterima, sve dok ne dobijemo neki zadovoljavajući

rezultat.

U sledećem primeru ćemo ispitati rezultate restauracije zamućene slike koristeći

regularisan filter (eng. regularized filter). MATLAB komanda za regularisan filter je

deconvreg. To je jedna od osnovnih funkcija dekonvolucije. Radi bližeg upoređivanja rezultata

restauracije, zamutićemo i dodaćemo šum na potpuno istu sliku kao u prethodnom primeru

(cameraman.tif) na isti način. Dobijamo rezultat identičan slici 14., pa zbog toga ne navodimo isti

kod.

Page 44: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 43

Pretpostavka prilikom korišćenja navedene komande je da se koristi slika sa PSF – om i na

kojoj se nalazi šum. Navedeni kod sliku posmatra kao N dimenzionalnu matricu. Uvodimo

LRANGE koji predstavlja vektor podešavajući oblast dok ne dobijemo željeni rezultat. Algoritam

pronalazi optimalni Lagrange multiplikator LAGRA unutar LRANGE oblasti. Ispitaćemo

rezultate koje dobijamo povećavanjem navedenog multiplikatora 10 puta, kao i smanjivanjem 10

puta. Kod koji koristimo je sledeći:

subplot(221);

imshow(I);

title('Originalna Slika');

subplot(222);

imshow(zamucena_sum);

title('Zamucena slika');

subplot(223);

imshow(deconvreg(zamucena_sum,PSF,[],LAGRA*10));

title('Rezultat restauracije povecanjem LAGRA 10 puta');

subplot(224);

imshow(deconvreg(zamucena_sum,PSF,[],LAGRA/10));

title('Rezultat restauracije smanjivanjem LAGRA 10 puta');

Page 45: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 44

Zbog preglednosti smo originalnu sliku, sliku sa zamućenjem i šumom, kao i sliku sa dva

različita nivoa multiplikatora predstavili u istom prozoru. Rezultat vidimo na slici 17:

Slika 17. Primer restauracije korišćenjem deconvreg funkcije, odnosno regularisanim filterom

Kao što na slici 17. vidimo, korišćenjem ove funkcije dobijamo sasvim upotrebljive

rezultate, sa primetno manje šuma u odnosu na prošli primer. Međutim, konačna slika ima izražen

efekat „prstena“ (eng. ringing). Ovaj efekat se može delimično smanjiti korišćenjem edgetaper

funkcije pre pozivanja deconverg funkcije:

I = edgetaper(I,PSF);

Page 46: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 45

Međutim krajnji rezultat je približno isti navedenom na slici 16. Zbog toga ćemo nastaviti

sa eksperimentisanjem sa drugim funkcijama za dekonvoluciju.

Sledeći metod koji ćemo primeniti na našem primeru je slepa dekonvolucija (eng. blind

deconvolution). MATLAB komanda za slepu dekonvoluciju je deconvblind. Koristićemo istu

početnu sliku i isti način zamućenja i dodavanja šuma kao i u prethodnom primeru, pa zato nećemo

navoditi taj deo koda.

Da bismo ilustrovali važnost poznavanja veličine prave PSF, koristićemo kod koji vrši tri

restauracije. Svaki put rekonstrukcija PSF – a počinje od homogenog niza koji se sastoji od

jedinica.

Prilikom prvog pokušaja restauracije ovim metodom, koristimo niz smanjene veličine,

UNDERPSF, za početno pogađanje PSF. Veličina UNDERPSF niza je 4 piksela kraća od prave

PSF:

UNDERPSF = ones(size(PSF)-4);

[S1, P1] = deconvblind(zamucena_sum,UNDERPSF);

figure;

imshow(S1);

title('Restauracija sa smanjenom PSF');

Page 47: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 46

Kao rezultat dobićemo sledeću sliku:

Slika 18. Restauracija korišćenjem slepe dekonvolucije, sa smanjenom vrednošću PSF

Prilikom drugog pokušaja restauracije, koristićemo niz jedinica, OVERPSF, za pokretanje

PSF koja je 4 piksela duža u svim smerovima od prave PSF:

OVERPSF = padarray(UNDERPSF,[4 4],'replicate','both');

[S2, P2] = deconvblind(zamucena_sum,OVERPSF);

figure;

imshow(S2);

title('Restauracija sa povecanom PSF');

Page 48: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 47

Kao rezultat dobijamo sledeću sliku:

Slika 19. Restauracija korišćenjem slepe dekonvolucije, sa povećanom vrednošću PSF

U trećem pokušaju restauracije, koristićemo niz jedinica, INITPSF, za pokretanje PSF koja

je potpuno iste veličine kao originalna PSF:

INITPSF = padarray(UNDERPSF,[2 2],'replicate','both'); [S3, P3] = deconvblind(zamucena_sum,INITPSF); figure; imshow(S3); title('Restauracija korišcenjem originalne vrednosti PSF');

Page 49: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 48

Rezultat vidimo na sledećoj slici:

Slika 20. Restauracija korišćenjem slepe dekonvolucije, sa originalnom vrednošću PSF

Sve tri restauracije imaju svoju PSF. Sledeće slike će nam pokazati analizu rekonstruisane

PSF koja nam pomaže prilikom određivanja prave veličine početne PSF. Zbog preglednosti, sve

rezultate prikazujemo u jednom prozoru. Inicijalizaciju vršimo sledećim kodom:

figure;

subplot(221);

imshow(PSF,[],'InitialMagnification','fit');

title('Prava PSF');

subplot(222);

imshow(P1,[],'InitialMagnification','fit');

title('Rekonstruisana smanjena PSF');

subplot(223);

imshow(P2,[],'InitialMagnification','fit');

title('Rekonstruisana povecana PSF');

subplot(224);

imshow(P3,[],'InitialMagnification','fit');

title('Rekonstruisana originalna vrednost PSF');

Page 50: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 49

Rezultate inicijalizacije prethodnog koda vidimo na slici 21:

Slika 21. Gore: Prava vrednost PSF (levo) i rekonstruisana smanjena PSF

Dole: Rekonstruisana povećana PSF i rekonstruisana originalna PSF

PSF rekonstruisana u prvom pokušaju restauracije (Slika 21., gore desno), očigledno nije

odgovarajuće veličine. Vidimo velike varijanse datog signala na centru u odnosu na ivice. Zbog

toga, odgovarajuća slika dobijena tom prilikom (Slika 18.) ne pokazuje nikakvo poboljšanje u

odnosu na Sliku 14.

PSF rekonstruisana u drugom pokušaju restauracije (Slika 21., dole levo), ima blage

prelaze na ivicama. To znači da možemo izvršiti restauraciju PSF manjih dimenzija. Odgovarajuća

restauracija (Slika 19.) pokazuje određen napredak u polju poništavanja zamućenja, ali je znatno

oštećena efektom „prstena“.

Page 51: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 50

Na kraju, PSF rekonstruisana u trećem pokušaju restauracije, predstavlja sredinu između

prethodna dva primera. Odgovarajuća slika dobijena tom prilikom, slika 20., predstavlja značajno

unapređenje, ali je još uvek oštećena istim efektom kao i prethodna restauracija. Pokušaćemo da

ispravimo to. Pokušaćemo da definišemo težinsku funkciju. Algoritam meri težinu svakog piksela

pomoću odgovarajućeg WEIGHT niza tokom restauracije i PSF – a. U našem primeru, tražimo

„oštre“ piksele koristeći edge funkciju. Podesićemo traženi prag tolerancije na 0,3:

WEIGHT = edge(I,'sobel',.3);

Da bismo proširili oblast koristimo funkciju imdilate i uvodimo strukturni element se:

se = strel('disk',2);

WEIGHT = 1-double(imdilate(WEIGHT,se));

Piksele blizu granice podešavamo na vrednost 0:

WEIGHT([1:3 end-(0:2)],:) = 0;

WEIGHT(:,[1:3 end-(0:2)]) = 0;

figure;

imshow(WEIGHT);

title('Težinski niz');

Page 52: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 51

Težinski niz je prikazan na sledećoj slici:

Slika 22. Težinski niz primenjen na originalnu sliku cameraman.tif

Restauraciju slike vršimo pozivanjem deconvblind funkcije sa WEIGHT nizom i

povećanim brojem ponavljanja. Na ovaj način ćemo uništiti veći deo efekta „prstena“.

[S, P] = deconvblind(zamucena_sum,INITPSF,30,[],WEIGHT);

figure;

imshow(S);

title('Restaurisana slika');

Page 53: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 52

Rezultat kompletnog postupka je dat na slici 23:

Slika 23. Slika cameraman.tif posle kompletnog postupka slepe dekonvolucije

Kao što vidimo na slici 23., krajnji rezultat nije preterano zadovoljavajući. Očito, datom

algoritmu ne odgovara način zamućenja (zamućenje kretanjem, eng. motion blur) koji smo koristili

u svim navedenim primerima, a količina šuma je prevelika za kvalitetnu restauraciju ovim

algoritmom. Funkcija koju smo koristili u navedenom primeru najbolje rezultate daje prilikom

restauracije slike na kojoj se nalazi Gausovo zamućenje (eng. Gaussian blur).

Poslednja funkcija dekonvolucije koju ćemo ispitati u ovom radu je ujedno i poslednja koja

je deo Image Processing Toolbox – a. To je funkcija deconvlucy koja za restauraciju slika

koristi ubrzani, prigušeni, Lusi – Ričardson algoritam. Ovaj algoritam povećava verovatnoću da

slika koju dobijemo kao rezultat obrade ima kvalitet blizak originalu, ukoliko znamo PSF. Sa druge

strane, ova funkcija nema prevelikog uticaja na odstranjivanje šuma sa slike.

Kao i u prethodna tri primera, koristićemo sliku cameraman.tif i isti deo koda koji simulira

zamućenje i šum. Zbog toga nećemo navoditi taj deo koda.

Page 54: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 53

Koristimo funkciju deconvlucy za restauraciju slike 12. Tom prilikom moramo navesti

PSF koji je korišćen za kreiranje zamućenja. Takođe, navešćemo limit broja operacija ponavljanja.

Podrazumevano podešavanje je 10, a mi ćemo limit postaviti na 20. Za to koristimo sledeći kod:

luc1 = deconvlucy(zamucena_sum,PSF,20);

figure, imshow(luc1)

title('Restaurisana slika')

Rezultat restauracije vidimo na slici 24:

Slika 24. Slika restaurisana Lusi – Ričardsonovim algoritmom

Funkcija deconvlucy vrši više ponavljanja procesa odstranjivanja zamućenja. Za

zadovoljavajući rezultat potrebno je pronaći optimalan broj ponavljanja. U našem slučaju,

primenom ovog jednostavnog koda dobijamo sasvim zadovoljavajuće rezultate. Dodatno

poboljšanje ćemo pokušati da postignemo korišćenjem edgetaper funkcije. Pozivanje vršimo

sledećim kodom:

S=edgetaper(luc1,PSF);

Page 55: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 54

Slika 25. Konačna verzija slike restaurisane Lusi – Ričardsonovim algoritmom

Page 56: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 55

5. Zaključak

Postoje mnoge mogućnosti vezane za dalji razvoj teme koja je obrađena u master radu.

MATLAB je moćna alatka koja nam pruža različite metode i tehnike koje su potrebne za izgradnju

veoma kompleksnih programa. Funkcionalnost i dizajn istih je ograničen jedino maštom korisnika.

Generalno gledano, MATLAB se razvija veoma brzo i postaje sve popularniji u naučnim

krugovima. Kao i svaki drugi programski paket, MATLAB ima svoje prednosti i nedostatke. Da

li ćemo ga koristiti za profesionalnu obradu slika ili njihovo kodiranje i dekodiranje zavisi

isključivo od ličnih afiniteta korisnika. Po mom mišljenju, trenutno postoje druge alternative koje

su jeftinije i pružaju više mogućnosti kada je u pitanju obrada slika ili njihovu restauracija.

Međutim, retka su radna okruženja u kojima možemo kompresovati ili restaurisati slike po

matematičkom modelu.

Dalji razvoj ovog problema može biti kreiranje jedinstvenog grafičkog okruženja za

pokretanje kompresije, kodiranja ili primene različitih modela restauracije slike. Takođe, relativno

jednostavno možemo napraviti alatku za osnovnu obradu slika.

Sama kompleksnost ovog programskog okruženja nas navodi na zaključak da ćemo se u

budućnosti verovatno sve više susretati sa njegovim radnim okruženjem čak i u situacijama u

kojima do pre nekoliko godina nismo ni slutili da će on biti naš prvi izbor. Da li će to zaista biti

slučaj ostaje nam da vidimo, niko ne zna šta nam budućnost donosi.

Page 57: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 56

6. Prilog

Primer koda koji smo koristili za kodiranje i dekodiranje slike Nikole Tesle. Osnovna

datoteka imagec.m:

function [ ] = imagec( a ) PP=imread(a); if(size(PP,3)>0) PP=rgb2gray(PP); end s1=size(PP);

size(PP) PP=[PP zeros(size(PP,1),2)]; imwrite(PP(1:200,1:150),'uncompb.bmp'); PP1=PP;

s=0; s1=0; rlen=[];%kodovana rle lista rlde=[];%dekodovana rle lista decomp=[];%obrnuto dekompresovana matrica u jednoj liniji Q=[16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103 99]; % kvantizacija matrice for i=1:8 for j=1:8 if i==1 t(i,j)=(1/8)^(1/2); else t(i,j)=(1/2)*cos(pi*(2*j-1)*(i-1)/16); end end end

for i=8:8:size(PP,1) for j=8:8:size(PP,2) W=PP(i-7:i,j-7:j); W=double(W); W=W-128;

Page 58: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 57

A=t*W*t'; A=round(A./Q);

m=zz(A);% pozivanje zz.m s=s+length(m); m1=mrl(m); rlen=[rlen m1];

PP(i-7:i,j-7:j)=A;

end end imwrite(rlen,'compressedb.bmp')%upis kompresovane slike u bmp formatu fid = fopen('compressed.raw', 'wb'); fwrite(fid, rlen, 'int8') fclose(fid); fid1 = fopen('compressed.raw', 'r'); rlen1=fread(fid1);

fclose(fid); rlen1=rlen1';

imwrite(rlen,'compressed.jpg')%upis kompresovane slike u jpg formatu rldn=rld(rlen); for i=64:64:size(rldn,2)

W1=rldn(i-63:i); size(rldn) W1=invzz(W1,8,8);

W1=W1.*Q; W11=inv(t)*W1*inv(t'); W1=W11+128;

decomp=[decomp W1]; end final=[]; for i=152:152:size(decomp,2)

R1=decomp(1:8,i-151:i); final=[final;R1]; end imshow(final/255);%prikaz kona?ne slike imshow(PP1*10); size(final) imwrite(final(1:size(final,1),1:size(final,2))/255,'decompressed.bmp');%upis

dekompresovane slike u bmp formatu end

Datoteka inzz.m:

function res=invzz(inpimg,nr,nc)

Page 59: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 58

nel=length(inpimg);

res=zeros(nr,nc);

cr=1; cc=1; ci=1;

while ci<=nel if cr==1 & mod(cr+cc,2)==0 & cc~=nc res(cr,cc)=inpimg(ci); cc=cc+1; ci=ci+1;

elseif cr==nr & mod(cr+cc,2)~=0 & cc~=nc res(cr,cc)=inpimg(ci); cc=cc+1; ci=ci+1;

elseif cc==1 & mod(cr+cc,2)~=0 & cr~=nr res(cr,cc)=inpimg(ci); cr=cr+1; ci=ci+1;

elseif cc==nc & mod(cr+cc,2)==0 & cr~=nr res(cr,cc)=inpimg(ci); cr=cr+1; ci=ci+1;

elseif cc~=1 & cr~=nr & mod(cr+cc,2)~=0 res(cr,cc)=inpimg(ci); cr=cr+1; cc=cc-1; ci=ci+1;

elseif cr~=1 & cc~=nc & mod(cr+cc,2)==0 res(cr,cc)=inpimg(ci); cr=cr-1; cc=cc+1; ci=ci+1;

elseif ci==nel res(end)=inpimg(end); break end end

Datoteka mrl.m:

function e = mrl(xvec) pp=size(xvec); if pp(1)==1 n=0;

Page 60: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 59

for i=1:length(xvec)-1 if xvec(i)~=xvec(i+1); n=n+1; end end for i=1:n+1 l(i)=1; end

j=1; i=1; while j<length(xvec) if xvec(j)==xvec(j+1) l(i)=l(i)+1; else b(i)=xvec(j); i=i+1; end j=j+1; end b(n+1)=xvec(length(xvec)); i=1; j=1;

while i<=length(l)&&j<=2*length(l) e(j)=l(i); e(j+1)=b(i); i=i+1; j=j+2; end else for p=1:pp(1) n=0; for i=1:length(xvec(p,:))-1 if xvec(p,i)~=xvec(p,i+1); n=n+1; end end

for i=1:n+1 l(i)=1; end

j=1; i=1; while j<length(xvec(p,:)) if xvec(p,j)==xvec(p,j+1) l(i)=l(i)+1; else b(i)=xvec(p,j); i=i+1; end j=j+1; end

Page 61: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 60

b(n+1)=xvec(p,length(xvec(p,:))); i=1; j=1;

while i<=length(l)&&j<=2*length(l) e(p,j)=l(i); e(p,j+1)=b(i); i=i+1; j=j+2; end

end end end

Datoteka rld.m:

function d = rldecode(xvec)

pp=size(xvec); if pp(1)==1 oi=1; for l=1:2:length(xvec) for l1=oi:oi+xvec(l)-1 d(l1)=xvec(l+1); end oi=oi+xvec(l); end end end

Datoteka rle.m:

function data = rle(x)

if iscell(x) %dekodiranje i = cumsum([ 1 x{2} ]); j = zeros(1, i(end)-1); j(i(1:end-1)) = 1; data = x{1}(cumsum(j)); else %kodiranje if size(x,1) > size(x,2), x = x'; end %ako je x kolona vektora,

transponovati i = [ find(x(1:end-1) ~= x(2:end)) length(x) ]; data{2} = diff([ 0 i ]); data{1} = x(i); end

Datoteka zz.m:

function out=zz(inimg) [nr nc]=size(inimg); out=zeros(1,nr*nc); crow=1; cur_col=1; cind=1; while crow <= nr & cur_col <= nc

Page 62: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 61

if crow==1 & mod(crow+cur_col,2)==0 & cur_col~=nc out(cind)=inimg(crow,cur_col); cur_col=cur_col+1;

elseif crow==nr & mod(crow+cur_col,2)~=0 & cur_col~=nc out(cind)=inimg(crow,cur_col); cur_col=cur_col+1; cind=cind+1;

elseif cur_col==1 & mod(crow+cur_col,2)~=0 & crow~=nr out(cind)=inimg(crow,cur_col); crow=crow+1; cind=cind+1;

elseif cur_col==nc & mod(crow+cur_col,2)==0 & crow~=nr out(cind)=inimg(crow,cur_col); crow=crow+1; cind=cind+1;

elseif cur_col~=1 & crow~=nr & mod(crow+cur_col,2)~=0 out(cind)=inimg(crow,cur_col); crow=crow+1; cur_col=cur_col-1; cind=cind+1;

elseif crow~=1 & cur_col~=nc & mod(crow+cur_col,2)==0 out(cind)=inimg(crow,cur_col); crow=crow-1; cur_col=cur_col+1; cind=cind+1;

elseif crow==nr & cur_col==nc out(end)=inimg(end); break end end

Page 63: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 62

7. Literatura

[1] Babić Z., Risojević V.; „Digitalna obrada slike“, Univerzitet u Banjaluci, Elektrotehnički

fakultet, Katedra za opštu elektrotehniku, (http://dsp.etfbl.net/dip/, pristupljeno 24. 06. 2018.)

[2] Castleman, K.R., Digital Image Processing, Prentice Hall, Englewood Cliffs, NJ, 1996.

[3] Discrete Cosine Transform, MathWorks Documentation,

(http://www.mathworks.com/help/images/discrete-cosine-transform.html, pristupljeno 24. 06.

2018.)

[4] Gonzales, R.C., Wintz, P., Digital Image Processing, Addison-Wesley Publ. Comp.,

Reading, MA, 1977.

[5] Hansen P. C., Nagy J. G., O’Leary D. P.; „Deblurring Images, Matrices, Spectra and

Filtering“, Society for Industrial and Applied Mathematics, prvo izdanje, Philadelphia,

Pennsylvania, United States, 2006.

[6] Jain, A.K., Fundamentals of Digital Image Processing, Prentice Hall, Englewood Cliffs, NJ,

1989.

[7] Jančić, M., JPEG norma – Diskretna kosinusna transformacija, Labaratorij za

videokomunikacije, Zavod za radiokomunikacije, Fakultet elektrotehnike i računarstva,

Sveučilište u Zagrebu (http://www.vcl.fer.hr/dtv/jpeg/dct.htm, pristupljeno 24. 06. 2018.)

[8] Lim, J.S., Two-Dimensional Signal and Image Processing, Prentice Hall, Englewood Cliffs,

NJ, 1990.

[9] „MATLAB – Image Processing Toolbox 6 User’s Guide“; 19 – to izdanje, The MathWorks

Inc. Natick, Massachusetts, United States

[10] Oge M.; „Practical Image and Video Processing Using MATLAB“, prvo izdanje, Florida

Atlantic University, IEEE Press, Whiley, 2011.

[11] Popović, M.V., Digitalna obrada signala, Nauka, Beograd, 1997.

Page 64: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 63

[12] Pratt, W.K., Digital Image Processing, 2nd Ed., John Wiley & Sons, New York, 1991.

[13] Rao, K.R., Yip, P., Discrete Cosine Transform: Algorithms, Advantages, Applications,

Academic Press, New York, 1990.

[14] Vježba 1. Uvod u korištenje MATLAB-a i Image Processing Toolboxa u obradi slike,

Univerzitet u Banjaluci, Elektrotehnički fakultet, Katedra za opštu elektrotehniku, Digitalna

obrada slike (http://dsp.etfbl.net/dip/1uvod.pdf, pristupljeno 24. 06. 2018.)

[15] Watson A. B., Image Compression Using the Discrete Cosine Transform, Nasa Ames

Research Center, Mathematica Journal, 4(1), 1994., p 81 – 88

(http://sites.apam.columbia.edu/courses/ap1601y/Watson_MathJour_94.pdf, pristupljeno 24. 06.

2018.)

[16] Weisstein, Eric W., Discrete Fourier Transform, From MathWorld – A Wolfram Web

Resource. (http://mathworld.wolfram.com/DiscreteFourierTransform.html, pristupljeno 24. 06.

2018.)

[17] Weisstein, Eric W., Fast Fourier Transform, From MathWorld – A Wolfram Web

Resource. (http://mathworld.wolfram.com/FastFourierTransform.html, pristupljeno 24. 06.

2018.)

Page 65: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 64

Biografija

Diplomirani informatičar Aleksandar Ivanović rođen je 17. maja 1990. godine u Kraljevu.

Osnovnu školu „Kralj Milutin“ je završio 2005. godine sa odličnim uspehom. Srednju

Elektrotehničku školu „Miladin Popović“ u Sušici – Badovcu je završio 2009. godine sa odličnim

uspehom. Diplomirao je na osnovnim studijama Prirodno – matematičkog fakulteta na smeru

Informatika 2015. godine na Prištinskom univerzitetu sa privremenim sedištem u Kosovskoj

Mitrovici sa prosečnom ocenom 8.63.

Decembra 2013. godine se zapošljava na freelancing platformi Fiverr kao grafički dizajner.

Od septembra 2014. radi kao profesor matematike u Građevinsko – Saobraćajnoj školi Priština –

Gračanica.

Oženjen je i otac jednog deteta.

Page 66: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 65

Прилог 5/1

ПРИРОДНO - MАТЕМАТИЧКИ ФАКУЛТЕТ

НИШ

КЉУЧНА ДОКУМЕНТАЦИЈСКА ИНФОРМАЦИЈА

Редни број, РБР:

Идентификациони број, ИБР:

Тип документације, ТД: монографска

Тип записа, ТЗ: текстуални / графички

Врста рада, ВР: мастер рад

Аутор, АУ: Александар Ивановић

Ментор, МН: Предраг Станимировић

Наслов рада, НР: Компресија, кодирање и рестаурација слика у

MATLAB – у

Језик публикације, ЈП: српски

Језик извода, ЈИ: енглески

Земља публиковања, ЗП: Р. Србија

Уже географско подручје, УГП: Р. Србија

Година, ГО: 2018.

Издавач, ИЗ: ауторски репринт

Место и адреса, МА: Ниш, Вишеградска 33.

Физички опис рада, ФО: (поглавља/страна/ цитата/табела/слика/графика/прилога)

68 стр. ; граф. прикази

Научна област, НО: Рачунарске науке

Научна дисциплина, НД: Операциона истраживања

Предметна одредница/Кључне речи, ПО: Слике, рестаурација, компресија, кодирање

УДК 004.414.23MATLAB 004.415.3MATLAB 004.383.5MATLAB

Чува се, ЧУ: библиотека

Важна напомена, ВН:

Page 67: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 66

Извод, ИЗ: У раду је анализирано коришћење МАТЛАБ – а у

циљу рестаурације, компресије и кодирања слика са

фокусом на аспекте рачунарске графике, упознавање

са ЈПЕГ компресијом и коришћењем дискретне

косинусне трансформације у циљу кодирања и

компресије слика. Анализирани су различити начини

рестаурација слика. Све теоретске студије наведене

у овом раду су приказане у изабраном радном

окружењу. Добијени резултати указују на ефикасност

изабраног радног окружења у сврху постизања

задатих циљева.

Датум прихватања теме, ДП: 20. 03. 2018

Датум одбране, ДО: 11. 09. 2018.

Чланови комисије, КО: Председник: Марко Петковић

Члан: Марко Миладиновић

Члан, ментор: Предраг Станимировић

Образац Q4.09.13 - Издање 1

Page 68: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 67

Прилог 5/2

ПРИРОДНО - МАТЕМАТИЧКИ ФАКУЛТЕТ

НИШ

KEY WORDS DOCUMENTATION

Accession number, ANO:

Identification number, INO:

Document type, DT: monograph

Type of record, TR: textual / graphic

Contents code, CC: master degree thesis

Author, AU: Aleksandar Ivanović

Mentor, MN: Predrag Stanimirović

Title, TI:

Compression, coding and restoration of photos in MATLAB

Language of text, LT: Serbian

Language of abstract, LA: English

Country of publication, CP: Republic of Serbia

Locality of publication, LP: Serbia

Publication year, PY: 2018.

Publisher, PB: author’s reprint

Publication place, PP: Niš, Višegradska 33.

Physical description, PD: (chapters/pages/ref./tables/pictures/graphs/appendixes)

68 p. ; graphic representations

Scientific field, SF: Computer Science

Scientific discipline, SD: Operational Researches

Subject/Key words, S/KW: photos, restauration, compression, coding

UC 004.414.23MATLAB 004.415.3MATLAB

004.383.5MATLAB

Holding data, HD: library

Note, N:

Page 69: Kompresija, kodiranje i restauracija slika u MATLAB uunarske... · Kompresija, kodiranje i restauracija slika u MATLAB – u Strana 2 Zahvalnica Najsrdačnije se zahvaljujem svom

Kompresija, kodiranje i restauracija slika u MATLAB – u

Strana 68

Abstract, AB: The thesis analyzes the use of the MATLAB in order to restore, compress, and encode the image with a focus on aspects of computer graphics, familiarize with JPEG compression and use discrete cosine transformation in goal of encoding and image compression. We analyzed different approach of photo restauration. There are practical examples in selected work environment for all theoretical studies indicated in this thesis. The obtained results indicate the efficiency of selected working environment.

Accepted by the Scientific Board on, ASB: 20. 03. 2018.

Defended on, DE: 11. 09. 2018.

Defended Board, DB: President: Marko Petković

Member: Marko Miladinović

Member, Mentor: Predrag Stanimirović

Образац Q4.09.13 - Издање 1