Image ja Imshow

Matlabin image komento näyttää valitun matriisin kuvana. Hahmottaaksesi paremmin sitä, miten Matlab käsittelee kuvia matriiseina voit ihan aluksi tehdä itse jonkun matriisin ja näyttää sen kuvana image komennolla. Myös Imshow komento näyttää matriisin kuvana, ja yleisesti ottaen Imshow komennon käyttö onkin suositeltavampaa, koska se säilyttää kuvan mittasuhteet ja sen käyttö on muutenkin helpompaa.

Esimerkki 1.

Luodaan 6x6 matriisi koe ja näytetään se image komennolla kuvana. Matriisin arvot ovat harmaasävyarvoja joita voit halutessasi vapaasti muutella ja samalla tulee kerrattua, miten matriiseja syötetään Matlabiin.

koe = [255 204 153 102 51 0;
        255 204 153 102 51 0;
       255 204 153 102 51 0;
       255 204 153 102 51 0;
      255 204 153 102 51 0;
      255 204 153 102 51 0];
image(koe);

Colormap ja kuvatyypit

Edellisessä kappaleessa yksikertaisesti todettiin, että matriisin arvot ovat harmaasävyjä, mutta harmaasävyjä ne eivät tietenkään ole ennen, kuin näyttölaite ne harmaasävyinä meille välittää. Matlabin sisällä luvut matriisissa ovat lukuja ja tarkemmin ottaen esimerkiksi uint8, uint16 tai double tyyppisiä lukuja. Yllä oleva koe esimerkki oli niin sanotusta intensiteettikuvasta, jossa jokainen lukuarvo kuvaa suoraan jotakin intensiteettiä (kirkkausarvoa). Tässä tapauksessa intensiteetit ovat välillä 0-255. 0-intensiteetti on musta ja 255 on valkoinen. Tällaisen kuvan esittämiseen Matlab käyttää oletusarvoista värikarttaa.

Värikartta eli colormap on matriisi, jossa on aina kolme saraketta ja haluttu määrä rivejä. Yksi rivi vastaa aina yhtä väriä ja sen kolmeen sarakkeeseen on tallennettuna näyttöä varten RGB arvo siten, että ensimmäisessä sarakkeessa on punaisen värin intensiteetti, toisessa vihreän ja kolmannessa sinisen. Intesiteettiarvot ovat reaalilukuja nollan ja yhden väliltä, mitä suurempi arvo on sitä suurempi kyseisen värin intensiteetti on. Käsiteltäessä harmaasävykuvia käytetään harmaasävyvärikarttaa esim. gray(256), jossa punaisen, vihreän ja sinisen arvot ovat samat. Täysin valkoisen värin rivi on [1 1 1] ja täysin mustan [0 0 0] ja muut harmaasävyt löytävät näiden väliltä esim. [0.9098 0.9098 0.9098].

Toinen kuvatyyppi on indeksoitu kuva, jossa matriisin arvo kertoo indeksin, eli sen rivin numeron, jolta värikartasta haetaan varsinainen RGB arvo. Indeksoituja kuvia käytettäessä voi käytetyn värikartan tallentaa kuvan kanssa, jolloin se automaattisesti ladataan, kun samaa kuvaa seuraavan kerran käytetään.

Esimerkki 2.

Colormap matriisin luonteeseen on helppo tutustua vaikka hakemalla näytölle käyttämämme harmaasävykartta.

map=gray(256)

Imread

Matlab tukee kaikkia yleisimpiä kuvatiedostomuotoja, joten oman kuvan tuominen Matlabiin käsittelyä varten ei pitäisi tuottaa ongelmia. Komento Imread lukee haluamasi kuvan matriisiin käsittelyä varten.

Esimerkki 3.

Syntaksin mukaan tiedostonimen jälkeen tulee vielä tiedostomuodon lyhenne, joka ei kuitenkaan ole välttämätön, sillä Matlab osaa yleisimmissä tapauksissa tunnistaa tiedostomuodon tiedoston sisällön perusteella. Seuraavat tapaukset tuottavat saman onnistuneen lopputuloksen.

A = imread( 'demo1.tif', 'tif');
A = imread( 'demo1.tif');
A = imread( 'demo1', 'tif');

Tutkiaksesi edelleen juuri lataamasi kuvan matriisiluonnetta voit poimia yksittäisen kuvapisteen harmaasävyarvon seuraavasti A(rivi, sarake). Esimerkiksi vasen yläkulma:

A (1,1)

  • No labels
You must log in to comment.