GISáček


Realizace speciálních vizualizačních efektů pomocí rastrových operací v prostředí ESRI MapObjects

Martin Záruba


Institut ekonomiky a systémů řízení
VŠB – Technická univerzita Ostrava
tř. 17. listopadu
708 33 Ostrava – Poruba

Abstrakt

Tato práce se zabývá realizací speciálních vizualizačních efektů pomocí rastrových operací s využitím prostředí ESRI MapObjects. Cílem bylo vytvořit několik různých vizualizačních efektů, implementovat různé možnosti zvýraznění obrazových záznamů z DPZ.

Úvod

Cílem této práce je rozšířit zobrazovací možnosti stávajícího programového vybavení používaného v GIS, s využitím komponenty ESRI MapObjects tak, aby poskytnuté grafické výstupy byly snáze vizuálně interpretovatelné. Toho bude docíleno vytvořením speciálních zobrazovacích funkcí, které jednotlivé tématické vrstvy vzájemně zobrazí podle uživatelem zvolených atributů zobrazení. Těmito atributy budou transparence a režim zobrazení vrstvy vzhledem k podkladu (vrstvám ležícím pod danou vrstvou).
Dalším cílem je implementace možnosti zvýraznění. Operace zvýraznění transformují digitální obrazová data do lépe interpretovatelné formy. To zahrnuje umožnit zobrazení barevné syntézy tří libovolně zvolených vstupních obrazových záznamů. Těmito záznamy mohou být například jednotlivá pásma satelitního multispektrálního skeneru.
Dále by mělo být umožněno zvýraznění jednotlivých vstupních obrazových záznamů na základě jejich histogramu a statistických parametrů. Tato zvýraznění zahrnují prahování, hustotní řezy a zvýraznění kontrastu.
Finální fází je začlenění vytvořených funkcí do programové aplikace, tak aby běžný uživatel mohl snadno volit mezi režimy zobrazení jednotlivých tématických vrstev a aby bylo možné porovnat výsledné zobrazení s jinými systémy.



Vývojové prostředí

Jednotlivé funkce byly vyvíjeny ve vývojovém prostředí Borland Delphi 5.0 s využitím knihovny ESRI MapObjects 2.0. Vše bylo zabudováno do kostry komerční programové aplikace Gisel 2.0 firmy Sirion, aby se ověřilo využití implementovaných funkcí v praxi.

Borland Delphi

Delphi je vývojové prostředí pro vývoj 32bitových aplikací na platformě Microsoft Windows. Je založeno na objektové verzi programovacího jazyka Pascal (Object Pascal), knihovně vizuálních komponent (VCL, Visual Component Library) a běhové knihovně (RTL, Runtime Library). Aplikace je vyvíjena metodologií objektově orientovaného programování včetně všech jeho vlastností, jako je například zapouzdření, dědičnost a polymorfismus. Samozřejmostí je podpora komponent OCX a ActiveX. Delphi dále obsahuje výkonné funkce pro práci s databázemi prostřednictvím databázového stroje BDE (Borland Database Engine). Velice snadno lze také volat jednotlivé funkce MS Windows API.


ESRI MapObjects

Produkt MapObjects je tvořen skupinou programových komponent určených pro vývoj aplikací pro práci s geografickými daty. Je postaven na standardu OLE a pro vývoj je tedy možné použít běžná vývojová prostředí (Visual C++, Visual Basic, Delphi). Skupiny vizuálně reprezentuje ActiveX objekt nazvamý MapControl. MapObjects zobrazují data z jednotlivých zdrojů jako na sobě ležící, vzájemně se překrývající tématické vrstvy. Jednotlivé vrstvy jsou zobrazovány od nejnižší směrem nahoru k nejvyšší podle definovaných parametrů zobrazení. Programově je možné měnit pořadí a atributy zobrazení jednotlivých vrstev.

Skupiny objektů MapObjects: Map Display Objects, Data Access Objects, Projection Objects, Address Matching Objects, Geometric Objects.

Microsoft Windows API

Operační systém je z pohledu programátora definován svým API (Application Programing Interface). API obsahuje všechna volání funkcí, které může programová aplikace žádat od operačního systému včetně definice souvisejících datových typů a struktur. Grafika je v systému Windows spravována především funkcemi rozhraní grafického zařízení GDI (Graphics Device Interface). To je část systému odpovědná za zobrazování grafiky na obrazovém displeji a na tiskárně. Grafické funkce jsou exportovány z dinamické knihovny GDI32.DLL. Tato dynamická knihovna volá rutiny v ovladačích zařízení obrazových displejů nebo tiskáren nainstalovaných v systému. Jedním ze základních cílů GDI je schopnost podpory grafiky nezávislé na zařízení. Veškeré potřebné funkce API lze v Delphi velice snadno volat. Ve své práci jsem potřeboval především funkce GDI umožňující přenost binárních bloků (bit-block transfer a odvozené).


Gisel

Gisel je moderní programová aplikace určená pro koncové uživatele GIS. Je produktem dynamicky se rozvíjející české firmy Sirion. Základním jádrem Giselu je mapová knihovna MapObjects. Aplikace umožňuje svému uživateli komplexně přistupovat ke geografickým i tabulkovým datům. Umožňuje jejich zobrazování, výběry, dotazy na ně a neméně důležitou prezentaci výsledků práce. Podporována je většina běžných datových formátů používaných v GIS. Komunikace uživatele s programem je vedena prostřednictvím jednoduchého a intuitivního vizuálního prostředí v češtině. Gisel má otevřenou architekturu, takže jeho možnosti mohou být (jsou) dále rozšiřovány prostřednictvím zásuvných modulů (plug-inů).


Interaktivní zobrazení

Zobrazení dat v mapovém okně je řízeno speciální a k tomuto účelu vytvořenou interaktivní legendou. Ta obsahuje přehledný seznam jednotlivých tématických vrstev (témat) zařazených do projektu. Témata mohou být dále sekupovány do tzv. sad (skupiny tématických vrstev). Pomocí technologie drag'n'drop (táhni a pusť) je možné myší snadno měnit pořadí jednotlivých témat a libovolně přesouvat a seskupovat tématické vrstvy v sadách a mezi nimi. Legenda je událostně svázána s mapovým oknem, takže se po zásahu uživatele do legendy způsobené změny ihned promítnou do zobrazení v mapovém okně.
Výsledný obraz v mapovém okně je pak výsledkem postupného vykreslení jednotlivých témat (podle jim nastavených atributů zobrazení) přes sebe v pořadí od nejnižší k nejvyšší. Je potřeba si připomenout, že jednotlivé objekty ve vektorových tématických vrstvách a rastrové tématické vrstvy mají určitou polohu v prostoru.. Mohou ležet vedle sebe, mohou se dotýkat nebo překrývat.


Implementace vizualizačních funkcí do aplikace

Aby bylo možné zabudovat vizualizační funkce do této aplikace bylo nutné navrhnout a vytvořit určitý zobrazovací systém, který by pokryl všechny události a situace, které při vykreslování dat mohou nastat. Bylo definováno několik požadavků.

Systém by měl splňovat následující požadavky:
  • Režim zobrazení musí být možné uplatnit jak na vektorové tak i rastrové vrstvy.
  • Musí jej být možné uplatnit také na sadu vrstev, a to tak aby se celá sada při vykreslování chovala jako jedna vrstva.
  • Základním parametrem zobrazení volitelným pro každou vrstvu či sadu je parametr "krytí" (opacity) pomocí něhož můžeme plynule nastavit průhlednost vrstvy v rozsahu 0 až 100%.
  • Dalším volitelným parametrem by měl být "režim zobrazení" umožňující specíální způsob zobrazení vzhledem k podkladu. Cílem bylo pokusit se implementovat alespoň některé z režimů známých ze světa profesionálního zpracování obrazu (image processing).
  • Dále by mělo být možné vytvářet barevné syntézy.
  • A nakonec provádět zvýraznění jednopásmových obrazových záznamů.

  • Po studiu a testování možností mapové knihovny MapObjects se ukázalo, že tato komponenta je určena převážně pro jednodušší aplikace a tudíž nemá exportovány prakticky žádné funkce, které by bylo možné pro naše účely použít.

    Z tohoto důvodu bylo nutné realizovat celý vizualizační systém v Delphi s využitím některých funkcí Windows API.


    Režimy zobrazení

    Jednotlivé vrstvy jsou vykreslovány postupně zdola nahoru. Vizualizační funkce se aplikují postupně na jednotlivé vrstvy, podle nastavených parametrů.
    Pro potřeby popisu principu jednotlivých režimů zobrazení (v dalším textu) zavedu následující pojmy:
  • Pracovní téma = vrstva nebo sada vrstev na které aplikuji režim zobrazení. Barevné složky pixelu tématu označím jako Rt, Gt, Bt.

  • Podklad = všechny vrstvy (témata) ležící pod pracovním tématem. Barevné složky pixelu podkladu označím jako Rb,Gb,Bb.


  • Výsledný obraz vznikne aplikací vizualizační funkce na jednotlivé vstupní pixely pracovního tématu a podkladu.

    Normální (Normal)

    Jedná se o základní režim zobrazení. Pracovní téma je vykresleno beze změn. Barevné složky pixelů výsledného obrazu jsou rovny barevným složkám pracovního tématu. Obrázek.


    Rozpustit (Dissolve)

    Barevné složky pixelů výsledného obrazu jsou náhodně rovny buď barevným složkám pracovního tématu nebo podkladu. Poměr přiřazení závisí na hodnotě parametru hustota, který je možné volit v rozsahu 0 až 100%. Při hodnotě hustota=0% bude výsledný obraz obsahovat pouze hodnoty pixelů z podkladu. Při hodnotě hustota=100% bude výsledný obraz obsahovat pracovní téma vykreslené beze změn. Při hodnotě hustota=80% bude výsledný obraz obsahovat 80% pixelů pracovního tématu a 20% pixelů podkladu. Obrázek.


    Násobit (Multiply)

    Barevné složky pixelů výsledného obrazu jsou rovny výsledku násobení barevných složek pracovního tématu a barevných složek pozadí. Výsledkem je vždy tmavší barva. Násobení černou barvou (0,0,0) vytváří černou barvu. Násobení bílou barvou (255,255,255) nechá barvu beze změny. Výsledný efekt je podobný malbě popisovači (fixy). Obrázek.


    Závoj (Screen)

    Barevné složky pixelů výsledného obrazu jsou rovny násobku inverzních hodnot barevných složek pracovního tématu a inverzních hodnot barevných složek pozadí. Výsledkem je vždy světlejší barva. Závoj s černou barvou (0,0,0) ponechá barvu beze změny. Závoj s bílou barvou (255,255,255) vytváří bílou barvu. Výsledný efekt je podobný, jako když promítáte více diapozitivů přes sebe. Obrázek.


    Rozdíl (Difference)

    Barevné složky pixelů výsledného obrazu jsou rovny absolutní hodnotě rozdílu barevných složek pixelů pozadí s barevnými složkami pixelů pracovního tématu. Pokud má jeden ze vstupních pixelů barvu bílou (255,255,255) invertuje barvu druhého vstupního pixelu. Pokud má jeden ze vstupních pixelů barvu černou (0,0,0) nevzniká žádná změna. Obrázek.


    Negativ (Negative)

    Barevné složky pixelů výsledného obrazu jsou rovny rozdílu maximální číselné hodnoty datového typu Byte (všech 8 bitů nastaveno) a barevných složek pixelů pracovního tématu. Obrázek.


    Lineární kombinace obrazů (alpha-blending)

    Další implementovanou funkcí je linéární kombinace obrazů (alpha-blending). Uživatel může snadno nastavit průhlednost vrstvy změnou parametru krytí v rozsahu 0 až 100%. Pomocí lineární kombinace můžeme realizovat různé přechody a přeměny mezi dvěma a více původními obrazy.



    Zvýraznění obrazu

    Systém má rovněž implementovánu možnost zvýraznění rastrových obrazových záznamů. Zvýraznění je prováděno na základě úpravy look-up tabulky obrazového záznamu. Systém umožňuje provádět prahování, hustotní řezy, lineární zvýraznění, lineární zvýraznění části histogramu.



    Barevná syntéza

    Pro účely zobrazení barevých syntéz byl vytvořen speciální typ sady tzv. "RGB sada". Tato speciální sada obsahuje tři subsady. Rastrová témata zařazená do těchto subsad se zobrazují v jednotlivých barevných složkách modelu RGB. Aditivním složením těchto složek vznikne požadovaná barevná syntéza. Tento způsob byl zvolen pro snadnou možnost přesouvat vrstvy mezi sadami. Obrázek.



    Závěr

    Cílem této práce byla realizace speciálních vizualizačních efektu pomocí rastrových operací s využitím knihovny MapObjects. Pro realizaci a ověření praktického využití bylo nutné implementovat vytvořené funkce do skutečné programové aplikace. Při této implementaci se vyskytlo několik problémů. Tím zásadním byla a je skutečnost, že MapObjects neposkytují vývojáři potřebný přímý přístup k funkcím a strukturám řídícím proces zobrazení. Chybí rovněž přímý přístup k parametrům a pomocí funkcí i k datům zpracovávaných datových souborů. Tyto skutečnosti jsou ovšem dány filosofií celého produktu MapObjects, který je určen hlavně pro snadnou implementaci funkcí a možností GIS do aplikací.
    Celou problematiku zobrazení bylo nutné řešit výstavbou speciálního zobrazovacího systému vytvořeného na míru komponentě MapObjects a aplikaci Gisel. Zobrazovací systém byl vyvinut pomocí prostředků poskytovaných vývojovým prostředím Delphi a systémových funkcí pro práci s grafikou definovaných v rozhraní Win32 API. Navzdory rozsahu celé řešené problematiky, se podařilo v daném termínu uvést celý systém do stavu, kdy poskytuje uspokojivé výsledky, srovnatelné s jinými programovými aplikacemi.
    Implementované speciální vizualizační efekty výrazně rozšiřují stávající možnosti zobrazení MapObjects (ale i většiny aplikací na trhu) o pojmy a možnosti doposud známé jen ze světa profesionálního zpracování obrazu (image processingu). Záleží tedy jen na schopnostech (podmíněných zkušenostmi) uživatele nabízené možnosti využít. Zavedení do praxe by se tedy mělo promítnout ve zlepšení vizuální interpretace (čtení) zobrazovaných dat, ať už při jejich interaktivním prohlížení na monitoru, nebo na vytvářených tiskových výstupech.