Programski jezik
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

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)

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.
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti