dokumentacija ispitnog rada · rgb prostor boja je aditivni model boja u kojima se crvena, zelena i...

26
UNIVERZITET U NOVOM SADU FAKULTET TEHNIČKIH NAUKA UNIVERZITET U NOVOM SADU FAKULTET TEHNIČKIH NAUKA Elektronika, energetika i telekomunikacije DOKUMENTACIJA ISPITNOG RADA Naziv zadatka: Segmentacija slike Student: Stefan Đukić Broj indeksa: 13444 Predmet: Arhitektura procesora signala Mentor: prof. dr Pap Ištvan Novi Sad, maj 2014.

Upload: others

Post on 21-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

UNIVERZITET U NOVOM SADU

FAKULTET TEHNIČKIH NAUKA

UNIVERZITET U NOVOM SADU

FAKULTET TEHNIČKIH NAUKA

Elektronika, energetika i telekomunikacije

DOKUMENTACIJA ISPITNOG RADA Naziv zadatka: Segmentacija slike

Student: Stefan Đukić

Broj indeksa: 13444

Predmet: Arhitektura procesora signala

Mentor: prof. dr Pap Ištvan

Novi Sad, maj 2014.

Page 2: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Sadržaj

SADRŽAJ

1. Uvod........................................................................................................................... 1

2. Teorijske osnove ...................................................................................................... 2

2.1 Konverzija iz RGB u Y'UV prostor .................................................................... 2

2.2 Osvetljenje slike ................................................................................................. 4

2.3 Kontrast slike ..................................................................................................... 5

2.4 Rotacija slike ...................................................................................................... 6

2.5 BMP format slike................................................................................................ 8

2.5.1 Zapis piksela u BMP formatu ....................................................................... 9

3. Koncept rešenja ...................................................................................................... 11

4. Programsko rešenje ............................................................................................... 13

4.1 Modul main ...................................................................................................... 14

4.2 Modul za proveru parametara ........................................................................ 15

4.3 Modul za rad sa BMP datotekama .................................................................. 15

4.4 Modul za korekciju osvetljenja ....................................................................... 19

4.5 Modul za korekciju kontrasta ......................................................................... 19

4.6 Modul za rotiranje slike .................................................................................. 20

5. Rezultati .................................................................................................................. 21

6. Zaključak ................................................................................................................. 23

7. Literatura ................................................................................................................ 24

Page 3: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Uvod

1

1. Uvod

Segmentacija slike je predstavlja proces kojim se digitalna slika deli na segmente,

odnosno skupove piksela. Cilj segmentacije je da se pojednostavi ili promeni predstava slike,

tako da bude pogodna za dalju analizu, odnosno da bude svrsishodna. Segmentacija slike se

obično koristi za lociranje objekata, granica, linija, krivih u slikama. Tačnije, segmentacija

slike je proces dodeljivanja „oznake” svakom pikselu na slici, tako da pikseli sa istom

oznakom imaju iste vizuelne karakteristike.

Rezultat segmentacije slike je skup segmenata koji zajedno prekrivaju celu sliku,

odnosno ako govorimo o detekciji ivice, onda je rezultat skup kontura izvađenih iz slike.

Primena segmentacije slike danas je veoma široka. Koristi se u kompjuterskoj viziji,

prepoznavanju oblika, medicini, saobraćaju.

U okviru ovog rada realizovana je funkcija za konverziju slike iz RGB prostora boja u

YUV prostor boja, funkcija za korekciju osvetljenja, funkcija za korekciju kontrasta i funkcija

za obrtanje slike za 90, 180 i 270 stepeni. Realizacija je pisana na programskom jeziku C i

korišćen je alat Visual Studio 2013. Funkcije se primenjuju nad ulaznom BMP (Bitmap)

datotekom proizvoljnih dimenzija. Jedino ograničenje jeste kod rotiranja, gde ulazna slika

mora biti isključivo dimenzija deljivih sa 4 (npr, 960x600). Rezultat obrade se čuva u novoj,

izlaznoj BMP datoteci. Parametri komandne linije su: naziv ulazne slike, naziv izlazne slike,

mod i odgovarajući parametar za izabrani mod.

Page 4: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

2

2. Teorijske osnove

Kako bismo uradili traženu segmentaciju slike, neophodno je da problem razložimo

na više modula i prethodno izvršimo nekoliko međukoraka, pri čemu je, sve vreme,

neophodno poštovati teorijske osnove traženih funkcija segmentacije i formata ulazne slike.

Iz tog razloga, hronološkim redosledom ćemo razmotriti njihove osnove.

2.1 Konverzija iz RGB u Y'UV prostor

RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost

dodaju zajedno na razne načine, kako bi se reprodukovao širok spektar čoveku vidljivih boja.

Naziv ovog prostora boja dolazi od inicijala tri osnovne boje na engleskom, crvena, zelena i

plava. Glavna svrha RGB prostora boja je da reprezentuje i prikaže sliku u elektronskim

sistemima, kao što su televizori i računari, ali se koristi i kod fotoaparata. RGB prostor boja

ima teoriju iza sebe koja je bazirana na ljudskoj percepciji boja.

Y'UV prostor boja je izmišljen od strane inženjera koji su želeli da naprave televiziju

u boji na prvobitnoj crno-beloj infrastrukturi. Trebalo je osmisliti način za prenos signala

koji je kompatibilan sa crno-belim televizorima, a da pri tome ostane mogućnost dodavanja

boje. Luma (Y') komponenta je već od ranije bila poznata kao crno-beli signal, odnosno kao

signal osvetljaja, te su stoga dodali U i V komponente. Tako se kao rešenje pojavio Y'UV

prostor boja. U i V su dve hromatske komponente koje predstavljaju intenzitete boja koji su

Page 5: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

3

izračunati pomoću R i B komponenti i sadrže informacije o razlici među bojama. To znači da

su u crno-beloj slici komponente U i V jednake nuli, a da je komponenta Y' signal jedini koji

nosi informaciju. Ovo je bilo veoma dobro rešenje prilikom prelaska sa crno-bele televizije

na televiziju u boji iz prostog razloga što su televizijski prijemnici bili raznoliki (neki su imali

još uvek crno-bele, dok su drugi već prešli na kolor televizore), te je bilo potrebno emitovati

signal slike iz kojeg je istovremeno moguće „izvući“ crno-belu sliku i sliku u boji.

Sam proces konverzije iz RGB prostora u Y'UV je prilično jednostavan iz razloga što

je Y'UV signal sastavljen iz RGB izvora. Y' komponenta je sačinjena od zbira prethodno

izračunatih vrednosti R, G, B komponenti, respektivno, i predstavlja meru ukupnog

osvetljaja. U i V komponente se izračunavaju kao skalirana razlika između vrednosti Y', B i

R komponenti. Definišemo sledeće konstante: 𝑊𝑅 = 0.299, 𝑊𝐺 = 0.587, 𝑊𝐵 = 0.114,

𝑈𝑚𝑎𝑥 = 0.436 i 𝑉𝑚𝑎𝑥 = 0.615. Iz RGB prostora u Y'UV prostor prelazimo sledećim

formulama:

𝑌′ = 𝑊𝑅𝑅 + 𝑊𝐺𝐺 + 𝑊𝐵𝐵

𝑈 = 𝑈𝑚𝑎𝑥

𝐵 − 𝑌′

1 − 𝑊𝐵≈ 0.492(𝐵 − 𝑌′)

𝑉 = 𝑉𝑚𝑎𝑥

𝑅 − 𝑌′

1 − 𝑊𝑅≈ 0.877(𝑅 − 𝑌′)

Ovo je moguće preglednije napisati u matričnom obliku, te dobijamo:

[𝑌′𝑈𝑉

] = [0.299 0.587 0.114

−0.14713 −0.28886 0.4360.615 −0.51499 −0.10001

] [𝑅𝐺𝐵

] ∙

Inverzna operacija u odnosu na gore navedene formule daje prelaz iz Y'UV u RGB prostor:

𝑅 = 𝑌′ + 𝑉1 − 𝑊𝑅

𝑉𝑚𝑎𝑥

𝐺 = 𝑌′ − 𝑈𝑊𝐵(1 − 𝑊𝐵)

𝑈𝑚𝑎𝑥𝑊𝐺− 𝑉

𝑊𝑅(1 − 𝑊𝑅)

𝑉𝑚𝑎𝑥𝑊𝐺

𝐵 = 𝑌′ + 𝑈 1 − 𝑊𝐵

𝑈𝑚𝑎𝑥

Page 6: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

4

I ovo je moguće preglednije napisati u matričnom obliku, te dobijamo:

[𝑅𝐺𝐵

] = [1 0 1.139831 −0.39465 −0.580601 2.03211 0

] [𝑌′𝑈𝑉

] ∙

Vrednosti Y' komponente se po konvenciji pomeraju i skaliraju na opseg (16,235).

Ova zbunjujuća praksa potiče iz MPEG standarda i objašnjava zašto se broj 16 dodaje na

komponentu Y' kao i to zašto se u osnovi transformacije suma ide do 220 a ne do 255. U i V

vrednosti mogu sadržati pozitivne i negativne vrednosti, iz tog razloga se sabiraju sa 128

kako bih uvek vrednosti bile pozitivne.

2.2 Osvetljenje slike

Osvetljaj slike predstavlja osobinu našeg vizuelnog sistema koja nam omogućava da

predmete u okolini posmatramo kao da odbijaju svetlost. Drugim rečima, osvetljenje je

percepcija koju doživljavamo na osnovu količine svetlosti koja dolazi iz pravca nekog

objekta. Ovo predstavlja subjektivnu osobinu predmeta koji se posmatra.

Da bismo izvršili korekciju osvetljenja, neophodno je preći iz RGB sistema u Y’UV i

koristiti Y (luma) komponentu, gi. Pored toga, neophodno je imati željeni nivo korekcije

kontrasta, brightness. Korekcija osvetljenja se stoga može definisati na sledeći način:

𝑠𝑖 = 𝑔𝑖 + 𝑏𝑟𝑖𝑔ℎ𝑡𝑛𝑒𝑠𝑠

Slika 1 – Primer korekcije osvetljenja na slici nivoom osvetljenja 50

(levo - originala slika, desno - rezultujuća slika)

Page 7: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

5

2.3 Kontrast slike

Kontrast je razlika koju uočavamo između osvetljaja i boje posmatranog objekta, pri

čemu ta razlika čini posmatrani objekat uočljivim. U vizuelnom sistemu čoveka, kontrast je

određen razlikom boje, osvetljaja objekta i osvetljaja okolnih objekata. Pošto je čovekov

vizuelni sistem više osetljiv na kontrast nego na osvetljaj objekta, možemo da vidimo

uočavamo svet bez puno razlike bez obzira na doba dana ili na geografski položaj. Kontrast

može da se posmatra i kao razlika boje koja je naneta na neki materijal i pozadine, tj. boje

samog materijala.

Ljudska osetljivost na kontrast izgleda kao tipičan filtar propusnik opsega, čija je

centralna vrednost oko 4 ciklusa po stepenu. Ovo nam govori da je ljudski vizuelni sistem

najosetljiviji na kontraste koji nastaju na 4 ciklusa po stepenu, odnosno oko ovog opsega

frekvencija ljudi mogu najbolje da detektuju razlike u kontrastu, bolje nego u bilo kom

drugom opsegu prostornih frekvencija.

Pad na visokim prostornim frekvencijama predstavlja ograničenje vizuelnog sistema

čoveka da uoči velike promene po stepenu vidnog ugla, obično iznosi oko 60 ciklusa u

stepenu. Razlog ovom ograničenju kod čoveka se krije u gustini fotoćelija unutar oka – gušće

poređane fotoćelije daju bolju rezoluciju.

Pad na niskim frekvencijama je povezan sa lateralne inhibicije ganglijskih ćelija unutar

mrežnjače. Odnosno, ovaj pad je povezan sa prirodom reagovanja i međusobnog

pobuđivanja ganglijalnih ćeliju u oku čoveka.

Vremenom čovekova osetljivost na kontrast može da opada zbog starosti, ali i nekih bolesti,

poput katarakte.

U radu se za korekciju kontrasta u slici koristi sledeća formula:

𝑠𝑖 = 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑡 ∙ (𝑔𝑖 − 𝑎𝑣𝑒𝑟𝑎𝑔𝑒) + 𝑎𝑣𝑒𝑟𝑎𝑔𝑒

Page 8: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

6

Pri čemu je si Y komponenta iz Y’UV prostora boja koju dobijemo nakon korekcije, gi je

originalna Y komponenta iz Y’UV prostora, contrast predstavlja parametar tj. nivo korekcije

kontrasta i average predstavlja srednju vrednost originalne slike, koju dobijamo formulom:

𝑎𝑣𝑒𝑟𝑎𝑔𝑒 = 1

𝑁𝑥𝑁𝑦∑

𝑁𝑥

𝑋=0

∑ 𝑃(𝑋, 𝑌)

𝑁𝑦

𝑌=0

Pri čemu su Nx i Ny dimenzije slike po x i y osi, respektivno, a P(X,Y) je vrednost Y

komponente iz Y’UV prostora boja ulazne slike.

Slika 2 – Primer korekcije kontrasta na slici nivoom korekcije 3.5

(levo - originala slika, desno - rezultujuća slika)

Da bismo izvršili korekciju kontrasta, neophodno je preći iz RGB sistema u Y’UV, kao što je

to bilo neophodno i kod korekcije osvetljenja.

2.4 Rotacija slike

Da bismo izvršili rotaciju slike, najjednostavniji način nam je da je posmatramo kao 2D

matricu. Svaki element matrice predstavlja jedan piksel slike. Dakle, gornji desni ugao u

matrici je gornji desni ugao slike, gornji levi ugao matrice je gornji levi ugao matrice i tako

dalje.

Page 9: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

7

Slika 3 – Primer slike na kojoj se vide sastavni pikseli, pri čemu je moguće uvideti analogija sa

matricama

Sada primećujemo da rotaciju slike za 90 stepeni možemo da izvedemo vrlo lako i to

na sledeći način: Prvu kolonu matrice stavimo da bude prvi red, druga kolona da bude drugi

red, treća kolona treći red i tako dalje dok poslednja kolona matrice polazne slike ne postane

poslednji red matrice rotirane slike. Grafički to možemo da prikažemo na sledeći način:

Slika 4 – Princip rotiranja slike za 90 stepeni

Page 10: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

8

Ono što se obavezno treba imati na umu jeste da svaki od piksela sadrži tri

komponente. U našem slučaju koristimo slike BMP formata koje su 24-bitne, što znači da

svaka komponenta koristi 8 bita, odnosno da jedan piksel dužine 24 bita. Grafički bismo to

mogli da predstavimo na sledeći način:

Slika 5 – Slika predstavljena kao matrica pri čemu su naznačene RGB komponente svakog piksela

Ukoliko nam je potrebno da rotiramo sliku za 180 ili 270 stepeni, neophodno je pozvati 2 (za

180 stepeni) ili 3 (za 270 stepeni) puta funkciju koja rotira sliku za 90 stepeni.

2.5 BMP format slike

BMP slika je format koji služi za zapisivanje digitalnih fotografija na Windows

operativnim sistemima. Svaka BMP slika se sastoji iz dva tela: Zaglavlja (engl. header) i

piksela, odnosno sadržaja slike (engl. image data, payload).

Slika 6 – Delovi BMP slike

Page 11: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

9

Zaglavlje slike sadrži podatke o slici. Sledeća tabela pokazuje koje su to informacije koje se

nalaze u zaglavlju svake BMP slike. Zaglavlje je veličine 54 bajta.

Slika 7 – Izgled BMP zaglavlja

Nama će polja od interesa biti visina i širina slike, veličina BMP datoteke i veličina sadržaja

slike, uključujući peding (engl. padding).

2.5.1 Zapis piksela u BMP formatu

Slika, ako je posmatramo kao matricu, je zapisana tako što je svaki red matrice

zaokružen da bude deljiv sa 4 dodavanjem određenog broja bita (obično su ti biti nule). To

se zove peding. Broj potrebnih bajtova može da se izračuna na sledeći način:

(4 − (3 ∗ 𝑤𝑖𝑑𝑡ℎ) % 4) % 4

Pri čemu interpunkcijski znak „%” predstavlja operator u programskom jeziku C.

Pomoću ovog operatora vršimo operaciju deljenja nekog broja po zadatom modulu (ovde je

to po modulu 4), a rezultat je ostatak pri deljenju. Width predstavlja širinu slike, odnosno

širinu jednog reda matrice. Na sledećoj slici je prikazano kako to izgleda nakon dodavanja

pedinga na piksele. U slučaju da je slika deljiva sa 4 po širini, treba primetiti da će se dodati

peding dužine 0, odnosno da ga neće biti.

Page 12: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Teorijske osnove

10

Slika 8 – Izgled dela BMP slike koji sadrži piksele nakon dodavanja pedinga

Međutim, prilikom konačnog zapisivanja piksela slike ova matrica se pretvara u jedan

veliki niz piksela, tako što se uzima piksel po piksel počevši od donjeg levog ugla, ka desno,

idući od dole ka gore. Odnosno, poslednji red postaje prvi u nizu, pretposlednji red se

nadovezuje na njega, potom treći red od dole dolazi kao treći u velikom nizu piksela, itd. RGB

komponente se zapisuju obrnuto, BGR.

Page 13: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Koncept rešenja

11

3. Koncept rešenja

Nad zadatim projektom je izvršena dekompozicija na module, pri čemu svaki modul

rešava jedan deo celokupnog problema. Time je ujedno obezbeđena preglednost i lakše

razumevanje rešenja, ali i, pre svega, mogućnost da te module koristimo za druga rešenja. Na

sledećoj slici je prikazana dekompozicija.

Slika 9 – Dekompozicija rešenja na module

Page 14: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Koncept rešenja

12

U modulu aplikacije se prihvataju ulazni parametri iz komandne linije. Zatim se, unutar

modula aplikacije, kod može podeliti na 4 celine:

1. Poziv modula za proveru ispravnosti parametara sa komandne linije.

2. Učitavanje slike u memoriju. Vrši se provera potencijalnih nepravilnosti u toku

učitavanja slike i provera zaglavlja BMP slike, pri čemu se pozivaju funkcije iz

modula za rad sa BMP slikama. Ovde se proverava, samo ukoliko je korisnik izabrao

mod 3, deljivost dimenzija slike sa 4.

3. Konverzija, pri čemu se ulazna slika prebacuje iz RGB prostora u Y’UV prostor boja.

Ova funkcija se poziva iz modula za rad sa BMP slikama.

4. Poziv jednog od tri modula, u zavisnost od moda koji je upisan u komandnu liniju

(1 - korekcija osvetljenja, 2 - korekcija kontrasta, 3 - rotiranje slike)

Slika 10 – Blok dijagram rešenja

Page 15: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Programsko rešenje

13

4. Programsko rešenje

Programsko rešenje se sastoji, kao što je to već napomenuto, iz više modula, pri čemu

svaki modul rešava jedan deo problema. Ovi moduli su dati u sledećoj tabeli.

Naziv modula Naziv datoteke Opis

Modul aplikacije (main) main.cpp Modul aplikacije za segmentaciju slike

Modul za proveru parametara

input_check.h input_check.cpp

Modul za proveru ispravnosti pro-sleđenih parametara

Modul za rad sa BMP datotekama

bmp.h bmp.cpp

Modul koji sadrži funkcije za rad nad BMP slikama

Modul za korekciju osvetljenja

brightness_correction.h brightness_correction.cpp

Modul za korekciju osvetljenja po formuli:

𝑠𝑖 = 𝑔𝑖 + 𝑏𝑟𝑖𝑔ℎ𝑡𝑛𝑒𝑠𝑠

Modul za korekciju kontrasta

contrast_correction.h contrast_correction.cpp

Modul za korekciju kontrasta po formuli:

𝑠𝑖 = 𝑐𝑜𝑛𝑡𝑟𝑎𝑠𝑡 ∙ (𝑔𝑖 − 𝑎𝑣𝑟𝑔) + 𝑎𝑣𝑟𝑔

Modul za rotaciju slike image_rotate.h image_rotate.cpp

Modul za rotiranje slike za 90, 180 ili 270 stepeni, koji se oslanja na Modul za rotaciju slike za 90 stepeni

Modul za rotaciju slike za 90 stepeni

ninety_rotation.h ninety_rotation.cpp

Modul za rotaciju slike za 90 stepeni koji se poziva jednom, dva puta ili tri puta u zavisnosti od potrebnog stepena rotiranja, 90, 180 ili 270 stepeni, respektivno.

Tabela 1 – Programski moduli

Page 16: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Programsko rešenje

14

4.1 Modul main

Ulazni parametri programa su: naziv ulazne BMP slike, naziv izlazne BMP slike, nivo

korekcije osvetljenja, nivo korekcije kontrasta, ugao rotacije i željeni mod.

int main(int argc, unsigned char* argv[])

Ulazni argumenti argc – Broj ulaznih argumenata sa komandne linije.

argv – Niz argumenata komandne linije.

Izlazni argumenti -

Povratne

vrednost

NO_ERROR, ako nema greške.

ERR_NO_ARGUMENTS, nedovoljan broj parametara.

ERR_INVALID_MODE, mod nije očekivane vrednosti.

ERR_INVALID_BRIGHTENESS_ CONTRAST, nivo osvetljenja ili kontrasta

nije pozitivan broj.

ERR_INVALID_ANGLE, ugao nema jedanu od očekivanih vrednosti.

ERR_INVALID_INPUT, ne može da se otvori ulazna BMP slika.

ERR_INVALID_OUTPUT, ne može da se kreira izlazna BMP slika.

ERR_INVALID_DIM, ulazna BMP slika nije dimenzija deljivih sa 4.

Main funkcija

Tabela 2 – Funkcija main()

Page 17: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Programsko rešenje

15

4.2 Modul za proveru parametara

int input_check (int argc, unsigned char* argv[])

Ulazni argumenti argc – Broj ulaznih argumenata sa komandne linije.

argv – Niz argumenata komandne linije.

Izlazni

argumenti

-

Povratne

vrednost

NO_ERROR, ako nema greške.

ERR_NO_ARGUMENTS, nedovoljan broj parametara.

ERR_INVALID_MODE, mod nije očekivane vrednosti.

ERR_INVALID_BRIGHTENESS_ CONTRAST, nivo osvetljenja ili

kontrasta nije pozitivan broj.

ERR_INVALID_ANGLE, ugao nema jedanu od očekivanih vrednosti.

Funkcija za proveru ulaznih parametara sa komandne linije

Tabela 3 – Funkcija input_check()

4.3 Modul za rad sa BMP datotekama

int isValidBmp(unsigned char *header)

Ulazni argumenti header – Memorijski bafer koji sadrži BMP zaglavlje.

Izlazni

argumenti

-

Povratne

vrednosti

NO_ERROR, ako je zaglavlje ispravno.

ERR_BMP_INVALID, ako je zaglavlje neispravno.

Funkcija za dobavljanje širine slike

Tabela 4 – Funkcija isValidBmp()

Page 18: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Programsko rešenje

16

unsigned long bmpWidth(unsigned char *header)

Ulazni argumenti header – Memorijski bafer koji sadrži BMP zaglavlje.

Izlazni

argumenti

-

Povratne

vrednosti

width – Širina slike.

Funkcija za dobavljanje širine slike

Tabela 5 – Funkcija bmpWidth()

unsigned long bmpHeight(unsigned char *header)

Ulazni argumenti header – Memorijski bafer koji sadrži BMP zaglavlje.

Izlazni

argumenti

-

Povratne

vrednosti

height – Visina slike.

Funkcija za dobavljanje visine slike

Tabela 6 – Funkcija bmpHeight()

void RGB2YUV(unsigned char R, unsigned char G, unsigned char B, unsigned char *Y, unsigned char *U, unsigned char *V)

Ulazni argumenti R – Ulazna R komponenta piksela.

G – Ulazna R komponenta piksela.

B – Ulazna R komponenta piksela.

Izlazni

argumenti

Y – Izlazna Y komponenta piksela.

U – Izlazna U komponenta piksela.

V – Izlazna V komponenta piksela.

Povratne

vrednosti

-

Funkcija za konverziju jednog piksela slike iz RGB u Y’UV prostor boja

Tabela 7 – Funkcija RGB2YUV()

Page 19: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Programsko rešenje

17

void YUV2RGB(unsigned char Y, unsigned char U, unsigned char V, unsigned char *R, unsigned char *G, unsigned char *B)

Ulazni argumenti Y – Ulazna Y komponenta piksela.

U – Ulazna U komponenta piksela.

V – Ulazna V komponenta piksela.

Izlazni

argumenti

R – Izlazna R komponenta piksela.

G – Izlazna G komponenta piksela.

B – Izlazna B komponenta piksela.

Povratne

vrednosti

-

Funkcija za konverziju jednog piksela slike iz Y’UV u RGB prostor boja

Tabela 8 – Funkcija YUV2RGB()

void bufRGB2bufYUV(unsigned char *bufRGB, unsigned char *bufYUV, unsigned long width, unsigned long height)

Ulazni argumenti bufRGB – Ulazni bafer RGB podataka.

width – Širina slike.

height – Visina slike.

Izlazni

argumenti

bufYUV – Izlazni bafer za Y’UV podatke.

Povratne

vrednosti

-

Funkcija za konverziju slike iz RGB u Y’UV prostor boja

Tabela 9 – Funkcija bufRGB2bufYUV()

Page 20: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Programsko rešenje

18

void bufYUV2bufRGB(unsigned char *bufYUV, unsigned char *bufRGB, unsigned long width, unsigned long height)

Ulazni argumenti bufYUV – Ulazni bafer Y’UV podataka.

width – Širina slike.

height – Visina slike.

Izlazni

argumenti

bufRGB – Izlazni bafer za RGB podatke.

Povratne

vrednosti

-

Funkcija za konverziju slike iz Y’UV u RGB prostor boja

Tabela 10 – Funkcija bufYUV2bufRGB()

unsigned long changeBmpDim(unsigned char *header)

Ulazni argumenti header – Memorijski bafer koji sadrži BMP zaglavlje.

Izlazni

argumenti

-

Povratne

vrednosti

-

Funkcija za zamenu dimenzija visine i širine u zaglavlju BMP slike

Tabela 11 – Funkcija changeBmpDim()

Page 21: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Programsko rešenje

19

4.4 Modul za korekciju osvetljenja

void brightness_correction(unsigned char *inBuf, unsigned char *outBuf, unsigned long width, unsigned long height, int level)

Ulazni argumenti inBuf – Ulazni bafer YUV podataka.

width – Širina slike.

height – Visina slike.

level – Nivo korekcije osvetljenja.

Izlazni

argumenti

outBuf – Izlazni bafer koji sadrži BMP sliku čije je osvetljenje

korigovano.

Povratne

vrednosti

-

Funkcija za korekciju osvetljenja slike

Tabela 12 – Funkcija brightness_correction()

4.5 Modul za korekciju kontrasta

void contrast_correction(unsigned char *inBuf, unsigned char *outBuf, unsigned long width, unsigned long height, int level)

Ulazni argumenti inBuf – Ulazni bafer YUV podataka.

width – Širina slike.

height – Visina slike.

level – Nivo korekcije kontrasta.

Izlazni

argumenti

outBuf – Izlazni bafer koji sadrži BMP sliku čiji je kontrast

korigovan.

Povratne

vrednosti

-

Funkcija za korekciju kontrasta slike

Tabela 13 – Funkcija contrast_correction()

Page 22: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Programsko rešenje

20

4.6 Modul za rotiranje slike

void image_rotate(unsigned char *inBuf, unsigned char *outBuf, unsigned long width, unsigned long height, int angle)

Ulazni argumenti inBuf – Ulazni bafer YUV podataka.

width – Širina slike.

height – Visina slike.

angle – Ugao rotacije slike.

Izlazni

argumenti

outBuf – Izlazni bafer koji sadrži BMP sliku koja je rotirana za

ugao koji je naveden u parametru angle.

Povratne

vrednosti

-

Funkcija za rotaciju slike

Tabela 14 – Funkcija image_rotate()

void ninety_rotation(unsigned char *inBuf, unsigned char *outBuf, unsigned long width, unsigned long height)

Ulazni argumenti inBuf – Ulazni bafer YUV podataka.

width – Širina slike.

height – Visina slike.

Izlazni

argumenti

outBuf – Izlazni bafer koji sadrži BMP sliku koja je rotirana za

90 stepeni.

Povratne

vrednosti

-

Funkcija za rotaciju slike za 90 stepeni

Tabela 15 – Funkcija ninety_rotation()

Page 23: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Rezultati

21

5. Rezultati

U ovom poglavlju su prikazani dobijeni rezultati segmentacije slike pomoću već

opisanih koraka.

Slika 11 – Rezultat konverzije iz RGB u Y’UV prostor boja. Slika desno je slika u Y’UV prostoru boja.

Slika 12 – Slika desno prikazuje rezultat korekcije osvetljenja nivoom 50.

Page 24: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Rezultati

22

Slika 13 – Slika desno prikazuje rezultat korekcije kontrasta nivoom 3.5.

Slika 14 – Skroz levo je polazna slika, dok su ostale slike rotacije za 90, 180 i 270 stepeni, redom.

Page 25: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Zaključak

23

6. Zaključak

Ono što je najbitnije napomenuti, jeste ograničenje u pogledu dimenzija slike i

poboljšanja rešenja u tom pogledu. Kako je već napomenuto, ulazna slika mora da bude

isključivo dimenzija koje su deljive sa 4 ukoliko je korisnik izabrao mod 3 – rotiranje slike.

Ogromno poboljšanje bismo dobili kada bi ulazna slika, za taj mod, mogla da bude bilo kojih

dimenzija. Time bismo dobili na opštosti rešenja. Međutim, to zahteva dodatne module koji

se bave pedingom i izmenom parametara (nova veličina slike u bajtovima sa zaglavljem i bez

njega) u zaglavlju rotirane BMP slike. Uvođenjem modula za peding bi se eliminisala i mala

greška koja nastaje kod modova 1 i 2.

Pošto su korekcija osvetljenja i kontrasta standardne rutine koje su isključivo

definisane na već pomenut način, nije moguće povećati efikasnost. Sa druge strane, pošto je

potrebno obraditi svaki piksel posebno, ne može se ni u tom pogledu uraditi neka ušteda.

Ušteda, kod pristupa rotiranju koji je u ovom rešenju primenjen, mogla bi da se dobije

tako što bi se napravila dva zasebna modula za prebacivanje slike: 1.) modul za prebacivanje

