3D grafika. Příprava dat



Podobné dokumenty
Vizualizace. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

Lineární algebra s Matlabem cvičení 3

1 Základní funkce pro zpracování obrazových dat

BPC2E_C08 Parametrické 3D grafy v Matlabu

Kreslení grafů v Matlabu

VYUŽITÍ POČÍTAČOVÉ GRAFIKY

Základy algoritmizace a programování

Konverze grafických rastrových formátů

smaže n-tý sloupec matice A vybere hodnotu 6.,1.,3.,2.prvku vektoru a a1 =

Reprodukce obrazových předloh

X37SGS Signály a systémy

DATOVÉ FORMÁTY GRAFIKY, JEJICH SPECIFIKA A MOŽNOSTI VYUŽITÍ

Počítačová grafika. OBSAH Grafické formy: Vektorová grafika Bitmapová (rastrová grafika) Barevné modely

Webové stránky. 6. Grafické formáty pro web. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

Algoritmizace prostorových úloh

Osvětlování a stínování

Návod k použití softwaru Solar Viewer 3D

Webové stránky. 16. Obrázky na webových stránkách, optimalizace GIF. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Lineární algebra s Matlabem. Přednáška 4

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Rastrová grafika. Grafický objekt je zaznamenán jednotlivými souřadnicemi bodů v mřížce. pixel ( picture element ) s definovanou barvou

Úvod do počítačové grafiky

Grafické výstupy v Octave/Matlabu a GnuPlotu

. Grafika a plovoucí prostředí. Zpracování textů na počítači. Ing. Pavel Haluza, Ph.D. ústav informatiky PEF MENDELU v Brně haluza@mendelu.

SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM

Rastrový obraz, grafické formáty

Stručný návod k programu Octave

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO

Webové stránky. 13. Obrázky na webových stránkách, modul Uložit pro web a zařízení. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch

POČÍTAČOVÁ GRAFIKA. Lenka Bednaříková

Adobe Photoshop 18. Ukládání dokumentu formáty

1.0 Lekce 1: Seznámení s prostøedím. 2.0 Lekce 2: Základní opravy fotografie

Barvy a barevné systémy Formáty obrázků pro WWW

Nápověda k aplikaci GraphGUI

Programátorská dokumentace

Název: VY_32_INOVACE_PG3314 Rendering - vykreslení vytvořené scény. Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max

Barvy a barevné systémy Formáty obrázků pro WWW

MATLAB HRAVĚ Zdeněk Jančík, FIT VUT Brno

Rastrová grafika. body uspořádané do pravidelné matice

POČÍTAČOVÁ GRAFIKA. Počítačová grafika 1

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy

Informatika Počítačová grafika Mgr. Jan Jílek (v.11/12) Počítačová grafika

Nápověda ke cvičení 5

Informační a komunikační technologie Inovace výuky prostřednictvím šablon pro SŠ

Příklady k druhému testu - Matlab

KTE / PPEL Počítačová podpora v elektrotechnice

Práce na počítači. Bc. Veronika Tomsová

Vytváranie trojrozmerných grafických zobrazení v prostredí MATLAB a interaktívne úpravy grafov pomocou Figure Toolbar

Gymnázium Jana Pivečky a Střední odborná škola Slavičín. III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT

Velmi stručný návod jak dostat data z Terminálu Bloomberg do R

Algoritmizace a programování

Výhody programu OCAD

Téma: Práce se základními objekty, výplní a obrysem

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Excel - pokračování. Př. Porovnání cestovních kanceláří ohraničení tabulky, úprava šířky sloupců, sestrojení grafu

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Reprezentace 3D modelu

GRAFICKÉ FORMÁTY V BITMAPOVÉ GRAFICE

Mezi přednastavenými vizualizačními styly se přepínáme některou z těchto možností:

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou

On-line škola mladých autorů , pořadatel: ČVUT FEL. Jak na obrázky? Martin Žáček

Konstrukce součástky

Vektorizace obrázků. Co se naučíte. Vítá vás aplikace CorelDRAW, komplexní profesionální program pro grafický návrh a práci s vektorovou grafikou.

Excel tabulkový procesor

