You are on page 1of 6

Poglavlje 5

Laboratorijska vje
zba br1.
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 os-
novna tipa slika koji se javljaju i u poznatim rasterskim grafickim 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.

5.0.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. Kolor-
mapa 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 grafickog
fajla koji podrzava indeksirane slike je TIFF.

61

62POGLAVLJE 5. LABORATORIJSKA VJEZBA BR1. SLIKE U MATLABU

5.0.2 Intenzitetske slike


Matlab cuva intenzitetsku sliku kao jednu matricu u kojoj svaki element od-
govara 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.

5.0.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.

5.0.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 kombina-
cijom se dobijaju boje piksela. U standardnim formatima grafickih fajlova slike
su predstavljene kao 24-bitne slike pri cemu je po 8 bita rezervisano za predstav-
ljanje 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

5.0.5 Koordinatni sistemi


U zavisnosti od situacije, lokacije piksela na slici mogu se odrediti razlicitim
koordinatnim sistemima. Image Processing Toolbox koristi dva koordinatna
sistema:
63

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. Koor-
dinate svakog piksela su odredene uredenim parom (vrsta, kolona).

Slika 5.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 sljedecom slikom.

Slika 5.2:

64POGLAVLJE 5. LABORATORIJSKA VJEZBA BR1. SLIKE U MATLABU

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 hori-
zontalne i vertikalne koordinate. U vjezbama koje slijede najcesce cemo koristiti
koordinatni sistem piksela.

Citanje i zapisivanje slika


Ocigledno, postoji jednoznacna korespondencija izmedu ovako definisanih koor-
dinata piksela i indeksa elemenata matrice u Matlabu. Na primjer, vrijednost
piksela u drugoj vrsti i petoj koloni se nalazi u elementu matrice na koordina-
tama (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 kreira-
ju/eksportuju odgovarajuce 2D/3D nizove unutar Matlab okruzenja. Funkcija
imfinfo 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

imfinfo('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 cam
imfinfo('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.
Funkcija 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 nu-
merickom podrucju. Ova funkcija medutim, skalira ulazno podrucje podataka i
prikazuje ih primjenom trenutne ili defaultne mape boje.

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 off; %Iskljucivanje labeliranja osa
colormap(gray); %Prikaz intenzitetske slike pomocu mape boja

Primjer 3
65

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 off;
colormap(gray); colorbar;
imshow(B,[0 1000]); %Ali ako eksplicitno specificiramo podrucje podataka, imshow tada daje korektan prikaz

Ako zelimo prikazati vise slika zajedno, tada je najbolje koristiti funkciju
subplot, koja kreira mozaik slika ili grafika.
Primjer 4

B=imread('cameraman.tif'); %Cita 8-bitnu intenzitetsku sliku


C=imread('pout.tif'); %Cita 8-bitnu intenzitetsku sliku
D=imread('autumn.tif'); %Cita sliku u boji
subplot(3,1,1); imagesc(B); axis image; %Kreira 3x1 mozaik slika
axis off; colormap(gray); %Prikazuje prvu sliku
subplot(3,1,2); imagesc(C); axis image; %Prikazuje drugu sliku
axis off; colormap(jet); %Podesava mapu boja na jet
subplot(3,1,3); imshow(D); %Prikazuje trecu sliku

Pristupanje pojedina
cnim pikselima
Matlab sadrzi interaktivne ugradene preglednike za slike koji mogu biti pozvani
pomocu funkcije imview. Njena namjena je nesto drugacija od prethodno na-
vedenih 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);
B(25,50) %Stampa 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,:) %Stampa RGBvrijednosti piksela na lokaciji (25,50)
D(25,50, 1) %Stampa 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



66POGLAVLJE 5. LABORATORIJSKA VJEZBA BR1. SLIKE U MATLABU

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);

Takode je moguce konvertovati grayscale sliku u indeksiranu sliku.


Primjer 7

[Dind, map] = gray2ind(D); %Konvertuje je gray-scale sliku u indeksiranu


subplot(2,1,1); imshow(D); axis image; %Prikaz slika
subplot(2,1,2); imshow(Dind, map);

Primjer 8

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');

DICOM slike

Tipicne klinicke slike snimljene su u DICOM formatu. Kao primjer uzet pos-
tojecu CT sliku u Matlabu: CT-MONO2-16-ankle.dcm. Ekstenzija dcm govori
da je rijec o slici u DICOM formatu.

info = dicominfo('CT-MONO2-16-ankle.dcm');
info

Ova slika je anonimizirana, sto znaci da je ime pacijenta uklonjeno. Ponekad


je, u okviru ovih informacija, pored imena pacijenta data i dijagnoza. Ucitajmo
sliku pomocu DICOM image reader.

Im = dicomread('CT-MONO2-16-ankle.dcm');

Primjenom naredbe whos moguce je vidjeti kako su pohranjeni pikseli slike.


Pokusajte prikazati sliku primjenom imshow. Kao sto mozete vidjeti, kontrast
je vrlo los. Ovo je posljedica skaliranja vrijednosti piksela slike, jer oni nisu
8-bitne vrijednosti. Otvorite sliku primjenom naredbe imtool.

imtool (Im)

Primjenom opcije Adjust Contrast sa menija moguce je mijenjati boje.

You might also like