1D velikog niza u 2D matricu i 2.) modul za prebacivanje iz 2D matrice u 1D veliki niz, jer se

kod ove verzije rešenja vrši redundantno prebacivanje iz jednog niza u drugi kada su u

pitanju rotacije za 180 i 270 stepeni. Treba napomenuti da se u literaturi pominje i pristup

koji vrši rotiranje „u mestu“, odnosno ne zahteva dodatno alociranje memorije u kojoj se

smešta rotirana slika. Stoga, moguće je, u tom smislu, dodatno poboljšati rešenje.

Što se modularnosti i preglednosti main.cpp modula tiče, poboljšanje u tom smislu bi

se moglo postići ukoliko bismo napravili modul koji radi proveru ispravnosti učitane slike (u

rešenju – mIn).

Page 26: DOKUMENTACIJA ISPITNOG RADA · RGB prostor boja je aditivni model boja u kojima se crvena, zelena i plava svetlost dodaju zajedno na razne načine, kako bi se reprodukovao širok

Literatura

24

7. Literatura

1. V. Crnojević, Skripte i prezentacije sa predavanja iz Digitalne obrade slike, FTN, 2012.

2. http://www.geeksforgeeks.org/turn-an-image-by-90-degree/

3. R. Gonzalez and R. Woods, Digital Image Processing, 3rd edition, Prentice Hall, 2008.