Alfa univerzitet „Fakultet za matematiku i računarske nauke“

SEMINARSKI RAD

Predmet:Teorija algoritama jezika i 

automata

Tema: Segmentacija slike u programskom 

jeziku C

Mentor:                                                                          Student:
Prof. Lazar Kopanja                                                      Ana Lončarević

                                 

Mart 2019

SADRŽAJ 

  

1.

Uvod ............................................................................................2

2.

Teorijske osnove..........................................................................3

3.

Kontrast slike...............................................................................3

4.

Koncept rešenja............................................................................4

5.

Funkcije u C programskom jeziku...............................................5

6.

Struktura programa u C jeziku.....................................................6

7.

Varijable.......................................................................................7

8.

Tipovi podataka............................................................................9

9.

Operatori.......................................................................................9

10. Rezultati..................................................................................12
11. Zaključak.................................................................................13
12. Literatura ................................................................................15

background image

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: 

??

 = 

????????

 ∙ (

??

 − 

???????

) + 

e

??????

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: 

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.

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.

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.

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)

background image

STRUKTURA PROGRAMA U C JEZIKU

Možda najbolji način da se nauči raditi u nekom programskom jeziku jest da se počne s 
pisanjem programa. Tako ćemo i mi, stoga, evo naš prvi program: moj prvi program u C++
#include<iostream>
Using namespace std:
Int main( )
(cout<<< “ Mi zelimo full bodova !“;)
Ovo je jedan od najjednostavnijih programa koji se mogu napisat u c++, ali neke najosnovnije stvari  
koje svaki c++ program ima. Pogledat ćemo liniju koda i objasniti svaku. moj prvi program u C++
Ovo je komentar. Sve linije koje počinju sa dve kose crte (//) su smatrani kao komentari i nemaju 
nikakav   uticaj   na   ponašanje   programa.   Programer   ih   može   koristiti   kao   kratka   objašnjenja   ili 
proučavanja unutar sourca koda. U našem slučaju, linija je kratki opis što je naš program

#include<iostream>

Linija koja počinje s znakom lestve (#) je predprocesorska naredba. Takve linije nisu obične koda sa 
nekim izrazom, već indikator za predprocesor kompailera. U našem naredba #include <iostream> 
poziva iz predprocesora iostream standardnu datoteku. Ova specifična datoteka uključuje deklaracije 
standardnih ulazno-izlaznih biblioteka u c++, a uključena je zbogsvoje funkcionalnosti koja će biti 
kasnije korištena u programu.

using namespace std;

Svi   elementi   standardne   c++   biblioteke   su   deklarisani   unutar   onog   što   se   zove   namespace, 
namespace sa imenomstd. Kako bismo pristupili njenoj funkcionalnosti moramo deklarisati ovaj 
izraz koji ćemo koristiti. Ova linija kada je dosta česta u C programima koji koriste standardne 
bibloteke, te će se ujedno dosta koristitii u ostalim kodovima ovog seminara.

int main ()

Ova   linija   predstavlja   početak   definicije   glavne   funkcije.   Glavna   funkcija   je   mesto   gde   svi   C 

programi počinju svoje izvršavanje, nezvisno o mjestu u source kodu. Nema veze da li postoje ostale 

funkcije sa drugačijim imenima ispred ili iza-naredbe sadržane unutar ove funkcije će uvek biti prve 

izvršavane u svakom C programu. Iz toga razloga je važno da svi C programi imaju main funkciju.

Iza main funkcije slede par zagradi [()]. To je zato što je to dekleracija funkcije : u C ono što 

razlikuje dekleraciju funkcije od ostalih izraza su ovi parametri. Ponekad, ovi parametri mogu imati 

listu parametra unutar njih.

Nakon toga imamo simbol koji nam označava početak bloka naredbi.

cout<< „ Mi želimo full bodove iz seminara...hehe!};

Ova linija je C izjava. Izjava je jednostavan ili složeni izraz koji može stvoriti neki efekt. Ustvari, 

ova izjava izvodi vizualni efekt u našem prvom programu.

Želiš da pročitaš svih 22 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti