You are on page 1of 8

3 Osnove obrade slike

3.1 Slike u Matlabu


U Image Processing toolboxu (IPT) nalaze se funkcije specijalizovane za ulazno-izlazne
operacije, prikazivanje i obradu slika. U IPT-u su podrzana cetiri osnovna tipa slika koji
se javljaju i u poznatim rasterskim grackim programima kao sto je Adobe Photoshop.
Ovi tipovi su:
1. Indeksirane slike,
2. Intenzitetske slike,
3. Binarne slike,
4. RGB slike.
Tipom slike se utvrduje veza izmedu vrijednosti elemenata matrice i boje, odnosno,
intenziteta piksela. Potrebno je napomenuti da Matlab memorise sliku kao matricu.
Svakom pikselu na slici odgovara jedan element matrice.
3.1.1 Indeksirane slike
Indeksirane slike se memorisu kao dvije matrice, matrica slike i kolormapa ili paleta.
Kolormapa sadrzi vrijednosti koje predstavljaju boje piksela u slici. Matrica slike za
svaki piksel sadrzi indeks elementa u kolormapi koji predstavlja boju tog elementa. Ovi
indeksi mogu biti klase uint8, uint16 ili double. Kolormapa je matrica klase double
dimenzija m x 3. Svaka vrsta kolormape sadrzi vrijednosti crvene (R), zelene (G) i plave
(B) komponente odredene boje. R, G i B su realni skalari cije su vrijednosti iz opsega
[0, 1]. Tipican format grackog fajla koji podrzava indeksirane slike je TIFF.
3.1.2 Intenzitetske slike
Matlab cuva intenzitetsku sliku kao jednu matricu u kojoj svaki element odgovara jednom
pikselu slike. Matrica moze biti klase double u kom slucaju su njeni elementi iz opsega
[0,1], klase uint8 sa elementima iz opsega [0,255] ili klase uint16 sa elementima iz opsega
[0, 65535]. Elementi matrice predstavljaju intenzitet (nivo sivila) pojedinih piksela, gdje
vrijednost 0 odgovara crnoj, a 1 (odnosno 255 ili 65535) punom intenzitetu, tj. bijeloj
boji.
6
3.1.3 Binarne slike
U binarnoj slici svaki piksel moze poprimiti jednu od dvije moguce vrijednosti. Ove
vrijednosti mogu se tumaciti kao objekat i kao pozadina. Matlab binarnu sliku memorise
kao matricu ciji elementi su 0 (pozadina) i 1 (objekat). Jasno, binarna slika moze
se posmatrati kao specijalan slucaj intenzitetske slike sa samo dva nivoa intenziteta.
Elementi matrice su u ovom slucaju klase logical. Vazno je napomenuti da se matrica
ciji su elementi 0 i 1, ali cija klasa nije logical u MATLAB-u ne smatra binarnom slikom.
3.1.4 RGB slike
Kao kod indeksiranih slika i kod RGB slika se boja piksela odreduje na osnovu tri
komponente R (crvene), G (zelene) i B (plave). Medutim, za razliku od indeksiranih
slika kod koji se vrijednosti ovih komponenti cuvaju u posebnoj kolormapi, kod RGB
slika one se pamte u samoj matrici slike. Dakle, matrica slike je dimenzija m x n x
3, gdje su m i n broj vrsta, odnosno kolona matrice slike. Moze se smatrati da se
treca dimenzija sastoji od tri ravni cijom kombinacijom se dobijaju boje piksela. U
standardnim formatima grackih fajlova slike su predstavljene kao 24-bitne slike pri
cemu je po 8 bita rezervisano za predstavljanje svake od 3 komponente. U MATLAB-u
elementi matrica mogu biti klase uint8, uint16 ili double. Matlab omogucava konverzije
izmedu razlicitih tipova i klasa slika. Posto smo u okviru ovih vjezbi inicijalno najvise
zainteresovani za obradu monohromatskih slika najvise cemo koristiti intenzitetske i
binarne slike. Osnovne funkcije za konverziju izmedu razlicitih tipova i klasa slika su
dati u tabeli. Za vise informacija pogledati Image Processing Toolbox dokumentaciju.
Naziv Konvertuje ulaz u: Klase ulaznih podataka
im2uint8 uint8 logical, uint8, uint16, double
im2uint16 uint16 logical, uint8, uint16, double
mat2gray double (u opsegu [0, 1]) double
im2double double logical, uint8, uint16, double
im2bw logical uint8, uint16, double
3.1.5 Koordinatni sistemi
U zavisnosti od situacije, lokacije piksela na slici mogu se odrediti razlicitim koordinatnim
sistemima. Image Processing Toolbox koristi dva koordinatna sistema:
koordinatni sistem piksela, i
prostorni koordinatni sistem.
Koordinatni sistem piksela
U ovom koordinatnom sistemu slika se postmatra kao resetka sa diskretnim elementima
uredenim odozgo prema dole i sa lijeva u desno, kao na slici. Koordinate svakog piksela
su odredene uredenim parom (vrsta, kolona).
7
Figure 3.1:
Prostorni koordinatni sistem
Ponekad je, medutim, pogodno piksel posmatrati kao kvadratnu oblast koja ima neku
konacnu povrsinu. Sada pozicija (2.3, 3.4) ima smisla i razlicita je od pozicije (2, 3).
Prostorni koordinatni sistem ilustrovan je sledecom slikom:
Vidimo da su koordinate centra svakog piksela u prostornom koordinatnom sistemu
iste kao i koordinate tog piksela u koordinatnom sistemu piksela. Sa druge strane,
razlikuju se ishodista koordinatnih sistema, kao i redoslijed horizontalne i vertikalne
koordinate. U vjezbama koje slijede najcesce cemo koristiti koordinatni sistem piksela.

Citanje i zapisivanje slika


Ocigledno, postoji jednoznacna korespondencija izmedu ovako denisanih koordinata
piksela i indeksa elemenata matrice u Matlabu. Na primjer, vrijednost piksela u drugoj
vrsti i petoj koloni se nalazi u elementu matrice na koordinatama (2, 5). U koordinatnom
sistemu piksela, pikseli se posmatraju kao diskretni elementi koji nemaju dimenzija.
(2.3,3.4) u ovom koordinatnom sistemu nemaju smisla.

Citanje i zapisivanje slika u Matlab-u moze se postici primjenom imread i imwrite


funkcija. Ove funkcije podrzavaju sve uobicajene formate slike i kreiraju/eksportuju
odgovarajuce 2D/3D nizove unutar Matlab okruzenja. Funkcija imnfo moze biti
koristena kao upit o slici u vezi njenih bitnih osobina kao sto je tip, format, velicina
i slicno.
U narednom primjeru je prezentirana upotreba navedenih funkcija.
Primjer 1
imnfo(cameraman.tif ) %Upit da li slika cameraman.tif postoji u Matlabu
I1=imread(cameraman.tif); %

Cita sliku TIF formata pod nazivom cameraman


imwrite(I1,cameraman.jpg,jpg); %Zapisuje reultijuci niz I1 na disk kao JPEG sliku
imena cameraman
imnfo(cameraman.jpg) %upit za rezultujucu sliku na disku, uocite promjene u velicini
slike
Osnovni prikazi slike
Za prikaz slike u Matlabu moguce je koristiti dvije funkcije: imshow i imagesc. Funk-
cija imshow zahtijeva da 2D niz koji zelimo prikazati odgovara odredenom tipu slike (npr.
slika sa vrijednostim izmedu 0 i 1 ili 0 i 255), dok imagesc omogucava koristenje ulaznog
niza bilo kojeg Matlab tipa i u bilo kojem numerickom podrucju. Ova funkcija medutim,
skalira ulazno podrucje podataka i prikazuje ih primjenom trenutne ili defaultne mape
boje.
8
Primjer 2
A=imread(cameraman.tif); %

Cita intenzitetsku sliku


imshow(A); %Prvi prikaz pomocu imshow
imagesc(A); %Naredni prikaz primjenom imagesc
axis image; %Korigovanje omjera prikazane slike
axis o; %Iskljucivanje labeliranja osa
colormap(gray); %Prikaz intenzitetske slike pomocu mape boja
Primjer 3
B=rand(256).*1000; %Generise niz slucajnih brojeva u intervalu od 0 do 1000
imshow(B); %Slab kontrast je posljedica primjene imshow jer podaci prelaze ocekivano
podrucje
imagesc(B); %imagesc automatski skalira mapu boja prema podacima
axis image; axis o;
colormap(gray); colorbar;
imshow(B,[0 1000]); %Ali ako eksplicitno speciciramo podrucje podataka, imshow tada
daje korektan prikaz
Ako zelimo prikazati vise slika zajedno, tada je najbolje koristiti funkciju subplot,
koja kreira mozaik slika ili graka.
Primjer 4
B=imread(cameraman.tif); %

Cita 8-bitnu intenzitetsku sliku


C=imread(pout.tif);%

Cita 8-bitnu intenzitetsku sliku


Dimread(autumn.tif); %

Cita sliku u boji


subplot(3,1,1); imagesc(B); axis image; %Kreira 3 1 mozaik slika
axis o; colormap(gray); %prikazuje prvu sliku
subplot(3,1,2); imagesc(C); axis image; %Prikazuje drugu sliku
axis o; colormap(jet); %Podesava mapu boja na jet
subplot(3,1,3); imshow(D); %Prikazuje trecu sliku
Pristupanje pojedinacnim pikselima
Matlab sadrzi interaktivne ugradene preglednike za slike koji mogu biti pozvani pomocu
funkcije imview. Njena namjena je nesto drugacija od prethodno navedenih funkcija:
imview je primarno namijenjena za pregled slike i podregiona unutar slike.
Primjer 5
B=imread(cell.tif); %

Cita 8-bitnu intenzitetsku sliku


imview(B); %Poziv interaktivnog viewera
D=imread(autumn.tif); %

Cita sliku u boji


imview(B);
9
B(25,50) %tampa vrijednosti piksela na lokaciji (25,50)
B(25,50)=255; %Podesava vrijednost piksela na bijelu boju (255)
imshow(B); %Prikaz rezultujuce slike D(25,50,:) %tampa RGBvrijednosti piksela na
lokaciji (25,50)
D(25,50, 1) %tampa samo crvenu vrijednost piksela na lokaciji (25,50)
D(25,50,:)=(255, 255, 255); %Podesava vrijednost piksela na bijelu boju (255)
imshow(D); %Prikaz rezultujuce slike
Konverzija tipova slika
Matlab omogucava konverziju slika iz jednog tipa u drugi. U nastavku cemo prikazati
konverziju slike u boji u grayscale sliku i prikaz pojedinih RGB kanala slike u boji.
Primjer 6
D=imread(onion.png); %

Cita 8-bitnu RGB sliku u boji


Dgray=rgb2gray(D); %Konvertuje je u gray-scale sliku
subplot(2,1,1); imshow(D); axis image; %Prikaz slika
subplot(2,1,2); imshow(Dgray);
Primjer 7
D=imread(onion.png); %

Cita 8-bitnu RGB sliku u boji


Dred=D(:,:,1); %Izdvaja crveni kanal (prvi kanal)
Dgreen=D(:,:,2); %Izdvaja zeleni kanal (drugi kanal)
Dblue=D(:,:,3); %Izdvaja plavi kanal (treci kanal)
subplot(2,2,1); imshow(D); axis image;
subplot(2,2,2); imshow(Dred); title(red);
subplot(2,2,3); imshow(Dgreen); title(green);
subplot(2,2,4); imshow(Dblue); title(blue);
3.2 Histogram slike
Histogram predstavlja jedan od kljucnih alata u obradi slike, namijenjen dobijanju
znacajnih informacija o slici na onsovu kojih moze biti odreden opci kvalitet slike, kao
na primjer svjetlina, kontrast, entropija i odnos signal-sum.
Histogram slike predstavlja raspodjelu piksela u slici u odnosu na skalu nivoa sive
slike. Moze biti vizueliziran tako da se svaki piskel smjesti u bin (grupu) koji odgovara
intenzitetu boje tog piksela. Nakon toga, sumira se broj piksela koji pripada svakom
pojedinacnom binu i vrijednosti tih suma ili visina se prikazuju u obliku grafa. Tako
dobijeni graf naziva se histogramom slike. Neka je X tzv. ahromatska slika i neka
su pojedinacni pikseli slike oznaceni sa X
s
gdje s S predstavlja poziciju piksela u
resetki slike S. Pretpostavimo uopceno da piksel moze imati samo diskretne vrijednosti
10
0, . . . , L 1, pri cemu je obicno L = 256. Tada je histogram slike X dat sa
h(i) =

sS
(x
s
i) (3.1)
Slika
Potrebno je napomenuti da histogram prikazuje broj piksela za svaku mogucu vrijed-
nost piksela slike, ali ne daju informaciju o tome gdje se ti pikseli nalaze na slici. Prema
tome, prostorne informacije su zanemarene. Na osnovu ovoga, moze se zakljuciti da je
histogram jedinstven za odredenu sliku, ali je moguce da razlicite slike imaju potpuno
isti histogram.
Suma visina svih binova histograma jednaka je ukupnom broju piksela na slici. Nor-
malizovani histogram se moze dobiti dijeljenjem visine binova sa ukupnim brojem piksela
slike, tako da je suma normalizovanih visina binova jednaka 1.
Statisticki gledano, normalizovani histogram predstavlja funkciju gustine vjerovatnoce
(eng. Probability Density Function, PDF) digitalne slike i indicira vjerovatnocu, na
skali od 0 do 1, pojavljivanja odredene vrijednosti piksela na slici. Integraljenjem nor-
malizovanog histograma dobija se kumulativna funkcija raspodjele intenziteta slike koja
indicira vjerovatnocu da ce piksel imati vrijednost jednaku ili manju od date vrijednosti
intenziteta. Vrijedost kumulativne funkcije raspodjele za odredenu vrijednost intenziteta
piksela dobija se sumiranjem vrijednosti funkcije gustine vjerovatnoce za sve vrijednosti
piksela pocev od 0 pa do vrijednosti intenziteta piksela koja se posmatra.
Pored navedenog, histogram slike pokazuje da li je slika uopceno tamna ili svijetla.
Sumiranjem proizvoda vrijednosti piksela i odgovarajucih visina binova, te dijeljenjem sa
ukupnim brojem piksela dobija se srednja vrijednost piksela. Ako je ta srednja vrijednost
piksela blizu polovine maksimalne moguce vrijednosti, tj. 127 ili 128 za 8-bitnu (sliku
sa 256 nivoa sive) sliku, onda to predstavlja optimalnu svjetlinu. Vrijednost koja je
znacajno ispod ili iznad ovoga govori da je slika uopceno tamna ili svijetla, respektivno.
3.3 Dinamicko podrucje i kontrast slike
Koncept dinamickog podrucja potice od digitalne fotograje i audio uredaja kao sto je
npr. CD. Tako, na primjer, dinamicko podrucje fotograje moze se izraziti kao broj
nivoa boje ili brj sivih nivoa slike, odnosno, kao razlika izmedu maksimalne i minimalne
vrijednosti piksela slike.

