A grafikus rendszer Matlabban
6. Csúsztassa önkényes raszteres képeket.
Tetszőleges kép a számítógép képernyőjén egy tömb pixelek, amelyek mindegyike jellemző a színét. pixel színét határozza meg három részből áll: vörös, zöld és kék (Red, Green, Blue - RGB). Beállításához a pixel színét komponens értékeket csak egy memória bájt (8 bit) lehet írva, ahol egész szám nullától 255 (összesen 256 értékek).
Így minden egyes pixel a képernyőn meg kell egyeznie a három egész szám 0 és 255 között Egy ilyen rendszerben MATLAB egész megfelel az adatok típusát, a továbbiakban Uint8. E adattípus van megadva csak egy bájtot, ahelyett, 8 bájt a közönséges valós (frakcionált) double típusú szám. Alapértelmezésben minden változót a MATLAB rendszer társul típusú kettős, függetlenül attól, számszerű értékek, amit rendelni változókat.
Például az eredmény kódját a következő sor
jön létre a nevét és a változó típusa iVar1 kettős, amely hozzá van rendelve a 128 értékre tárolására ilyen értékek elég egyetlen bájtot, azonban változó iVar1 kettős típusú rendelt 8 bájt memóriát. Van egy nyilvánvaló költségtúllépéseket memóriát.
Ahhoz, hogy elkerüljük az ilyen túllépések változó kifejezetten meg kell nyilvánítani az egész, a módosító Uint8:
Ez létrehoz egy változót iVar2 tekinthető egy egész típusú változó (nem valós), és ez alatt adják egy bájtot. Az ilyen változók MATLAB rendszer kifejezetten tárolására egész értékek 0-255 (menteni memória), és nem céljuk a számításokhoz! Legalábbis a változata MATLAB 5.2 inkább. Ennek eredményeként, a következő fragmentum
Kapok egy hibaüzenetet:
. Function „+” nincs definiálva változók osztály „Uint8”.
Szó szerint azt jelenti, hogy a művelet „kívül” a Uint8 típusú változó nincs definiálva.
Tanulni (ha elfelejtette), hogy milyen típus egyik vagy másik változó a rendszer MATLAB munkaterület be, és futtassa a parancsot
így a következő üzenet jelenik meg a parancs ablakban MATLABa:
ami azt mutatja, hogy iVar1 egy 1x1 tömb mérete (azaz ténylegesen skalár) típusú és a kettős foglal 8 byte a memóriában, és iVar2 Uint8 típusú, és úgy a memóriában csak 1 bájtot (8-szor kevesebb). Ebben az esetben mindkét változó ugyanazokat az értékeket.
Néhány meg a színek (a száma m darab), úgynevezett paletta vagy színtérkép, lehet elhelyezni, mint egy méretű mátrix m x 3 double típusú. Például, a mátrix MAP1
MAP1 (1,1) = 0,12; MAP1 (1,2) = 0,123; MAP1 (1,3) = 0,987;
MAP1 (4,1) = 0,255; MAP1 (4,2) = 0,298; MAP1 (4,3) = 0,128;
Ez határozza meg, egy, öt színben. Mindegyik vonal megfelel egy színt. Sorok (bal - jobb) állítsa a vörös, a zöld és a siniyu összetevő színeket.
Ezután, alkotják a mátrix k x L típusú Uint8, minden eleme, amely egyenlő az egyik szám (mínusz egy) sorban MAP1 színtáblázat. Ilyen mátrix együtt a színes mátrix lesz elég, hogy megjelenik a számítógép képernyőjén egy sor pixel, azaz egy tetszőleges képet.
Például, a mátrix X1
X1 = Uint8 ([1 4 1 február 3 4 0 2 1 3])
meghatározza egy sor Uint8 mérete 2 x 5 pixel. Ez a tömb csak egy 10 bájtos memóriát, ahelyett, 80 bájt, mint lenne a helyzet egy kettős tömb. Az első pixel az első sorban van egy színe által meghatározott második sorban MAP1 mátrix, a második pixel ugyanabban a sorban megfelel az ötödik sorban a mátrix MAP1, és így tovább.
Kényszeríteni MATLAB rendszer valóban megjelenik egy tetszőleges mintát a pixel, meg kell hívni a funkció képet.
Például, a funkciója
létrehozott grafikus kép MATLAB rendszer, amely megfelel a tényleges képet a grafikus ablakban MATLABa:
Mivel nem méretének szabályozására MATLAB grafikus ablakban, akkor a képernyőn megjelenik néhány ésszerű méretű, az alapértelmezett. Továbbá, mivel a kép áll két sorban öt minden egyes pixel, ami egy nagyon kis képek (fizikai képernyő pixel mérete megközelítőleg egyenlő 0,2 mm), az alapértelmezett MATLAB átléptékezi (nő), hogy képes legyen látni ezt a képet. Ha azt szeretnénk, hogy megszünteti ezt a skálát, szükséges, hogy világosan meghatározza a kívánt méretet:
ábra ( 'Units', 'pixel', 'Pozíció', [100 100 n m]);
Itt, a mérete m és n kép X1 kiszabott fizikai mérete a kép a grafikus ablakban MATLAB. Túl kicsi kép ugyanakkor semmi jó nem történik.
Ha nem hoz létre új képeket egyértelműen manipulálni mátrixok, és megpróbáljuk megmutatni a grafikus ablakban MATLAB kész rögzített képek a fájlokat, akkor kell olvasni a tartalmát ezeket a fájlokat funkció imread. Különösen mielőtt rögzített háromdimenziós képfájlokat imwrite funkciót. Most már lehet olvasni
és megjeleníti a grafikus ablakban. Megjegyezzük, csak az, hogy a fájlnak kell lennie a jelenlegi MATLAB rendszer könyvtár, különben meg kell adnia, valamint a teljes elérési útvonalát.
Mi tekinthető az adatok szerkezetét tárgy kép, amely két mátrixok, amelyek közül az határozza meg a színt sorról sorra, és egyéb elemeinek a bemeneti pontok egy táblázatot (mátrix) színek, pontosan úgy, ahogy az úgynevezett indexelt kép (indexelt kép). Van egy másik típusú objektum kép - az ún Truecolor Image (kép a sok szín - 16 millió). Ez a második típusú képobjektumok rendezett másképp.
Mert TruecolorImage- tárgy színes tábla nem szükséges, mert az adatok tömbök ilyen tárgyak közvetlenül határozza meg a színt.
Ezek a tömbök a mérete M x N x 3 (3 az a dimenzió tömbök). Az értékek n és m méretének meghatározására a képet a képernyőn (m x n pixel), és úgy vannak elrendezve mentén egy harmadik irányban RGB színű komponensek minden egyes pixel. Nézzük példát a következő tömb TrueColor képek:
xTrue (1,1,1) = Uint8 (127); xTrue (1,1,2) = Uint8 (127); xTrue (1,1,3) = Uint8 (127);
xTrue (1,2,1) = Uint8 (19); xTrue (1,2,2) = Uint8 (12); xTrue (1,2,3) = Uint8 (255);
xTrue (1,3,1) = Uint8 (245); xTrue (1,3,2) = Uint8 (127); xTrue (1,3,3) = Uint8 (1);
xTrue (2.1.1) = Uint8 (6); xTrue (2,1,2) = Uint8 (203); xTrue (2,1,3) = Uint8 (128);
xTrue (2,2,1) = Uint8 (100); xTrue (2,2,2) = Uint8 (1); xTrue (2,2,3) = Uint8 (80);
xTrue (2,3,1) = Uint8 (60); xTrue (2,3,2) = Uint8 (249); xTrue (2,3,3) = Uint8 (5);
Array xTrue teremt image 2 x 3 pixel meghívásával egy kép funkció (xTrue):
Abban az esetben, a képek TrueColor X mátrix kap mérete m x n x 3 mátrix térkép paletta üres:
Ezt követően, a kép a funkció automatikusan érzékeli a mátrix méretét X képtípus működik mindkét esetben, amint azt kellene, és a colormap funkció esetén egy üres tömböt térkép nem csinál semmit, úgyhogy mindkét esetben lehet kezelni egyenlő.
Azonban, ha előre tudta, hogy a fájl tartalmazza a típus TrueColor kép végeztünk rövidebb kódot olvasni
és megmutatja a kép a hívás csak egy kép funkció (X). Előre tudni, hogy milyen típusú képfájl, meg kell hívni a funkciót
Különösen a fájlt myfile1.jpg "teremtett az előző részben ennek a kézikönyvnek, imfinfo funkció a következő információkat:
Ez azt mutatja, hogy milyen típusú képfájlt (ColorType) van truecolor. Ez azt jelenti, hogy teljesen tenni anélkül, hogy a színes mátrix.