manuál CADKON-KROVY CADKON-KROVY kreslení dřevěných konstrukcí pro Autodesk Architectural Desktop

Funkce grafiky na webu. Primární grafická informace Fotografie Schémata Diagramy Loga Bannery

Zdroj:

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

13 Barvy a úpravy rastrového

Základy algoritmizace a programování

Digitální grafika. Digitální obraz je reprezentace dvojrozměrného obrazu, který používá binární soustavu (jedničky a nuly).

Knihovna CanvasLib TXV první vydání prosinec 2014 změny vyhrazeny

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Systém GIMP - tvorba jednoduchých animací a grafiky pro web

1. ZÁKLADNÍ POJMY POČÍTAČOVÉ GRAFIKY

Úvod do počítačové grafiky

Kde se používá počítačová grafika

Nápověda CADKON Express

Jak ovládat ručičku tachometru (ukazatel)?

MATrixLABoratory letný semester 2004/2005. Zobrazovanie v 3D

František Hudek. červenec 2012

Rozšíření bakalářské práce

Kreslíme do webu. Canvas

DUM 02 téma: Formáty souborů rastrové grafiky

Cvičení 1. Úpravy obrázků programem IrfanView. Zpracoval: Ing. Vladimír Solnický SPŠ stavební, Opava, příspěvková organizace

Nástroje v InDesignu. Panel nástrojů 1. část. Nástroje otevřeme Okna Nástroje

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D

Výukový materiál vytvořen v rámci projektu EU peníze školám. "Inovace výuky" registrační číslo CZ.1.07/1.5.00/

Zpracovnání digitální fotografie

Práce s texty, Transformace rastru, Připojení GPS

Základy programování: Algoritmizace v systému MATLAB

TECHNICKÁ UNIVERZITA V LIBERCI

Barvy na počítači a grafické formáty

Grafy, úprava, popisky, vizualizace výsledk výpo - pokra ování Další typy graf plot semilogx semilogy loglog Více graf

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

Úvod do počítačové grafiky

Prostředí Microstationu a jeho nastavení. Nastavení výkresu

Transkript:

Stránka 1 z 11 3D grafika V lekci 4 jsme se seznámili s 2D grafikou (především grafy funkcí jedné proměnné). MATLAB umožňuje vizualizovat také funkce dvou proměnných. Používáme podobný postup: 1. 2. 3. 4. 5. příprava dat (nezávisle proměnné, závisle proměnná) výběr grafického okna, případně podokna (viz 4. týden) vykreslení 3D grafu úpravy grafu (viz 4. týden; dnes navíc probereme: osvětlení, stínování, kamera) uložení grafu do souboru (viz 4. týden) Příprava dat Pro spojitý graf funkce dvou proměnných potřebujeme mít dvě matice (např. X,Y), jejichž prvky x ij, y ij (respektive X(i,j), Y(i,j)) budou obsahovat souřadnice bodů v rovině (podstava). Ke snadnému generování těchto matic (z posloupností hodnot na ose x a na ose y) slouží funkce meshgrid: [X,Y]=meshgrid(v1,v2)... vektor v1 určuje interval na ose x s daným krokem a vektor v2 určuje interval na ose y s daným krokem [X,Y]=meshgrid(v)... vektor v určuje interval na ose x i na ose y Ukázka: >> [X,Y]=meshgrid([-3:1],[-1:2:7]) X = Y = -3-2 -1 0 1-3 -2-1 0 1-3 -2-1 0 1-3 -2-1 0 1-3 -2-1 0 1-1 -1-1 -1-1 1 1 1 1 1 3 3 3 3 3 5 5 5 5 5 7 7 7 7 7 % pozice (1,1) určuje bod A=[-3;-1], kdežto např. pozice (2,4) určí bod A=[0;1] Kromě nezávisle proměnných potřebujeme vytvořit také matici funkčních hodnot. Např. pro funkci f(x,y)=cos(x 2 )-sin(y 3 ) vytvoříme matici Z: >> Z=cos(X.^2)-sin(Y.^3); (o práci s maticemi jsme si říkali minule. Uvědomte si, proč je nezbytné používat operátory "s tečkou"...)

Funkce pro kreslení 3D grafů Stránka 2 z 11 čáry ve 3D: plot3(x,y,z), případně plot3(x,y,z,str) kreslí body nebo čáry (parametricky zadané křivky ve 3D, resp. jednotlivé sloupce matice) pomocí řetězce str můžeme nastavit barvu, značky a typ čar používá se podobně jako plot, např. lze kreslit více grafů najednou (viz 4. týden) 3D síťový graf: mesh(x,y,z)... vykreslí 3D síťový graf ("drátěný"), body spojuje navzájem ve směru obou os 3D plošný graf: surf(x,y,z)... vykreslí 3D plošný graf, body spojuje navzájem ve směru obou os a vzniklé plošky vyplní barvou (podle hodnot osy z) vrstevnicový graf (2D): contour(z)... vykreslí vrstevnice = čáry spojující body se stejnou "výškou" (Z je matice funkčních hodnot) contour(x,y,z)... vykreslí vrstevnice + správně popíše osy x a y contour(z,n)... vykreslí vrstevnice v n rovinách, např. contour(z,5) contour(z,v)... vykreslí vrstevnice v rovinách zadaných vektorem v, např. contour(z,[-2 0.5 1]) Pozn.: chceme-li vykreslit vrstevnice v jediné rovině s hodnotou t, musíme použít contour(z,[t t]) contour(...,str)... za výše uvedené parametry můžeme uvést řetězec str specifikující barvu+styl čáry (jako u plot, ale značka se ignoruje) Pozn.: [C,h] = contour(...) vrací matici C ("mapa vrstevnic", kterou lze využít pro jejich popisky ve funkci clabel) a vektor h grafických handlů vyplněný vrstevnicový graf (2D): contourf(z)... lze ji volat jako contour, ale vykresluje barevné plochy dané vrstevnicemi 3D vrstevnicový graf: contour3(z)... lze ji volat jako contour, ale čáry vrstevnic vykreslí prostorově Pozn.: výhodně se kombinuje např. s mesh nebo ještě lépe s low-level funkcí surface (při vykreslování zachová i vrstevnicový graf): >> [X,Y] = meshgrid([-2:1/4:2]); >> Z = X.*exp(-X.^2-Y.^2); >> contour3(x,y,z,30) >> surface(x,y,z,... % síť 'EdgeColor',[.8.8.8],... % šedá 'FaceColor','none') % bez výplně

kombinované: meshc(x,y,z)... vykreslí 3D síťový graf + vrstevnice surfc(x,y,z)... vykreslí 3D plošný graf + vrstevnice jiné: např. quiver, gradient, slice Stránka 3 z 11 Všechny funkce vracejí grafický handle (pokud si jejich výstup odebereme). Při vykreslení grafů funkce dvou proměnných se nejčastěji používá síťový a plošný graf. Příklad - graf funkce dvou proměnných (funkce peaks je knihovní funkce MATLABu a vrací matici vytvořenou pomocí Gaussova rozdělení): graf3d.m [X,Y] = meshgrid(-3:.125:3); Z = peaks(x,y); meshc(x,y,z); axis([-3 3-3 3-10 5]) Úpravy grafu Popis grafu Pro popis 3D grafu použijeme funkce xlabel, ylabel a title (viz 4. týden). Osu z, která ve 2D grafech nebyla, můžeme popsat pomocí funkce zlabel(text), kde text je libovolný popis. Popis vrstevnic provede funkce clabel(c,h), kde C a h jsou odebrané výstupy funkcí typu contour (viz výše).

Změna barevné palety Stránka 4 z 11 colormap(paleta), kde paleta je předdefinovaná nebo uživatelská. Přehled předdefinovaných barevných palet naleznete v nápovědě (např. šedá gray, žlutočervená bone, duhová hsv,...). Uživatelskou paletu vytvoříte pomocí matice Nx3, kde N je celkový počet barev v paletě a hodnoty jsou od 0.0 do 1.0 - každý řádek představuje jednu barvu definovanou pomocí RGB (red-green-blue; např. černá barva je [0 0 0], červená [1 0 0] a žlutá [1 1 0]). Příklad šestibarevné palety (od černé přes odstíny zelené po světle zelenou): >> M=[0 0 0; 0.2 0; 0.4 0; 0.6 0; 0.8 0; 0 1 0]; % úsporněji: M=zeros(6,3); M(:,2)=[0:0.2:1]'; >> colormap(m) Poznámka: colormap si pamatuje naposledy použitý počet barev v daném grafickém okně. Jiný počet barev zajistíme změnou rozměrů palety (u předdefinovaných např. colormap(hsv(64))), případně se můžeme vrátit k prvotnímu nastavení pomocí colormap('default') Přidání sloupce s použitou paletou colorbar... zobrazí vedle grafu sloupec s barevnou paletou Poznámky: - po každé změně barevné palety musíme tuto funkci použít znovu!!! - chceme-li barvy palety zobrazit jako řádek (ne sloupec), lze použít: colorbar('horiz') Nastavení rozsahu os Již známe xlim a ylim (viz 4. týden), ve 3D přibývá zlim. Možnosti funkce axis se rozšiřují: >> axis([xmin xmax ymin ymax zmin zmax cmin cmax]). Prostudujte si také funkci daspect. Definování úhlu pohledu (otočení grafu) view(az,el)... funkce nastaví úhel pohledu na graf: az je azimut = úhel otočení kolem osy z měřený od záporné části osy y proti směru hodinových ručiček (0 až 180) nebo po směru (-180 až 0); el je výška (elevace) zorného bodu, tj. úhel mezi pozorovatelem a rovinou xy (0 až 180: oko je nad objektem, - 180 až 0: oko je pod objektem). Standardní nastavení pohledu na 3D graf obnovíme pomocí view(3) (odpovídá nastavení az=-37.5, el=30). Pomocí [a,e] = view uložíme aktuální hodnoty azimutu a výšky (elevace) do proměnných a a e.

Stránka 5 z 11 Tip: při otáčení grafu pomocí nástroje (resp. v Matlabu 6.5) se vlevo dole v grafickém okně objevují hodnoty azimutu a výšky (elevace). Osvětlení Osvětlovací model lze aplikovat, pokud je ve scéně přidáno alespoň jedno světlo. camlight vytvoří nebo posune světlo ve scéně camlight('headlight')... světlo na pozici kamery camlight('right')... světlo vpravo nahoře od kamery camlight('left')... světlo vlevo nahoře od kamery camlight... totéž jako camlight('right') camlight(az,el)... světlo na pozici dané azimutem a elevací (výškou) s ohledem na pozici kamery (ta je středem rotace); hodnoty jsou ve stupních camlight(...,'style')... typ světla: local (defaultní) - bodové světlo vyzařující do všech směrů infinite - paralelní paprsky z nekonečna h = camlight(...)... vrací handle vytvořeného světla (např. pro jeho budoucí posun pomocí camlight(h,...) Při pohybu kamery se světlo nehýbe, a proto je nutné jej posunout opět pomocí funkce camligth. light low-level funkce pro vytvoření světla (= grafický objekt) s nastavením např. pozice: >> membrane % vykreslí logo Matlabu >> light('position',[0-2 1]) lighting nastaví osvětlovací model >> lighting alg, kde alg je none, flat, gouraud nebo phong Phongův model dává lepší výsledky než Gouraudův [čti gurodův], ale renderování trvá déle. material nastaví režim odrazivosti materiálu (pro plochy, tj. surfaces a patches); ve scéně musí být alespoň jedno světlo material shiny... lesklý materiál, odráží jako zrcadlo, barva světla podle zdroje světla material dull... matný materiál, odráží rozptýlené světlo, barva světla podle zdroje světla material metal... kovový materiál, odráží zrcadlově a trochu i difúzní světlo, barva světla podle zdroje světla a barvy objektu

Stránka 6 z 11 material([ka kd ks])... nastaví odrazivost pro okolní (ambient), difúzní (diffuse) a zrcadlové (specular) světlo; hodnoty od 0 (min.) do 1 (max.) material([ka kd ks n])... nastaví navíc i index zrcadlení (např. dull má n=10 a metal má n=25) material([ka kd ks n sc])... nastaví navíc i barvu zrcadlového odrazu (např. dull má sc=1.0 a metal má sc=0.5) material default... nastaví výchozí hodnoty Stínování Barvu stínování plošných objektů (tj.surface a patch) lze nastavit pomocí funkce shading: shading flat... každá ploška (a hrana) má konstantní barvu shading faceted (defaultní)... ploché stínování s černými hranami shading interp... interpoluje barvy plošek tak, aby plynule přecházely Průhlednost alpha režim průhlednosti Zkuste (pro plošný graf = surf): >> alpha(0.5) >> alpha('clear') % úplně průhledný >> alpha('opaque') % neprůhledný alphamap nastaví tabulku průhlednosti (podobně jako colormap pro barvy) alim nastavení/zjištění rozsahu průhlednosti (podobně jako xlim) Úpravy grafu s využitím handlů Platí totéž, co jsme probrali ve 4. týdnu v rámci 2D grafiky (odebrat handle a použít get a set). Samozřejmě vlastnosti ploch jsou v něčem jiné než vlastnosti čar.

Stránka 7 z 11 Příklad - graf matematické funkce sinc( (x 2 +y 2 )) na intervalu [-6π,6π] (nakreslený pomocí symbolického ezplot): >> ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)',[-6*pi,6*pi]) % 3D graf >> view(0,75) % nastavení pohledu >> shading interp % režim stínování ("plynulý") >> lightangle(-45,30) % nastavení sférické polohy světla >> lighting phong % Phongův osvětlovací model >> set(gcf,'renderer','zbuffer') % metoda vyobrazení (zde: rychlejší vykreslení) >> set(findobj(gca,'type','surface'), 'FaceLighting','phong',... 'AmbientStrength',.3,'DiffuseStrength',.8, 'SpecularStrength',.9,... 'SpecularExponent',25, 'BackFaceLighting','unlit') % "zářivější" graf

Práce s obrázky Stránka 8 z 11 Maticí typu m n můžeme kromě dat (obecně komplexních čísel) nebo hodnot funkce dvou proměnných reprezentovat také obrázek (image). K jeho nakreslení ale musíme použít jiné funkce než mesh nebo surf. Většina dvourozměrných obrazů je ve workspace MATLABu reprezentována dvourozměrným polem (maticí), jehož každý prvek odpovídá jednomu pixelu zpracovávaného obrazu. Například obraz, který má 200 řádků a 300 sloupců různobarevných pixelů, je reprezentován maticí typu 200 300. Některé typy obrazů, například RGB obrazy, potřebují trojrozměrné pole (matici typu m n 3, kde první "vrstva" obsahuje intenzitu červené barvy, druhá zelené a třetí "vrstva" intenzitu modré barvy pro každý pixel). Typy dat, které MATLAB nabízí pro uložení obrazu: double... plovoucí řádová čárka, double-precision, uint16... 16bitový unsigned integer, uint8... 8bitový unsigned integer. Nejčastěji je využíván double (všechny funkce MATLABu totiž pracují s tímto datovým typem), avšak ten zabírá nejvíce paměti. Proto se při práci s velkými obrazy (tisíce pixelů) používají ostatní dva typy - podstatně se sníží nároky na paměť. Podporované obrazové formáty MATLAB podporuje (tj. umí číst, zapsat a zobrazit) mimo jiné tyto obrazové formáty: BMP (Microsoft Windows Bitmap) GIF (Graphics Interchange Files) JPEG (Joint Photographic Experts Group) PNG (Portable Network Graphics) TIFF (Tagged Image File Format) Podrobnosti o uložení a typech dat naleznete v nápovědě k funkci imread. Načtení obrazu MATLAB nabízí funkci imread, která podle typu vstupního souboru správně vytvoří dvourozměrnou (nebo trojrozměrnou) matici dat. Možnosti volání: A = imread(soubor, formát)... načte data ze souboru zadaného jménem (řetězec; případně i s cestou, pokud soubor není v pracovním adresáři nebo ve "vyhledávacích" cestách MATLABu), druhým parametrem je zkratka obrazového formátu - většinou shodné s příponou souboru (viz nápověda k funkci). Výstupem je matice typu m n (obraz ve stupních šedi, resp. s indexovanou paletou) nebo m n 3 (truecolor, RGB obraz) nebo m n 4 (TIFF využívající barevný prostor CMYK). Datový typ matice závisí na bitové hloubce načítaného obrazu (viz nápověda); [X, map] = imread(...)... načte data ze souboru obsahujícího indexovaný obraz, do druhého výstupu přiřadí hodnoty jednotlivých barev použité palety (automaticky převede hodnoty barev do intervalu [0,1]); další možnosti volání funkce najdete v nápovědě.

Přístup k pixelům obrazu Stránka 9 z 11 Jelikož je každý obraz matice, tak pro přístup k hodnotě intenzity každého pixelu můžeme použít kulaté závorky s uvedením řádku a sloupce (případně i jiné druhy indexace matic popsané v minulé lekci). Hodnotu intenzity pixelu lze samozřejmě i změnit. Informační funkce Informace o podporovaných formátech (při načítání souborů v MATLABu) vrací funkce imformats (výsledkem je pole struktur). Informace o konkrétním obrazu (grafickém souboru) vrací funkce info = imfinfo(soubor,formát) (výsledkem je struktura, jejíž položky závisí na konkrétním obrazovém formátu). Např.: >> info = imfinfo('moodlelogo.gif') info = Filename: 'moodlelogo.gif' FileModDate: '25-Oct-2010 16:05:10' FileSize: 2617 Format: 'GIF' FormatVersion: '89a' Width: 100 Height: 30 BitDepth: 8 ColorType: 'indexed' FormatSignature: 'GIF89a' BackgroundColor: 0 AspectRatio: 0 ColorTable: [256x3 double] Interlaced: 'no' Pro obrazové formáty JPEG a TIFF můžeme získat EXIF (Exchangeable Image File Format) informace pomocí funkce exifread. Funkce vrací strukturu s metadaty (EXIF značkami - viz http://www.exif.org/), ale nezpracovává je. Tato funkce bude v novějších verzích MATLABu nahrazena výše uvedenou imfinfo. Zápis dat do obrazového souboru (uložení obrazu) K zápisu obrazových dat do souboru (tj. k uložení obrazu) se používá funkce imwrite. Možnosti volání: imwrite(a,soubor,formát)... zapíše data obrazu (matice) A do souboru zadaného jménem (řetězec), použije zadaný obrazový formát (pro podporované formáty použijte imformats). Proměnná A nesmí být prázdné pole a musí obsahovat data, která lze zapsat do požadovaného formátu (např. RGB obraz nelze zapsat do GIFu); imwrite(x,mapa,soubor,formát)... zapíše indexovaný obraz X a jeho barevnou paletu do zadaného obrazového souboru. Má-li X datový typ uint8 (resp. uint16), pak jsou data zapsána přímo do souboru. Máli X datový typ double, funkce nejprve použije převod uint8(x 1). Barevná paleta mapa obsahuje každou barvu jako trojici čísel z intervalu [0,1]. Pozor: většina obrazových formátů nepodporuje obrazovou paletu s více než 256 barvami! Při zápisu do GIFu, který obsahuje více obrázků (tzv. multiframe GIF), musí matice X být typu m n 1 P (P je počet obrazů - frames);

imwrite(...,soubor)... zapíše data do souboru, přičemž obrazový formát se určí z přípony souboru; imwrite(...,param1,val1,param2,val2...)... umožňuje zadat parametry ovlivňující výsledný grafický soubor (např. kvalitu komprese u JPG) - podrobnosti ke každému formátu najdete v nápovědě (část Format-Specific Parameters). Kreslení (zobrazení) obrazů v MATLABu Pro vykreslení obrázku do grafického okna můžeme použít funkce image nebo imagesc: Funkce image má dvě varianty - high-level, která volá funkci newplot a nastaví podle vykreslovaných dat některé vlastnosti os (XLim, YLim, Layer, YDir, View) nebo low-level, která nevolá newplot a jejími vstupy jsou pouze dvojice vlastnost-hodnota. image(c)... vykreslí matici C jako obrázek. Každý prvek matice je chápán jako barva pixelu. image(x,y,c)... vykreslí matici C jako obrázek a použije vektory x a y jako popisky os (pokud jsou hodnoty seřazené sestupně, pak obraz bude převrácený). V případě vykreslení do již existujících os s použitím hold on se obraz roztáhne podle potřeby. image(x,y,c,'propertyname',propertyvalue,...)... kromě vykreslení matice C se nastaví také zadané vlastnosti (high-level funkce). image('propertyname',propertyvalue,...)... low-level funkce pro nastavení grafického objektu image. Všechny uvedené možnosti volání mohou vracet grafický handle vytvořeného objektu: handle = image (...). Matice C může obsahovat jak indexovaná data (každý prvek obsahuje index do barevné palety), tak RGB data (trojrozměrná matice, kde barvu udává trojice prvků C(i,j,:)). Funkce imagesc přeškáluje data na plný rozsah barevné palety a zobrazí obraz: imagesc(c)... nakreslí matici C jak obraz. Hodnoty prvků matice jsou chápány jako indexy do barevné palety. imagesc(x,y,c)... nakreslí matici C jako obraz a použije rozsah os zadaný vektory x a y (jsou-li řazeny sestupně, obraz je v daném směru převrácený). imagesc(...,clims)... přepočítá (normalizuje) hodnoty matice C do rozsahu zadaného dvouprvkovým vektorem clims a vykreslí obraz. Funkce opět může vracet grafický handle: h = imagesc(...). Funkce má také low-level verzi, kde lze zadávat pouze dvojice vlastnost-hodnota. Poznámka: implicitně funkce imagesc vykresluje hodnoty na ose y od nejnižší po nejvyšší (odshora až dolů). Pokud si to nepřejete, nastavte set(gca, 'YDir', 'normal'), čímž se obrátí osa y i obraz. Obrazy, které jsou součástí MATLABu MATLAB obsahuje v podadresáři toolbox/matlab/demos/ (pokud byl vytvořen při instalaci) několik obrazů uložených v MAT-souborech nebo v grafických souborech, např.: jméno souboru typ obsah cape clown MAT snímek Nové Anglie z družice NOAA MAT obličej klauna Stránka 10 z 11

Stránka 11 z 11 durer MAT obraz Melancholia od Albrechta Dürera z roku 1514 detail earth flujet MAT detail magického čtverce z předchozího obrazu MAT planeta Země MAT kolize dvou proudů od NCSA gatlin MAT fotka z konference o numerické algebře (Gatlinburg, 1964) gatlin2 mandrill MAT výřez předchozí fotky MAT "obličej" mandrila ngc6543a.jpg JPG astronomický snímek (podrobnosti v souboru ngc6543a.txt) spine MAT kosti Většina MAT souborů obsahuje proměnné X (matice s daty), map (barevná paleta) a caption (popis obrazu). Načítáme je příkazem load jméno_souboru. Některé z uvedených obrazů si můžete prohlédnout pomocí příkazu imageext (spustí demo, kde lze volit obraz a barevnou paletu). Další demo pro práci s obrazy se jmenuje imagedemo (viz doc imagedemo). JPG obrázek načteme příkazem X = imread('ngc6543a.jpg'); (se středníkem!). Další obrázky jsou uložené v toolboxu pro práci s obrazy. Příklad práce s obrazy: >> load durer % načteme obrazová data >> image(x) % nakreslíme obraz >> colormap(map) % nastavíme barevnou paletu >> title(caption) % přidáme popisek obrázku >> axis image % axis equal >> vyrez = X(90:170, 394:480); % středník! Uděláme si výřez magického čtverce... >> figure, image(vyrez), colormap(map), axis image %...a vykreslíme jej >> load detail % načteme si detail magického čtverce ve vyšším rozlišení >> figure, image(x), colormap(map), title(caption), axis image % a vykreslíme Image Processing Toolbox MATLAB samotný nenabízí mnoho funkcí pro práci s obrazy. Pokud potřebujete provádět nějaké speciální činnosti (např. pokročilejší analýzu obrazu, vylepšování, filtraci, transformace, morfologické operace, analýzu textur nebo konverzi indexovaného obrazu na RGB), musíte zakoupit Image Processing Toolbox (nebo si příslušné funkce naprogramovat sami). Přehled funkcí z tohoto toolboxu (je-li instalován) získáte příkazem help images. Pokud je Image Processing Toolbox instalován, tak v podadresáři toolbox/images/imdemos/ jsou k dispozici další grafické soubory.