Sto je veci broj nivoa, to je moguce preciznije reproducirati sitne
razlike boje ili sivih tonova. Slika ?? prikazuje primjer medicinske slike digitalizovane sa
razlicitim brojem nivoa sive i ocito je da: sto je veci broj nivoa to je veci kvalitet slike.
Dinamicko podrucje se moze predstaviti kao razlika u vrijednostima intenziteta piksela
ili dB kao sto je to dato naredni izrazom:
DP = 20 log (a
max
a
min
) , (3.2)
gdje su a
max
i a
min
, maksimalne i minimalne vrijednosti piksela slike, respektivno.
Drugi znacajan koncept u obradi slike jeste kontrast. Kontrast slike zavisi od din-
amickog podrucja slike, kao i visine binova histograma i prosjecne raspodjele vrijednosti
11
piksela slike. Ako dinaciko podrucje slike obuhvata cijeli raspon vrijednosti sistema za
snimanje slike (npr. 2
n
za n-bitni sistem), tada slika posjeduje veliki kontrast. Obrnuto,
ako slika ima samo mali skup bliskih rasporedenih nivoa sive, tada je dinamickopodrucje
slike nisko, pa ke i kontrast slike nizak i slika izgleda blijedo. Isto tako, ako histogram
slike ima dva vrha (bimodalni histogram), takva slika ima veci kontrast nego slika koja
ima histogram sa samo jednim vrhom (unimodalni histogram).
3.4 Histogram - vjezbe
U Matlabu postoji gotova funkcija koja se moze koristiti za racunanje histograma, funk-
cija imhist. U nastavku su primjeri za racunanje histograma slike, te odredivanje vrijed-
nosti pojedinacnih binova histograma.
Primjer 1
A = imread(pout.tif);
subplot(1,2,1), imshow(A);
subplot(1,2,2), imhist(A);
i naredni primjer: A = imread(pout.tif);
subplot(1,2,1), imshow(A);
subplot(1,2,2), imhist(A);
[counts, bins]=imhist(A);
counts(92)
Primjer 2 - contrast streching
Histogrami slike se cesto koriste za normalizaciju kontrasta (contrast streching), sto se
izvodi tako da se podrucje intenziteta piksela ulazne slike razvuce tako da obuhvata vece
podrucje na izlaznoj slici.
Primjer u nastavku se zasniva na sljedecem metodu: najprije se izracuna histogram
slike, a zatim se na osnovu CDF odrede granice c i d vrijednosti piksela, koje odgovaraju
5% i 95% vrijednosti na CDF (tj. 5% piksela slike ce imati vrijednost c i 5% piksela slike
ce imati vrijednost manju od d).
A = imread(pout.tif);
Acs = imadjust(A, stretchlim(A,[0.05 0.95]),[]);
subplot(1,2,1), imshow(A);
subplot(1,2,2), imhist(Acs);
subplot(1,2,1), imhist(A);
subplot(1,2,2), imhist(Acs);
Primjer 3 - ekvalizacija histograma
A = imread(pout.tif);
Aeq=histeq(A); %ekvalizacija histograma subplot(2,2,1), imshow(A);
12
subplot(2,2,2), imshow(Aeq);
subplot(2,2,3), imhist(A);
subplot(2,2,4), imhist(Aeq);
Primjer 4 - histogram matching
U nastavku je dat primjer prilagodavanja histograma za grayscale sliku. Ovdje je den-
isana pdf u obliku rampe kao ciljna raspodjela histograma. A = imread(pout.tif);
pz = 0:255;
Am = histeq(A, pz);
subplot(2,3,1), imshow(A);
subplot(2,3,2), imshow(Am);
subplot(2,3,3), plot(pz);
subplot(2,3,4), imhist(A);
subplot(2,3,5), imhist(Am);
U nastavku je dat primjer prilagodavanja histograma za sliku u boji. Ovdje se nastoji
prilagoditi histogram slike prema histogramu druge slike. A = imread(oce 2.jpg);
imshow(A, []);
title(Original Image);
ref = imread(oce 4.jpg);
gure, imshow(ref, []);
title(Reference Image);
B = imhistmatch(A, ref);
gure, imshow(B, []);
title(Histogram Matched Image);
Primjer 5 -Histogram i slike u boji
A = imread(autumn.tif);
Ahsv=rgb2hsv(A);
V = histeq(Ahsv(:,:,3));
Ahsv(:,:,3)=V;
Aout=hsv2rgb(Ahsv);
subplot(1,2,1), imshow(A);
subplot(1,2,2), imshow(Ahsv);
V = histeq(A(:,:,3));
B = A;
B(:,:,3)=V;
subplot(1,2,1), imshow(A);
subplot(1,2,2), imshow(B);
13

You might also like