PROJEKT OPERAČNÍHO PROGRAMU VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST
ROZVOJ KLÍČOVÝCH KOMPETENCÍ STUDENTŮ ZUBNÍHO LÉKAŘSTVÍ REGISTRAČNÍ ČÍSLO CZ.1.07/2.2.00/07.0120
DIGITÁLNÍ OBRAZ A DATABÁZE JIŘÍ TESAŘÍK
LÉKAŘSKÁ FAKULTA UNIVERZITA PALACKÉHO V OLOMOUCI
VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY
O projektu
Učební text byl vyvinut v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost „Rozvoj klíčových kompetencí studentů zubního lékařství“, registrační číslo CZ.1.07/2.2.00/07.0120, jehoţ příjemcem je Univerzita Palackého v Olomouci a partnerem Sdruţení CEPAC-Morava. Cílem projektu je kvalitativní inovace studijního oboru Zubní lékařství v oblasti klíčových kompetencí studentů, které povedou k lepšímu uplatnění absolventů na trhu práce. V rámci realizace projektu je vytvářeno 7 výukových modulů pro předmět „Programové vybavení ordinace zubního lékaře“. Moduly obsahují distanční vzdělávací texty, elektronické testy a multimediální průvodce praktickou činností a demonstrační výukové animace. Projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
Abstrakt
Tento učební text je tvořen dvěma tématy. V první části tohoto textu se studenti seznámí se základy reprezentace a zpracování vektorových a rastrových digitálních obrazových dat. Budou vysvětleny základní pojmy z obrazové analýzy, představeny geometrické a obrazové manipulace s obrazem. V závěru první části budou představeny některé datové formáty a systémy pro výměnu a uloţení obrazových dat. Druhá část textu se zabývá úvodem do databázového zpracování dat. Představí základní prvky databázového systému s důrazem na aktuálně nejrozšířenější relační databázový model. Budou představeny obecně pouţívané databázové operace a postupy.
Cílová skupina
Studenti 3. ročníku zubního lékařství
Obsah
1
Část první - digitální obraz ........................................................................................................................ 1 1.1
1.1.1
Digitální data a obraz ................................................................................................................. 1
1.1.2
Zdroje digitálního obrazu .......................................................................................................... 4
1.1.3
Rastrový a vektorový přístup k obrazu ...................................................................................... 5
1.1.4
Rozdíly v rastrovém a vektorovém přístupu .............................................................................. 6
1.1.5
Rozměry rastrového obrazu ....................................................................................................... 7
1.1.6
Hloubka obrazu.......................................................................................................................... 2
1.1.7
Dvouúrovňový obraz ................................................................................................................. 2
1.1.8
Šedotónový obraz ...................................................................................................................... 2
1.1.9
Histogram obrazu ...................................................................................................................... 4
1.1.10
Základní úpravy rastrového obrazu ........................................................................................... 5
1.1.11
Shrnutí ..................................................................................................................................... 14
1.2
2
První lekce ......................................................................................................................................... 1
Druhá lekce ...................................................................................................................................... 16
1.2.1
Barevný obraz .......................................................................................................................... 16
1.2.2
Barevná paleta ......................................................................................................................... 20
1.2.3
Datové formáty pro ukládání obrazu ....................................................................................... 20
1.2.4
Systémy DICOM a PACS ....................................................................................................... 22
Část druhá - Databáze .............................................................................................................................. 24 2.1
První lekce ....................................................................................................................................... 24
2.1.1
Data a databáze ........................................................................................................................ 24
2.1.2
Sytém řízení báze dat SŘBD (DBMS) .................................................................................... 24
2.1.3
Klasifikace databází ................................................................................................................. 26
2.1.4
Databázové modelování .......................................................................................................... 26
2.1.5
Základní prvky relační databáze .............................................................................................. 27
2.1.6
Základní databázové operace................................................................................................... 29
Seznam literatury ............................................................................................................................................. 36 Seznam obrázků............................................................................................................................................... 37 Seznam tabulek................................................................................................................................................ 38
Strana 3 / 50 Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky
1 Část první - digitální obraz 1.1 První lekce Studijní cíle: Cílem lekce je seznámit studenty se základními vlastnostmi digitálního obrazu a jeho strukturou. Představuje základní rozdíly ve vektorové a rastrové reprezentaci obrazu. Klíčová slova: Digitální data, vektorový, rastrový, pixel, hloubka obrazu, šedotónový obraz Potřebný čas: 2 hodiny.
1.1.1
Digitální data a obraz
S rozvojem výpočetní techniky a jejím průnikem se spotřební elektronikou a mobilními technologiemi se problematika digitálního obrazu stačila přesunout z domény počítačových inţenýrů a vědců do širokého povědomí veřejnosti. V posledních letech došlo k rychlé digitalizaci některých odvětví spojovaných s pořízením, zpracováním nebo prezentací obrazové informace. Jedná se především v obecné rovině o digitální fotografii, nahrazující původně chemický proces pořízení a uloţení obrazové informace. Dále se jedná o technologie digitálního videa, digitálními kamerami počínaje přes uloţení záznamu na přenosné médium (např. DVD) a konče digitálním zobrazením výstupního obrazu na monitoru počítače nebo pomocí digitálního televizoru. Tyto technologie jsou v obecném povědomí veřejnosti. Digitalizace se dotkla i celé škály lékařských přístrojů poskytujících nebo zpracovávajících nejen obrazovou informaci. Bez nadsázky se dá říci, ţe součástí těchto systému jsou počítače slouţící jako jednotky pro zpracování samotného měření nebo zprostředkovávající komfortní ovládání přístroje, jeho vstupně výstupní rozhraní. Současné diagnostické přístroje jsou často přístroje přímo postavené na architektuře osobních počítačů. Např. ultrazvukové diagnostické systémy jsou v současnosti plnohodnotnými počítači typu PC (včetně běţného operačního systému), vybavenými speciální kartou umoţňující práci s ultrazvukovými sondami. Grafické výstupy z diagnostických přístrojů v digitální podobě jsou jen logickým krokem, který vyuţívá komfortu nabízeného moţnostmi uloţení, zpracování a manipulace s digitálními (obrazovými) daty. Digitální obraz je pouze jistou formou digitálních dat. Co jsou to tedy digitální data? Digitální data jsou takovým typem záznamů, který je moţné zapsat pomocí jejich číselného popisu, zaloţeném na dvojkové soustavě, čistě za pomocí čísel 0 a 1 a příslušného matematického aparátu, tzv. Boolovy algebry. Nejmenší digitální informační jednotkou je jeden bit (jednotka b). Bit je hodnota nabývající jednoho ze dvou předem definovaných stavů, např. pravda-nepravda, 0-1, černá-bílá, apod. Tento aparát striktně se lišících stavů je na rozdíl od reálného světa idealizovaný, nemůţe v něm nastat situace, kdy např. stav bitu je "spíš pravda neţ nepravda", hodnota není černá ani bílá ale spíše šedá, číselná hodnota není 0 nebo 1, ale např. 0,333. Tyto situace není moţné v rámci jednoho standardního bitu postihnout, a pokud je potřeba je reprezentovat, dělá se to sloţitějším způsobem a je na ně zapotřebí více bitů.
Digitální obraz je pouze speciálním případem digitálních dat a platí pro něj stejná pravidla jako pro jakákoli digitální data.
Pokud chceme reprezentovat jeden z více moţných stavů (kterých je ovšem konečný počet), můţeme takto učinit pouţitím více bitů. Jak jiţ bylo dříve uvedeno, v případě pouţití jednoho bitu můţeme reprezentovat jeden ze dvou stavů. Přidáním dalšího bitu informace se nám počet moţných stavů rozšíří na dvojnásobek, tzn. na 4, přidáním dalšího bitu na 8, dalšího na 16 atd. Zapsáno matematicky, pokud máme k dispozici 𝑛 bitů, můţeme pomocí nich reprezentovat jeden z 2𝑛 stavů.
39
Průvodce studiem Ze vztahu mezi 𝑛 bity a 2𝑛 stavy nemusí být na první pohled zřejmé, o jakém obrovském množství stavů se můžeme bavit. Funkce 2𝑛 je funkcí exponenciální a roste velmi rychle. Pro n=5 je stavů 32, pro n=10 již jich je 1024, pro n=24 jich je cca 16 milionů, pro n=32 jsou to zhruba 4 miliardy atd.
Digitálním způsobem pak můţeme zapisovat hodnotu veličiny s větší škálou stavů, např. krevní skupiny (0, A, B, AB) je moţné digitálně kódovat hodnotami z následující tabulky: Tabulka 1 Ukázka kódování krevních skupin pomocí 2 bitů
Krevní skupina 2 bitový kód skupin 0 00 A 10 B 01 AB 11 Pokud bychom chtěli přidat informaci o Rh faktoru (+, -) můţeme přidat ke kódování další bit a tabulku rozšířit: Tabulka 2 Ukázka kódování krevních skupin s Rh faktorem pomocí 3 bitů
Krevní skupina s Rh 3 bitový kód skupin faktorem 0+ 000 A+ 100 B+ 010 AB+ 110 0- 001 A- 101 B- 011 AB- 111 Kvantizace je Výše uvedeným způsobem můţeme reprezentovat libovolné hodnoty z konečné mnoţiny proces, který přirozených čísel. Ve skutečném světě se však vyskytují i hodnoty, které nejsou celočíselné, ale převádí spojitou pocházejí z oboru reálných čísel. Tyto hodnoty není moţné s absolutní přesností reprezentovat hodnotu na digitálně a je nutné pouţít pouze přibliţnou hodnotu v rámci námi zvolené tolerance, úroveň hodnotu diskrétní. hodnoty se pak nebude měnit plynule, ale skokově. Tomuto procesu převodu spojité hodnoty na hodnotu diskrétní se říká kvantování. Moţností, jak určit tuto přibliţnou hodnotu ze škály moţných hodnot je větší mnoţství, nejčastěji se pouţívá lineární ekvidistantní rozdělení definičního intervalu na daný počet úrovní. Na následujícím grafu je zobrazena spojitá funkce (modře) a její kvantované hodnoty (červeně). Kvantizace byla provedena s diskrétním krokem 0,1.
39
0,4
0,3
0,2
0,1
2,3
2,2
2,1
2
1,9
1,8
1,7
1,6
1,5
1,4
1,3
1,2
1,1
1
0,9
0,8
0,7
0,6
0,5
0,4
0,3
0,2
0,1
0
0
Obrázek 1 Kvantování reálných hodnot
Velikost kroku, nebo také počet platných hodnot v daném intervalu ovlivňují výslednou kvalitu kvantizace - čím je krok jemnější, tím je jsou kvantizované hodnoty věrnější své předloze. Na následujícím grafu jsou zobrazena tatáţ data, ovšem s jemnější kvantování (s krokem 0,05): 0,4
0,3
0,2
0,1
Obrázek 2 Přesnější kvantizace
39
2,3
2,2
2,1
2
1,9
1,8
1,7
1,6
1,5
1,4
1,3
1,2
1,1
1
0,9
0,8
0,7
0,6
0,5
0,4
0,3
0,2
0,1
0
0
Průvodce studiem Kvantizace se používá i v běžném životě, aniž bychom to tušili. Např. pokud se nás dotáže někdo na věk, tak neodpovíme např. je mi 20,30337... let, ale věk uvedeme pouze jako celé číslo 20. Podobně postupujeme při běžném zaokrouhlování. Kvantizace je tedy zcela přirozeným přístupem pro zjednodušené vyjádření původní přesnější hodnoty.
Výše uvedená kvantizovaná data pak je moţné zapsat digitálním způsobem, opět platí pravidlo, ţe pokud máme k dispozici n bitů pro záznam hodnoty, můţeme jejich prostřednictvím vyjádřit 2𝑛 moţných stavů a naopak, na zakódování m moţností je potřeba log 2 𝑚 bitů. Kvantování reálných hodnot na diskrétní je ovšem jen polovinou digitalizace obrazu a jakéhokoli signálu obecně. Druhou, neméně významnou částí digitalizace je tzv. vzorkování. Signál ani obraz nejsou tvořeny pouze jednou jedinou hodnotou, ale jedná se o větší mnoţství hodnot, které jsou logicky Vzorkování je uspořádány. Např. zvukový signál je dán hodnotami amplitudy intenzity zvuku a tyto hodnoty jsou jednou ze uspořádány v časové závislosti. Naproti tomu u obrazu jsou hodnoty jasu nebo barev obrazu základních metod uspořádány v prostorovém vztahu (v rovině). Tak či onak, jak čas, tak prostor jsou běţně chápany disktetizace spojitě a spojité hodnoty nelze přímo digitalizovat a je nutné je převést na hodnoty diskrétní. signálu nebo Vzorkování (sampling) je proces rozdělení časového nebo prostorového oboru na diskrétní části - obrazu. Spolu s vzorky, kde všechny hodnoty v daném vzorku jsou zastoupeny vhodně zvolenou jedinou hodnotou. kvantováním Jedná se vlastně o podobný proces, jakým byla kvantizace, jen se týká jiné osy neţ osy hodnot. V umožňují ukládat případě vzorkování jednorozměrného signálu, např. zvuku, ale můţe se jednat i třeba o záznam tato data digitálně. signálu z EKG a dalších zařízení, dochází k rozdělení časové osy na pravidelné úseky charakterizované naměřenou hodnotou v daném časovém okamţiku. V případě časové osy se pouţívá pojem vzorkovací frekvence vyjadřující počet vzorků signálu za jednu sekundu času, jednotkou jsou Hz. Např. kvalitní záznam zvuku pouţívá vzorkovací frekvenci 𝑓 = 44,8 𝑘𝐻𝑧. Obdobně se postupuje při digitalizaci obrazu, s tím rozdílem, ţe se nepouţívá časová osa, ale dvě nezávislé prostorové osy. Vzorkování obrazu rozděluje rovinu určenou těmito dvěma osami na jednotlivé vzorky - plošky. Hodnoty těchto plošek pak odpovídají naměřené hodnotě jasu, případně hodnotě barvy. Pro výsledný digitální signál je potřeba zkombinovat obě uvedené techniky - vzorkování i kvantizaci. Vzorkováním získáme na daném definičním oboru konečný počet vzorků, kaţdý vzorek je pak kvantizován na diskrétní hodnotu. Výsledek je pak moţné digitálně uloţit. Výsledná informační náročnost takto zpracovaných dat odpovídá počtu vzorků v signálu 𝑛 vynásobený počtem bitů na jednotlivý vzorek, který je při 𝑚 moţných hodnotách vzorku roven vztahu: 𝐼 = 𝑛 ⋅ log 2 𝑚 Příklad: Máme signál pořízený z EKG. Chceme uloţit v digitální formě 5 sekund záznamu. Vzorkovací frekvenci zvolíme např. 400 Hz. Počet úrovní pro kvantizaci signálu zvolíme jako m=1024, coţ je 10 bitů na jeden vzorek. Výsledný datový objem je pak 𝐼 = 4000 ⋅ 10 ⋅ 5 = 200 000 bitů, coţ odpovídá přesně 25 kB dat na jeden takový záznam.
1.1.2
Zdroje digitálního obrazu
Zdroji digitální obrazové informace mohou být
digitální fotografie a video - fotodokumentace digitální tomografie - CT, magnetická rezonance a další metody digitální radiologie - digitální RTG
39
digitalizace existující obrazové předlohy - např. pomocí skeneru obraz na počítači vytvořený manuálně - počítačová kresba, modelování obraz na počítači vytvořený strojově - procedurální obraz, prezentační grafika vytvořená z uloţených dat
Výše uvedený výčet ovšem nezahrnuje celou škálu moţností vzniku, zpracování a prezentace digitální obrazové informace a tím, ţe se zaměřuje pouze na výběr technologií pracujících s obrazem pořízeným z reálných zdrojů, zcela opomíjí důleţitou podmnoţinu digitálních obrazových technik, tzv. vektorovou grafiku nebo vektorový obraz.
1.1.3
Rastrový a vektorový přístup k obrazu
Jiţ základní pojem obraz není nikde přesně definován. Většinou se spokojíme s intuitivním chápáním, ţe obrazem rozumíme průmět reálného světa na danou plochu, např. na sítnici oka, nebo na filmové políčko případně CCD čip. Takto chápaný obraz je dvourozměrným průmětem trojrozměrného světa v jednom časovém okamţiku. Z výčtu na začátku kapitoly věnované digitálnímu obrazu by se mohlo zdát, ţe digitální obraz vzniká pouze snímáním a digitalizací obrazu pocházejícího z reálného světa za pomoci příslušného zařízení, např. digitálního fotoaparátu nebo skeneru. Není tomu tak. Mimo reprezentaci obrazu pomocí digitalizovaného signálu z elektronického snímacího zařízení a uloţení těchto dat v dohodnuté struktuře (rastru), existuje i diametrálně odlišný způsob vycházející naopak ze snahy popsat sledovanou scénu pomocí matematických vztahů. Prvnímu přístupu se říká přístup rastrový, tomu druhému přístup vektorový. Oběma přístupům a vztahům mezi nimi se věnuje vědní obor zvaný počítačová grafika. V následujícím textu si vysvětlíme rozdíly mezi oběma přístupy. Při pořizování digitálního obrazu reálného světa se nevyhneme vzorkování, tzn. rozdělení spojité oblasti hodnot na diskrétní dílky, které pak jednou hodnotou reprezentují hodnoty v celé oblasti. I nejlepší snímací zařízení můţe mít pouze konečnou přesnost. Technika vzorkování se pouţívá obvykle při převodu ze spojitého (analogového) signálu na diskrétní (digitální) signál. Signál můţe být jednorozměrný (např. zvuk), dvourozměrný (obraz), méně často pak trojrozměrný (těleso). Z důsledku vzorkování není digitální obraz spojitý, ale je tvořen diskrétní dvojrozměrnou mříţkou obrazových bodů. Tato mříţka je nazývána rastrem a její prvky, obrazové body, se nazývají pixely. Pojem pixel je uţ obecně rozšířen. Vznikl zkratkou anglického pojmu picture element, coţ znamená obrazový bod. Hodnota pixelu pak vhodným způsobem reprezentuje hodnoty veličiny jasu nebo barvy celého odpovídajícího vzorku (u obrazu je to ploška). Rastrový obraz je tedy tvořen mříţkou těchto obrazových bodů. Tato mříţka má svá omezení, např. má nějaký konkrétní tvar uspořádání rastru (obdélník) a tvar obrazových bodů (nejčastěji jsou to čtverce nebo obdélníky). Rastr je limitován svými rozměry ve smyslu počtu pixelů. Kaţdý obrazový bod pak můţe v závislosti na zvoleném typu obrazu nabývat jedné hodnoty ze škály povolených hodnot. Digitální rastrový obraz pak vzniká vhodným nastavením hodnot všech pixelů v rastru. Toto nastavení probíhá automaticky v digitálních snímacích zařízeních, poloautomatizovaně v případě počítačového zpracování obrazu nebo manuálně v rastrových editačních programech (Paint.NET, GIMP, Photoshop a další). Vektorový přístup jde na problém s reprezentací obrazové informace jinou cestou. Neváţe se na tvorbu obrazu pomocí nastavení prvků rastru, ale pouţívá k popisu obrazu prvky, které nabízí euklidovská geometrie a její matematický aparát. Můţe jít o prvky jednoduché, jako jsou např. základní geometrické prvky (úsečky, trojúhelníky, kruhy, obdélníky), přes křivky aţ po sloţité matematické útvary, jakými jsou např. fraktály. Obecná reprezentace vektorového obrazu není definována a závisí vţdy na konkrétní aplikaci. Protoţe jsou stavebními prvky geometrické útvary, vektorový obraz, aţ na několik výjimek, nevzniká z předlohy skutečného světa (např. v digitálním fotoaparátu), ale je tvořen jiným způsobem. Vektorový obraz je většinou modelován ručně v editačních programech nebo můţe být generován počítačově, kdy je postup vytvoření obrazu naprogramován. Neexistují totiţ doposud obecné postupy pro tzv. vektorizaci rastrového obrazu do podoby vektorové Největší význam vektorové grafiky je v technické a návrhářské praxi, v systémech pro počítačový návrh CAD, pro výrobu součástek CAM, typografii, počítačové sazbě a publikaci tiskovin DTP a dalších průmyslových oblastech. Běţný uţivatel se můţe setkat s vektorovou definicí obrazu ve formě fontů neboli definic typů písma, v operačním
39
systému Windows, kde jsou reprezentovány vektorovým formátem TTF. Dále pak například v prohlíţeči internetu při návštěvě stránek pouţívajících vektorovou animační technologii Flash. Vektorová grafika se s úspěchem pouţívá i pro modelování trojrozměrných útvarů a jejich vizualizaci v počítači. Největší rozmach zaznamenala 3D vektorová grafika v oblasti zábavního průmyslu (3D filmy, počítačové hry, virtuální realita). Díky tomuto rozmachu došlo k rozvoji, zlevnění a rozšíření výkonných grafických adaptérů pro urychlení práce s trojrozměrnou grafikou aţ do běţných domácností. Průvodce studiem Rozvoj hardware pro 3D grafiku už dávno výkonnostně předběhl vývoj v oblasti procesorů CPU. Současné grafické adaptéry jsou v práci s obrazem o několik řádů výkonnější, než kdyby se obraz zpracovával na hlavním procesoru. Moderní operační systémy (např. Windows Vista nebo Windows 7) tohoto faktu využívají a rastrový obraz na pracovní ploše je zpracováván za pomoci grafického adaptéru, což ulehčuje práci hlavnímu procesoru a umožňuje rychlejší odezvu a zajímavé grafické efekty.
1.1.4
Rozdíly v rastrovém a vektorovém přístupu
Principiální rozdíly mezi vektorovým a rastrovým obrazem mají několik důleţitých důsledků se kterými je třeba počítat: Základní jednotka rastru pixel bývá překládána jako obrazový bod. Toto označení svádí ke srovnání s bodem, jak jej známe z geometrie nebo z fyziky. Zatímco ve vektorovém obrazu bod opravdu v rámci tolerance odpovídá pojmu bodu z euklidovské geometrie, pro pixel toto neplatí. Na rozdíl od geometrického bodu, který je nekonečně malý, má pixel své konečné rozměry odpovídající jeho poměrné části z rastru. Jedná se tedy spíše o plošku nejčastěji obdélníkového tvaru. Tvar pixelů nejlépe vynikne při dostatečném přiblíţení se k rastrovému obrazu, známá pixelizace (rozčtverečkování) obrazu. Viz Obrázek 1.
Obrázek 1 Pixelizace zvětšeného rastrového obrazu
Podobně je to se sloţitějšími útvary. Např. zatímco v euklidovském dvojrozměrném prostoru se dvě různoběţné přímky vţdy protnou v jednom bodě v rastru se přímky (přesněji úsečky, protoţe rastr je omezený velikostí) za jistých podmínek protnout nemusí. Rastrový obraz je rovněţ nestabilní vůči obrazovým transformacím, jakými jsou posunutí, otočení o libovolný úhel či změna měřítka. Při těchto transformacích se netransformuje samotný rastr, ale všechny jeho pixely musí být přepočítány na základě zvolených transformací. Při transformacích rastru dojde ve většině případů ke zkreslení a ztrátě informace. Důsledkem toho například je, ţe postupné provedení transformace 𝑇 a k ní opačné transformace 𝑇 −1 ve většině případů nedá originální obraz. Vektorové obrazy jsou vůči transformacím stabilní a ztrátu informace nevykazují, je moţné je libovolně transformovat bez obav o jejich poškození.
39
Datová náročnost rastrových obrazů je závislá na velikosti rastru a hloubce obrazového bodu, je nezávislá na samotném obsahu obrazu a všechny rastrové obrazy stejné velikosti a hloubky vyţadují stejné mnoţství paměti. U vektorových obrazů je jejich datová náročnost závislá na jejich struktuře, jednoduché obrazy tvořené několika málo základními prvky mohou mít jen několik desítek bytů, sloţité obrazy pak klidně i stovky MB. V důsledku to můţe znamenat, ţe pro některé typy obrazů je vektorová reprezentace výhodnější i z hlediska uloţení dat. Vektorové a rastrové obrazy nejen vznikají různou cestou, ale pro kaţdý z těchto typů obrazů existují i jiná škála výstupních zařízení k jejich prezentaci. Rastrový obraz se typicky zobrazuje na běţném rastrovém CRT nebo LCD monitoru nebo grafické tiskárně. Pro zobrazení vektorového obrazu je třeba vektorový monitor (téměř se nepouţívá) nebo vektorovou tiskárnu, tzv. plotter. Tato zařízení si nativně rozumí s uvedenými typy obrazů. Toto omezení nevyznívá na první pohled pro vektorový typ příliš dobře, ale vektorový obraz lze také velmi snadno převést na obraz rastrový za pomoci procesu zvaného rasterizace. Tímto procesem se ostatně zobrazuje veškerá vektorová grafika na osobních počítačích a je podporována přímo v hardware zobrazovací jednotky. Díky tomu je moţné na počítači s běţným monitorem zobrazovat a editovat vektorovou grafiku bez jakýchkoli omezení. Převod opačným směrem neboli vektorizace, je extrémně komplikovaná záleţitost a nebyl doposud vytvořen uspokojivý univerzální postup, který by to dokázal. Je třeba si uvědomit, ţe zatímco převod z vektorové grafiky do rastru se provede relativně jednoduchým vykreslením útvarů popsaných ve vektorovém formátu do připraveného rastru, u převodu opačným směrem je potřeba zapojit velké mnoţství speciálních technik, jako jsou analýza obrazu, rozpoznávání tvarů a souvislostí, umělá inteligence a další komplikované procedury.
1.1.5
Rozměry rastrového obrazu
Zatímco u obrazu vektorového není jeho velikost přesně stanovena, u rastrového obrazu jsou jeho rozměry dány velikostí rastru. Při obvyklém pravidelném obdélníkovém rozloţení rastru je velikost dána počtem pixelů na šířku š (osa x) a na výšku 𝑣 (osa y) obrazu. Celkový počet pixelů 𝑛 je pak násobkem těchto dvou rozměrů, uvádí se také pod názvem rozlišení obrazu. Jelikoţ není výjimkou, ţe v dnešní době jsou rozměry v jednotlivých směrech řádově v tisících, vţilo se pro udání počtu obrazových bodů pouţití násobné jednotky megapixel (MPx), označující miliony obrazových bodů. 𝑛 = š ∙ 𝑣 [𝑃𝑥] U obrazu je obvyklé značit osy trochu jiným způsobem, neţ jak je známo z matematiky. Počátek soustavy souřadnic obrazu se nachází v levém horním rohu. Osa x směřuje vpravo, zatímco osa y je orientována směrem dolů.
39
O=[0,0]
šířka
výška
[10,5]
[20,20]
Obrázek 3 Rastr
Přestoţe rozměry obrazu mohou být v podstatě libovolné, je rozumné volit je vhodným způsobem v závislosti na aplikaci. Obvykle bývají velikosti šířky a výšky obrazu spjaty vzájemným vztahem, kterému se říká poměr stran 𝑹. Jde o podíl šířky k výšce obrazu a bývá konstantní při různých hodnotách šířky a výšky. Pro klasické televizní vysílání a starší typy monitorů se pouţívá poměr stran 4:3 a rozlišení např. 800x600 bodů. S nástupem širokoúhlých zobrazovacích zařízení se běţně uplatňují i formáty s poměrem stran 16:9, 16:10 a různé modifikace. 𝑅=š 𝑣 Poměr stran hraje roli při zobrazování daného obrazu na výstupním zařízení. Aby nedocházelo k deformacím nebo ořezání, je potřeba, aby jak obraz tak zobrazovací zařízení mělo stejný poměr stran. V případě, ţe tomu tak není, např. zdroj obrazu je širokoúhlý 16:9 a zobrazovací jednotka je běţný televizor 4:3, je nutné při zobrazení z obrazu buďto oříznout levý a pravý okraj a střed obrazu potom vyplní celou plochu obrazovky (tzv. pan), nebo vloţit kompletní obraz jako tenký pruh (tzv. letterbox), s tím, ţe horní a dolní část obrazovky zůstane nevyuţita (černá). Pro orientaci v různých typech rozlišení zobrazovacích jednotek existují standardizovaná rozlišení obrazu označená příslušnými zkratkami, viz
Tabulka 3 a Tabulka 4.
39
Tabulka 3 Rozlišení standardní
Tabulka 4 Rozlišení širokoúhlá
Zkratka Šířka Výška Poměr stran R QVGA
320
240
4:3
HVGA
640
240
8:3
VGA
640
480
4:3
SVGA
800
600
4:3
XGA
1024
768
4:3
XGA+
1152
768
3:2
1152
864
4:3
1280
1024
5:4
SXGA+ 1400
1050
4:3
UXGA
1600
1200
4:3
QXGA
2048
1536
4:3
SXGA
Zkratka
Šířka Výška Poměr stran R
WXGA
1280
768
5:3
1280
800
16:10
1366
768
~16:9
1280
854
~3:2
1440
900
16:10
1440
960
3:2
1600
900
16:9
1600
1024
16:10
WSXGA+
1680
1050
16:10
WUXGA
1920
1200
16:10
WQXGA
2560
1600
16:10
WQUXGA 3840
2400
16:10
WXGA+
WSXGA
Důleţitou vlastností obrazu je, ţe se jedná o dvojrozměrný útvar. Důsledkem toho je fakt, ţe při zachování stejného poměru stran dochází při zvětšování nebo zmenšovaní jedné ze stran obrazu k nelineárnímu nárůstu nebo poklesu počtu pixelů. Cvičení Příklad 1 Máme obraz o velikosti 1200x1024 px, coţ je přibliţně 1,2 MPx. Pokud při zachování poměru stran zvětšíme šířku obrazu dvakrát na hodnotu 2400 pixelů, zvětší se celková velikost obrazu nikoli 2x, ale 4x na výsledných cca 4,9 MPx, protoţe 2400 ∙ 2048 = 4915200. Příklad 2 Máme obraz o velikosti 1200x1024 px, coţ je přibliţně 1,2 MPx. Pokud bychom chtěli vědět, jak velký rozměr bude mít obraz o dvojnásobném počtu pixelů při zachování stejného poměru stran, musíme vyřešit soustavu rovnic 𝑥 1200 = 𝑦 1024 𝑥 ∙ 𝑦 = 1200 ∙ 1024 ∙ 2, odtud 𝑥 ≅ 1696, 𝑦 ≅ 1448. Rozlišení obrazu o dvojnásobném počtu pixelů je přibliţně 1696*1448 pixelů. 1. Zjistěte rozlišení vašeho monitoru a vypočítejte mnoţství pixelů tvořících obraz, který na monitoru vidíte. 2. Srovnejte tento údaj s rozlišením běţného digitálního fotoaparátu, případně fotoaparátu integrovaného v mobilním telefonu. 3. Srovnejte tento údaj s rozlišením displeje vašeho mobilního telefonu.
2
1.1.6
Hloubka obrazu
Celkové mnoţství informace v obrazu, které je důleţité např. pro jeho zpracování a uloţení, není moţné získat pouze z pouhých jeho rozměrů. Rozměry mohou slouţit jako vodítko pro srovnání velikostí, ale pro výpočet skutečného datového objemu obrazu musíme znát i třetí rozměr, tzn. hloubku obrazu. Pokud pouţijeme pojem pixel jako jednotku mnoţství obrazových bodů, musíme si zároveň určit, kolik informace chceme ukládat v jednom kaţdém obrazovém bodu. Této hodnotě pak říkáme bitová hloubka, nebo také hloubka obrazového bodu a často je označována jednotkou bpp (bits per pixel) - počet bitů na jeden pixel obrazu. Celková velikost obrazu v bitech je pak násobkem šířky, výšky a bitové hloubky obrazu. 𝐼 = 𝑛 ∙ ℎ = š ∙ 𝑣 ∙ ℎ [𝑏] Bitová hloubka spolu s velikostí obrazu určují jeho informační kvalitu. U obrazů se stejnou velikostí pak platí, ţe informačně bohatší je obraz s větší bitovou hloubkou.
1.1.7
Dvouúrovňový obraz
Nejniţší pouţitelná bitová hloubka je 1 bpp, který dokáţe v rastru rozlišit 2 různé stavy pro nastavení pixelů. Takovému obrazu říkáme dvouúrovňový. Speciálním případem dvouúrovňového obrazu je obraz černobílý, kde dvě odlišné hodnoty jsou černá a bílá barva. Dvouúrovňový obraz se však neomezuje pouze na černou a bílou barvu, mohou v něm vystupovat jakékoli dva odlišitelné barevné nebo jasové stavy. Důleţité je, ţe v celém obraze se nevyskytuje jiná hodnota neţ jedna z těchto dvou. Stejně tak nemůţe být pixel "neinicializován", tzn., ţe mu nebyla nastavena ţádná hodnota.
Dvouúrovňový obraz je nejjednodušším typem obrazu. Je tvořen dvěma barvami.
Jelikoţ je dvouúrovňový obraz informačně nejméně náročný setkáváme se s ním v dnešní době spíše ojediněle, protoţe s rostoucím mnoţstvím dostupné paměti byl nahrazen kvalitnějšími, ale datově náročnějšími typy. V praxi se s dvouúrovňovým obrazem setkáváme hlavně v tradičních starších aplikacích, jako jsou černobílé modely displejů kalkulátorů nebo mobilních telefonů, případně v aplikacích, kde technické řešení vyhovuje tomuto typu obrazu - např. běţící řádek s informacemi v MHD realizovaný pomocí pole LED diod.
1.1.8
Šedotónový obraz
Název dvouúrovňový černobílý obraz můţe zavádět k analogii s černobílou fotografií, případně digitalizovanou černobílou fotografií. Není tomu tak. Čistě černobílý obraz nedokáţe při běţném rozlišení zachytit dostatečně věrně potřebné jasové detaily. Pro vyjádření jemnějších jasových úrovní proto nevystačíme s pouhým jedním bitem informace na pixel, ale musíme pouţít dostatečné mnoţství stupňů šedé barvy. Hovoříme tak o šedotónovém obraze. Na obrázcích Obrázek 4, Obrázek 5 a Obrázek 6 srovnejte kvalitu originálního barevného snímku s jeho šedotónovou a dvouúrovňovou variantou.
Obrázek 4 Barevný originál 24 bpp
2
Obrázek 5 Šedotónový obraz 8 bpp
Obrázek 6 Dvouúrovňový černobílý obraz 1 bpp
Narozdíl od dvouúrovňového obrazu, kde jsou voleny dvě odlišné barvy nebo jasy, jsou hodnoty šedotónového obrazu vybírány ze škály jasů základní barvy, nejčastěji bílé. Uvědomíme-li si, ţe černá barva je v podstatě nepřítomnost jakékoli skutečné barvy, můţeme se na přechod od černé barvy k bílé dívat jako na plynulé (v případě analogového zpracování) nebo skokové (v případě digitálního zpracování) zvyšování úrovně jasu bílé barvy od ţádné intenzity po intenzitu maximální. Pro digitální obraz platí, ţe výše uvedený přechod není plynulý, ale odehrává se po diskrétních Za pomoci 𝑛 bitů skocích. Počet těchto úrovní je odvozen od mnoţství bitů věnovaných pro vzorkování škály. jsme schopni Obecně platí, ţe za pomocí 𝑛 bitů jsme schopni rozlišit 2𝑛 různých hodnot, v našem případě stupňů rozlišit 2𝑛 různých šedé barvy. Čím vyšší volíme hloubku obrazu, tím se dostáváme k jemnější škále. Černo bílý hodnot jasu dvouúrovňový obraz můţeme také chápat jako speciální případ šedotónového obrazu za pouţití pouhého 1 bitu na pixel. V praxi se však pouţívají vyšší hodnoty, obvykle 8 bitů, coţ odpovídá 256 úrovním šedé barvy, ale mohou být i jiné. V případě celočíselné reprezentace odpovídá hodnota 0 černé barvě a hodnota 𝑚𝑎𝑥 = 2𝑛 − 1 odpovídá bílé barvě. Hodnoty uvnitř intervalu (0, max) jsou pak uspořádány podle příslušné intenzity jasu. Tabulka 5 Celočíselné hloubky obrazu
hloubka obrazu 𝑛 počet úrovní 2𝑛
Interval hodnot 0 .. 2𝑛 − 1
1
2
0… 1
2
4
0… 3
8
256
0… 255
10
1024
0… 1023
12
4096
0… 4095
16
65536
0… 65535
3
Průvodce studiem Říká se, že 256 úrovní šedé barvy je více než dokáže rozlišit lidské oko. Vyšší množství úrovní jasů se používá kvůli kompenzaci numerických chyb vznikajících při manipulaci s obrazem.
Kromě celočíselného vyjádření úrovně jasu na intervalu (0; 2𝑛 − 1) se, ve speciálních případech, pouţívá neceločíselné vyjádření hodnot úrovně jasu na normovaném intervalu (0;1). Pro vyjádření hodnot mezi nulou a jedničkou se uţívá standardních prostředků pro reprezentaci "reálných" čísel, tzv. reprezentace čísla s plovoucí řádovou čárkou (floating point) s jednoduchou nebo dvojitou přesností. Tato reprezentace je stabilnější vůči výpočetním chybám, ke kterým dochází při zpracování obrazu.
1.1.9
Histogram obrazu
Pro zpracování obrazu a manipulaci s ním je potřeba porozumět pojmu histogram obrazu. Histogram je grafické zobrazení četnosti jasových úrovní napříč všemi pixely obrazu. Na osu x se nanáší moţné hodnoty jasu, na osu y potom absolutní nebo relativní četnost této hodnoty jasu v obrazu. V levé části histogramu se tedy zobrazuje distribuce tmavých tónu počínaje černou barvou, v pravé části potom světlé tóny konče čistě bílou barvou. Histogram obrazu je uţitečný pro rychlý náhled distribuce tmavých a světlých odstínů v obrazu a pro hodnocení kvality obrazu. Na následujícím obrázku je zobrazen histogram vytvořený z obrazu Obrázek 5.
Obrázek 7 Histogram obrazu
Z histogramu je např. moţné orientačně zjistit kvalitu expozice snímku. Za ideální tvar histogramu bývá povaţován tvar odpovídající normální distribuci s klasickým zvonovitým tvarem (tzv. Gaussova křivka). V případě podexponovaných snímků bývají hodnoty histogramu v levé části výrazně četnější neţ v pravé a naopak. Málo kontrastní snímky nepokrývají celou škálu moţných hodnot, ale mají tendenci se sdruţovat ve shluku poblíţ středu histogramu. Operace, které s obrazem provádíme, jako jsou např. zvýraznění nebo ubrání jasu, kontrastu či jiné převodní charakteristiky ovlivňují v důsledku i tvar histogramu. Naopak z tvaru histogramu je moţné odhadnout, které operace by bylo vhodné s obrazem provést k dosaţení lepšího výsledku. Tyto operace můţeme provádět ručně pomocí nástrojů na manipulaci s obrazem nebo automaticky. Nástroje pro úpravu jasu, kontrastu, gama funkce a převodních křivek jsou přítomny v naprosté většině softwaru slouţícího pro editaci a zpracování obrazu.
4
Automatické úpravy, jakými jsou např. ekvalizace histogramu nebo vyváţení jasu či kontrastu, jsou součástí sofistikovanějších softwarových nástrojů a editorů.
Průvodce studiem Histogram je užitečná pomůcka i při pořizování digitálního obrazu. Ne náhodou bývá v kvalitnějších digitálních fotoaparátech zobrazován náhled histogramu v reálném čase přímo v hledáčku. Uživatel může podle něj zkorigovat nastavení expozičních parametrů (čas, clona), případně změnit kompozici obrazu.
1.1.10 Základní úpravy rastrového obrazu Základní manipulace s rastrovým obrazem můţeme pracovně rozdělit na manipulaci geometrickou, kdy měníme tvar obrazu a úpravy obrazové, kdy dochází ke změně jasových nebo barevných charakteristik obrazu. Uvedené úpravy jsou moţné jak pro rastrový tak pro vektorový obraz. Výhodou vektorového přístupu je, ţe je obecně stabilní vůči geometrickým transformacím a nedochází v něm ke ztrátě informace, která jinak postihuje obraz rastrový. Mezi základní geometrické manipulace s obrazem patří posunutí, oříznutí, změna velikosti a otáčení obrazu. Tyto operace jsou součástí téměř kaţdého programu pro manipulaci s obrazem. Při práci s rastrovým obrazem je potřeba počítat s moţnou nenahraditelnou ztrátou informace nebo tvorbou artefaktů, ke které můţe dojít při manipulaci s rastrovým obrazem. Posunutí Posunutí obrazu se většinou nepouţívá samostatně, ale v rámci zpracování a kompozice více obrazů do jednoho. Jednotlivé vrstvy komponovaného obrazu je moţné vůči sobě vzájemně posouvat. Pro rastrový obraz platí, ţe pixely, které se po posunutí ocitnou mimo platnou oblast rastru, mohou být ztraceny. Stejně tak ve výsledném obrazu se objeví "nové" pixely, které v originále leţely mimo rastr. Tyto hodnoty jsou ve většině případů inicializovány transparentní (průhlednou) barvou v případě vrstev nebo neutrální barvou pozadí (např. černou nebo bílou), kterou je moţné nastavit v příslušném programu. Posunutí
Oříznutí
Obrázek 8 Operace posunutí obrazu
Operace oříznutí (anglicky Crop) je velmi často pouţívaná operace při zpracování digitálního obrazu. Jak jiţ název napovídá, jedná se o redukci velikosti za pomoci stanovení pracovního okna uvnitř oblasti rastru a odstranění obrazu vně tohoto pracovního okna. Okno je moţné definovat pomocí výběru oblasti, nebo zadáním souřadnic (pozice levého horního rohu a uvedení výšky a šířky okna). Oříznutí se pouţívá hlavně pro odstranění nepotřebných částí obrazu za účelem redukce velikosti (a datové náročnosti) obrazu. Operace oříznutí nevede k obrazovým deformacím, jaké mohou nastat při operaci změna měřítka. Zůstává zachován poměr stran pixelů, pixely se nepřepočítávají a výsledný výřez má stejnou kvalitu ve zvoleném okně jako originální obraz. 5
Změna velikosti
Obrázek 9 Operace oříznutí obrazu
Změna velikosti Změnu velikosti obrazu můţeme chápat dvěma způsoby. Prvním ze způsobů je změna velikosti náhledu, tzn. přiblíţení a oddálení pohledu na obraz, které se pouţívá v případě, ţe je originální rozlišení obrazu příliš velké pro rozlišení zobrazovacího zařízení a není moţné zkoumat důleţité detaily. Této operaci se také říká Zoom. Nejedná se o skutečnou manipulaci s obrazem, obraz zůstává beze změny, pouze se nastavuje podle potřeby hodnota přiblíţení a tím dochází k jinému způsobu překreslení. Zoom tedy nechápeme jako samotnou transformaci obrazu, ale je to pouze pomůcka pro zobrazení. Skutečná změna měřítka - velikosti (tzv. Scale) vede ke změně původní výšky a šířky obrazu na jiné hodnoty. Tato operace je provázena přepočtem obrazu, tzn., ţe pixely výsledného obrazu jsou vytvořeny z originálních dat transformační funkcí. Při pouţití této transformační funkce můţe dojít k významným ztrátám informace, deformacím a neţádoucím artefaktům (např. tzv. alias, nebo pixelizace). U řady programů je moţné parametry transformační funkce pro změnu měřítka nastavit, např. určit kvalitu algoritmu pro přepočet nových pixelů (např. bikubickou interpolaci hodnot). Při změně velikosti je velmi důleţité brát ohled na poměr stran originálního obrazu. Pokud nechceme způsobit neţádoucí deformaci, je vhodné pokusit se volit novou velikost takovým způsobem, aby původní poměr stran pokud moţno odpovídal originálu. Operace rastrového zmenšení obrazu vede ke ztrátě informace. Při zvětšování obrazu nová informace nevzniká. Proto pokud zmenšíme rastrový obraz např. na 25% původní šířky a výšky, uloţíme a následně jej zvětšíme na původní velikost, nedostaneme původní obraz, ale pouze přibliţnou podobu originálu, protoţe při výše uvedeném zmenšení jsme přišli o cca 93% původní informace a zaznamenáme zřetelnou pixelizaci nebo rozmazání.
Zvětšení na 400%
Zmenšní na 25%
Obrázek 10 Operace zmenšení a zvětšení obrazu
6
Při operaci změny měřítka můţeme pozorovat neţádoucí artefakty. Prvním z nich je jiţ zmíněná pixelizace, nebo také rozčtverečkování obrazu. Kromě pixelizace se můţeme poměrně často setkat s jiným artefaktem, tzv. aliasem. Alias je fenomén známý z oblasti zpracování signálu a souvisí s procesem vzorkování, popsaném v kapitole Digitální data a obraz. Alias v obrazu je poměrně často přítomný a je snadné jej pozorovat např. při změně velikosti obrazů, které obsahují pravidelné struktury. Řešení problémů s aliasem (tzv. antialiasing) se provádí na různých úrovních zpracování obrazu, pro naše účely stačí, ţe při změně velikosti je vhodné volit dostatečně kvalitní algoritmus pro transformaci velikosti, který tento efekt kompenzuje. Následující obrázek ukazuje pravidelnou diagonální strukturu v originální velikosti.
Obrázek Pravidelná struktura pro ukázku Alias se projeví při změně velikosti tohoto11obrazu, viz následující obrázky proaliasu velikosti 60%, 45%, 26%:
Obrázek 12 Alias na pravidelné struktuře při zmenšení na 60, 45 a 26%
7
Otočení Otáčení obrazu patří k relativně častým operacím. Většinou se nejedná o otočení obrazu o volitelný úhel, ale postačuje úzká škála jednoduchých operací, které způsobují pravoúhlé otočení obrazu nebo jeho převrácení. V běţných editačních programech jsou na výběr minimálně 2 základní druhy otočení o 90°, po směru pohybu hodinových ručiček případně ve směru opačném. Rotace o 180° je často přímo nabízeno v menu, nicméně pokud chybí, dá se pouţít opakované otočení o 90°. Souvisejícími transformacemi, přestoţe se nejedná přímo o rotace, jsou operace překlopení (flip), neboli také osová souměrnosti podle jedné z hlavních os x nebo osy y. Odtud vertikální nebo horizontální překlopení. Překlopení a rotace rastrového obrazu o násobek 90° nejsou zatíţeny přepočtovými chybami a opakováním těchto transformací se můţeme dostat k originálnímu obrazu. Otočení rastrového obrazu o libovolný úhel je moţné provést ve speciálních programech, nicméně je méně obvyklé a pouţívá se zejména u komponovaného obrazu. Je také zatíţeno chybami a ztrátou informace při přepočtu pixelů a s tím spojenými ztrátami kvality a tvorbou artefaktů. Otočení vektorového obrazu o libovolný úhel ztrátou kvality zatíţeno není. Další lineární a nelineární transformace Kromě výše zmíněných základních transformací, mohou pokročilejší editační programy nabídnout větší škálu pokročilejších transformací. Mezi tyto transformace patří transformace lineární, např. zkosení nebo perspektivní zkreslení (případně kompenzace perspektivního zkreslení). Nelineární transformace mají komplikovaný vliv na rozloţení pixelů a jsou poskytovány pouze v nejpokročilejších programech pro zpracování obrazu. Jejich příkladem jsou komplikované efekty na rozrušení struktury obrazu v závislosti na zvolených parametrech nebo akcích uţivatelského rozhraní. Příkladem jsou efekty sférické zkreslení (obraz jakoby nataţen na kouli), Ripple (zvlnění obrazu) nebo zkapalnění - Liquify (interaktivní deformace obrazu). Jejich vyuţití pro lékařskou praxi není nijak významné, své uplatnění nacházejí spíše při tvorbě digitálního umění. Na následujícím obrázku je ukázka nelineární transformace Twirl.
Obrázek 13 Ukázka nelineární obrazové transformace Twirl
Narozdíl od geometrických transformací se následující sada transformací netýká práce s tvarem a rozměry obrazu nebo jeho částí, ale tyto transformace ovlivňují přímo hodnoty jasů nebo barev daných obrazů. Přestoţe některé 8
z výše uvedených operací je moţné provádět i nad vektorovým obrazem, bývají častěji spjaty s rastrovou reprezentací. Změna jasu, kontrastu, převodní křivky Vpravdě základními operacemi ovlivňující jasové hodnoty obrazu jsou úpravy jasu a kontrastu. Tyto moţnosti jsou dostupné téměř na kaţdém zařízení pro zpracování nebo zobrazení obrazové informace, a to nikoli nezbytně digitální. Např. analogový televizní přístroj má rovněţ moţnost nastavení jasu a kontrastu obrazu, nicméně ovládací prvky pro změnu těchto charakteristik jsou dostupné na velké škále zařízení a patří i k základnímu vybavení grafických programů. Přestoţe změna jasu a kontrastu bývají vnímány intuitivně, mají pod sebou skrytou matematickou podstatu, kterou si přiblíţíme. Tento aparát následně vyuţijeme při vysvětlení komplikovanějších pojmů, jako je např. gama korekce. Převodní křivka Výše zmíněné operace vyuţívají tzv. převodní křivku. Nejedná se o skutečnou křivku, ale jde o vizualizaci definice zobrazení původních hodnot jasů pixelů originálního obrazu na nové intenzity jasu upraveného obrazu. Zjednodušeně řečeno se jedná o jednoduchou tabulku, která ke kaţdé intenzitě jasu vstupního obrazu přiřadí novou intenzitu, která bude obsaţena v obrazu transformovaném. Pokud je např. obraz 8 bpp šedotónový, převodní křivka bude obsahovat tabulku o 256 řádcích. Kaţdý řádek bude obsahovat novou hodnotu intenzity transformovaného obrazu. Transformovaný obraz vznikne tak, ţe originální obraz je zpracován pixel po pixelu, a do transformovaného obrazu se pouţije místo původní hodnoty jasu 𝐼𝑖0 transformovaná hodnota, uloţená v převodní tabulce 𝐼𝑖𝑇 . Tento způsob řešení je obecný a platí pro všechny převodní funkce. Pokročilejší editační software umoţňuje tvar této převodní křivky interaktivně upravovat. Nicméně pro popsání jednoduchých operací je jednodušší pouţít přímo jednoduchý matematický vzorec. Na následujícím obrázku je zobrazeno dialogové okno s moţností nastavení tvaru převodní křivky. Originální převodní charakteristika odpovídé zobrazené čárkované diagonále. Plnou čarou je vyznačena pouţitá převodní křivka.
9
Obrázek 14 Převodní křivka v programu Paint.NET
Pouţitá křivka má tvar jednoduchého oblouku. Výsledný efekt na obraz je takový, ţe obraz bude o něco více preferovat tmavé tóny před světlými. Na následujícím obrázku je výsledek takové transformace. V levé části je originál, v pravé je výsledný obraz.
10
Obrázek 15 Ukázka vlivu převodní charakteristiky na obraz
Úprava jasu Základní úpravou obrazu je úprava jasu. Úprava jasu se pouţívá k celkovému zesvětlení nebo ztmavení obrazu. Úpravu jasu parametrizujeme volbou jasového přírůstku Δ𝐼 (nebo úbytku) a transformace jasů je vyjádřena následujícím vztahem: 𝐼𝑖𝑇 = 𝐼𝑖0 + Δ𝐼 Příklad: Máme originální obraz v 8bpp a chceme provést úpravu jasu jeho zvýšením o Δ𝐼 = 10. Tzn, ţe všechny pixely s původní intenzitou jasu 0 budou mít výslednou intenzitu 10, všechny pixely s původní intenzitou 1 budou mít výslednou intenzitu 11 atd. V případě hodnot původní intenzity jasu 246-255 by přičtení hodnoty Δ𝐼 došlo k výsledkům 256-265, které leţí mimo obor platných hodnot 0-255 (jsou jasnější neţ nejjasnější bílá barva). V tomto případě by došlo k přetečení hodnot, nebo také k přepálení. Tomu se běţně zabrání tím, ţe pokud hodnota překročí povolené maximum (respektive se dostane do záporných hodnot), zůstane tato hodnota na maximu (respektive na hodnotě 0). Z výše uvedeného příkladu vyplývají dva důleţité důsledky:
dostatečným mnoţstvím opakování stejných úprav jasu se můţeme dostat k čistě bílému obrazu (při zvyšování jasu) nebo k černému obrazu (při sniţování jasu). provedení sekvence operací zvýšení jasu a následně opačné operace nemusí vést k původnímu obrazu a můţe dojít ke ztrátě informace.
Na následujícím obrázku je naznačen vliv změny jasu na originální obraz (uprostřed). Levá část byla ztmavena o úbytek jasu v hodnotě -50 stupňů, pravá část byla naopak zesvětlena o 50 úrovní.
11
Obrázek 16 Ukázka úpravy jasu v obraze
Úprava kontrastu Mezi operacemi úprava jasu a kontrastu a tvarem histogramu existuje jednoduchá závislost. V případě úpravy jasu dochází k posunu histogramu směrem vpravo (při zvyšování jasu) nebo vpravo (při sniţování jasu). Při úpravách kontrastu dochází ke smršťování histogramu směrem ke střední hodnotě jasu při sniţování kontrastu. Výsledkem je obraz vyplněný pouze jednou barvou (střední šedá). Při extrémním zvyšování kontrastu dochází k distribuci jasů pouze mezi dvě extrémní hodnoty (černá a bílá) a degradaci obrazu na dvojúrovňový obraz. Na následujícím obrázku je naznačen vliv změny kontrastu na originální obraz (uprostřed). V levé části byl sníţen kontrast o -50 úrovní, v pravé zvýšen kontrast o 50 úrovní.
12
Obrázek 17 Ukázka úpravy kontrastu v obraze
Gama korekce Narozdíl od předchozích úprav obrazu, které byly tzv. linerání (bylo moţné je popsat jednoduchým lineárním vztahem), je úprava gama koeficintu operací nelineární. Převodní křivka má tvar oblouku mezi rohy hlavní diagonály. Gama koeficient vyjadřuje míru a směr vyklenutí této převodní křivky. Gama křivka se podobá křivce uvedené na Obrázek 14 Převodní křivka v programu Paint.NET.
Ekvalizace histogramu Kromě ručního nastavení potřebných hodnot jasu., kontrastu a případně gama koeficientu nabízejí pokročilejší grafické programy automatickou moţnost tzv. ekvalizace (vyrovnání) histogramu. Princip vychází z poţadavku na výsledný tvar histogramu, kterému jsou následně podřízeny převodní charakteristiky takovým způsobem, aby bylo poţadovaného rozloţení jasových hodnot dosaţeno co nejlépe. Přesný postup procesu ekvalizace je poměrně sofistikovaný a je rozhodně nad rámec tohoto textu. Pro naše účely stačí vědět, ţe dojde k automatickému přepočtu jasových úrovní takovým způsobem, aby výsledný histogram splňoval zvolené kriterium. Na následujících dvou obrázcích jsou zobrazeny histogramy téhoţ obrazu před a po ekvalizaci. Všimněte si, ţe druhý histogram je mírně prořídlý a vykazuje chybějící místa - díry v histogramu. Tyto díry jsou způsobeny numerickými a zaokrouhlovacími chybami při výpočtech nových hodnot. Dá se říci, ţe téměř kaţdá sloţitější operace s obrazem způsobuje díry v histogramu. Čím více je v hostogramu děr, tím je v obrazu méně unikátní informace.
13
Obrázek 18 Histogram před ekvalizací
Obrázek 19 Histogram před ekvalizaci
1.1.11 Shrnutí V této kapitole jsme si přiblíţili základy reprezentace digitálních obrazových informací pomocí prostředků výpočetní techniky a metod kvantizace a vzorkování dat. Seznámili jsme se s vektorovou a rastrovou reprezentací obrazu a zmínili, nejdůleţitější rozdíly mezi těmito dvěma odlišnými přístupy. Dále jsme rozvinuli vlastnosti a strukturu šedotónového obrazu, rozlišní obrazu a pojem hloubka obrazu. Představili jsme si také základní geometrické a obrazové operace, které je moţné s obrazy provádět. Pojmy k zapamatování
Digitální data, kvantizace, vzorkování Vektorový a rastrový obraz Pixel Rozlišení obrazu, poměr stran Hloubka obrazu Histogram Geometrické transformace, posunutí, změna velikosti, otočení, alias Obrazové transformace, úprava jasu a kontrastu, gama korekce, převodní křivky
Kontrolní otázky 1. Který z uvedených přístupů (vektorový nebo rastrový) je méně zatížen chybami vycházejícími z manipulace s tímto obrazem? 2. Který z uvedených přístupů (vektorový nebo rastrový) je datově méně náročný? 3. Které z geometrických operací nevedou ke ztrátě informace rastrového obrazu?
14
Cvičení 1. Pro účely měření potřebujeme rozlišit 500 různých úrovní měřené hodnoty. Kolik bitů bude potřeba pro uloţení jednoho výsledku měření, aby se zachovala poţadovaná přesnost? 2. Máme k dispozici zařízení pracující v šedotónové škále s přesností hloubky bodu 20 bpp. Jaká bude přibliţná velikost výstupních dat, pokud pracovní rozlišení jsou 2 Mpx? Úkoly k textu 1. Na svém počítači najděte nějaké digitální rastrové obrázky a ve vašem oblíbeném grafickém programu s nimi vyzkoušejte s nimi různé manipulace, které byly uvedeny v textu. Vyzkoušejte, co se s obrazy děje pokud: 2. - provedete operaci otočení o libovolný úhel 3. - provedete zmenšení obrazu (změnu rozlišení, nikoli oddálení) a jeho následné zvětšení. Porovnejte výsledek s originálním obrazem. 4. Vyzkoušejte na praktickém příkladu za pomoci vámi zvoleného programu vliv změny jasu, kontrastu a ekvalizaci histogramu na histogram obrazu. 5. Pokuste se samostatně u špatně exponovaného obrázku pomocí nastavení jasu a kontrastu dosáhnout lepších výsledků a porovnejte histogramy
Řešení 1. Máme 𝑛 = 500 moţných hodnot, pro jejich zakódování potřebujeme log 2 𝑛 = log 2 500 ≅ 8,96. Protoţe můţeme hodnotu kódovat jen celým počtem bitů, je potřeba pouţít nejniţší vyšší celé číslo. Na zakódování jedné hodnoty z 500 moţných stavů tedy potřebujeme 9 bitů. 2. Rozlišení je 2 MPx neboli 2 mil. pixelů. Kaţdý pixel je reprezentován pomocí 20 bitů, výsledná velikost dat je 2 000 000 ⋅ 20 = 40 000 000 𝑏 ≅ 5 𝑀𝐵.
15
1.2 Druhá lekce Studijní cíle: Cílem lekce je seznámit studenty se základními reprezentací digitálního barevného obrazu a představit jim základní datové formáty a systémy pro uloţení obrazové informace. Klíčová slova: Barevný obraz, RGB, komponenta, datový soubor, komprese, PACS Potřebný čas: 1 hodina.
1.2.1
Barevný obraz
Přestoţe v celé řadě aplikací, jako je např. radiologie, ultrasonografie, CT a jiné vystačíme s obrazem v šedé škále, zmíníme se i o struktuře barevného obrazu. Rozdíl mezi barevným a šedotónovým obrazem překvapivě není příliš velký a pro popis barevného obrazu vyuţijeme prostředků, které jsme pouţili pro obraz v šedé škále. Fyziologická podstata barevného vidění a barevného vjemu není ještě zcela přesně vysvětlena, přesto byla na základě poznatků, které o tomto problému máme, vytvořena zjednodušená upokojivá technická realizace. Ve zjednodušeném pojetí vidění jsou na sítnici oka světločivné buňky dvou typů - tyčinky a čípky. Tyčinky jsou velmi citlivé i při nedostatku světla, ale jsou schopny rozpoznat pouze jeho různé intenzity, ne barvu. K vidění pomocí tyčinek (skotopické vidění) dochází např. za sníţeného osvětlení, kdy je moţné rozeznat tvary a jas, nikoli však barvu předmětů. Vjem získaný pouze pomocí tyčinek můţeme přirovnat k šedotónovému obrazu. Při zvýšené intenzitě světla začínají být citlivé čípky (fotopické vidění). Díky čípkům je moţné rozpoznávat různé barvy. Zjistilo se, ţe na sítnici jsou tři druhy čípků, kaţdý z těchto druhů čípků je citlivý na jinou škálu vlnových délek viditelného spektra. To znamená, ţe na sítnici nejsou buňky specializované na kaţdou jednu viditelnou barvu, ale barevný vjem vzniká kombinací nabuzení těchto pouhých tří typů čípků. Technická realizace tohoto faktu je postavena na tom, ţe zvolíme-li vhodně tři na sobě nezávislé základní barvy, dosáhneme nastavením jejich intenzit a jejich kombinací velkého mnoţství různých barev a odstínů. Poţadovanou nezávislostí barev je myšleno, ţe kombinací libovolných dvou základních barev nejsme schopni dosáhnout třetí základní barvy. Za základní barvy byly zvoleny barvy červená (R - red), zelená (G - green) a modrá (B - blue). Tomuto modelu se také říká RGB formát. Na následujícím obrázku je ukázáno míchání základních barev. Průvodce studiem Tento model si můžete zkusit nasimulovat sami pomocí tří svítilen opatřených filtry v základních barvách.
16
Obrázek 20 Míchání základních barev v modelu RGB
Barva pozadí je černá (K - black), neboli ţádná intenzita ţádné barvy. Na obrázku jsou tři překrývající se kruhy vyplněné základními barvami R, G a B v maximální intenzitě. V místech, kde se kruhy protínají, vznikají nové barvy, které k základním barvám nepatří, ale vznikají jejich kombinacemi. Trojice barev C (cyan - tyrkisová), M (magenta - purpurová) a Y (yellow - ţlutá) vznikají kombinací modré se zelenou, modré s červenou a červené se zelenou. Těmto třem barvám říkáme barvy doplňkové. V úseku, kde se protínají všechny tři kruhy, vznikne bílá barva W (white). Za pomoci tří základních barev maximální intenzity jsme tedy schopni vytvořit osm barev - tři základní, tři doplňkové, černou a bílou. Bílá barva jako taková ve spektru neexistuje, jedná se o přítomnost všech barev v jenom okamţiku. Ostatní viditelné barvy popsatelné tímto modelem vzniknou nezávislým nastavením intenzity základních barev. Průvodce studiem O tom, že bílá barva vzniká jako kombinace červené, zelené a modré barvy se můžete přesvědčit sami na svém monitoru. Použijte lupu nebo opatrně naneste na monitor kapku vody a uvidíte na bílém pozadí textu, že je ve skutečnosti složené z červených, zelených a modrých bodů nebo pruhů.
Na rozdíl od šedotónového obrazu, kde je v pixelu uloţena hodnota intenzity bílé barvy je v barevném rastu potřeba uloţit tři na sobě nezávislé informace o intenzitě všech tří základních barev. Hodnotu barvy pixelu 𝐶𝑖 můţeme tedy zapisovat pomocí vektoru 𝐶𝑖 = 𝑅𝑖 ; 𝐺𝑖 ; 𝐵𝑖 hodnotám R, G a B říkáme sloţky, nebo také barevné komponenty daného pixelu. Do kaţdého pixelu je pak uloţen takovýto vektor intenzit barevných sloţek. Tomuto přístupu práce s ukládáním barev říkáme také reţim skutečných barev (anglicky true color).
17
RR=0
R=255
R=255
RG=0
G=0
G=255
RB=0
B=0
B=255
R=255
R=198
R=127
G=255
G=68
G=0
B=0
B=220
B=0
R=63
R=127
R=191
G=63
G=127
G=191
B=63
B=127
B=191
Obrázek 21 Ukázka nastavení barevných komponent pro vybrané barvy v 24 bpp
Problém volby hloubky bodu, který jsme představili u šedotónového obrazu, můţeme aplikovat na jednotlivé barevné sloţky. Tzn., ţe pokud jsme pro šedotónový obraz pouţili hloubku např. 8 bpp umoţňující 256 odstínů šedé barvy, můţeme pouţít hloubku 8 bpp pro kaţdou barevnou sloţku. Výsledná hloubka barvy pak bude 3*8 = 24 bpp představující 224 ≅ 16,7 milionů barev, coţ je v současnosti obvyklá hodnota pro ukládání barevné informace ve formátu RGB. Avšak stejně jako u šedotónového obrazu, kdy je hodnota hloubky bodu závislá na naší volbě a pouţité aplikaci, můţeme pruţně zacházet i s nastavením hloubek jednotlivých barevných sloţek. V některých případech jsou dokonce různé barevné sloţky reprezentovány různým počtem bitů. Oko je kupříkladu nejméně citlivé na modrou barvu, nejvíce pak na ţlutou a zelenou, proto bývá v některých speciálních případech modrá sloţka reprezentována méně bity neţ červená a zelená. Obecně však lze říci, ţe datová náročnost barevného obrazu je zhruba třikrát větší neţ šedotónového. Tabulka 6 RGB hodnoty některých typů barev ve 24bpp
Barva C
R
G
B
Červená
255
0
0
Černá
0
0
0
Bílá
255 255 255
Ţlutá
255 255
0
Střední šedá 127 127 127 Z uvedeného textu vyplývá, ţe při 24 bitové reprezentaci barevného obrazu se dostáváme na hodnotu cca 16,7 milionu barev, coţ je značné mnoţství a v některých materiálech se uvádí, ţe je to více barev neţ dokáţe rozeznat lidské oko. Naproti tomu ale platí, ţe v RGB modelu (případně v jakémkoli jiném podobném modelu postaveném na konečném mnoţství základních barev) není moţné zobrazit všechny viditelné barvy, pouze jistý výřez ze všech viditelných barev, výřez, který je sice významný, ale rozhodně ne úplný. Pro většinu běţných aplikací však tento
18
barevný model dostačuje. Jak tedy vypadají barvy, které nejdou modelem RGB reprezentovat? Bohuţel i tento text vzniká v počítači s RGB omezením a není moţné v něm přímo ukázat barvy tímto prostorem nepostihnutelné. Pro názornost se odkazuji na chromatický diagram CIE, který znázorňuje v rovině rozloţení viditelných barev a rovněţ ukazuje oblast tvořenou RGB reprezentací. Oblast barev reprezentovaných formátem RGB je uvnitř vyznačeného trojúhelníku. Zdroj obrázku: Wikipedia.org.
Obrázek 22 CIE chomatický diagram s vyznačenými primárními barvami
Průvodce studiem Zajímavým problémem je převod barevného obrazu na šedotónový. Z předcházejícího textu by se mohlo zdát, že pokud je černá barva (0,0,0) a bílá (255,255,255) stačí pro získání odpovídající úrovně šedé barvy sečíst hodnoty jednotlivých komponent a vydělit třemi 𝑌 = 𝑅 + 𝐺 + 𝐵 3. Ve skutečnosti je tento vztah složitější, protože ne každá barva přispívá k výsledné intenzitě jasu stejným dílem. Oko je různě citlivé na různé barvy a proto je skutečný vztah pro převod z RGB do šedotónové škály následující: 𝑌 = 0,3 ⋅ 𝑅 + 0.59 ⋅ 𝐺 + 0.11 ⋅ 𝐵
19
1.2.2
Barevná paleta
Pojem barevné palety pochází z doby, kdy byla kapacita operační paměti a videopaměti velmi omezená. V lepších případech se její velikost pohybovala řádově ve stovkách kilobytů video RAM a v megabytech RAM. Vezmeme-li v úvahu, ţe běţná obrazovka s rozlišením 1024x768 pixelů zabírá v operační paměti více neţ 2,3 MB, nebylo moţné zobrazit takový barevný obraz v uvedeném rozlišení v pravých barvách. Řešením bylo poţití menšího rozlišení nebo sníţit bitovou hloubku barevného obrazu. Obvyklým řešením tohoto problému bylo vyuţití barevné palety. Barevná paleta, jak jiţ název napovídá, našla inspiraci ve výtvarném umění. Tak jako si malíř vybere na svou paletu pouze několik barev, které pak vyuţije při malování obrazu, tak paleta v rastrovém obrazu je výběrem nejčastěji pouţívaných barev v digitálním obrazu. Ovšem na rozdíl od malířské palety můţe digitální paleta obsahovat těchto barev značné mnoţství. V praxi se pouţívá zejména paleta 8 bitová umoţňující pouţití 256 různých barev. Toto číslo je výrazně menší, neţ je počet všech barev ve 24 bitovém RGB modelu (cca 16,7 mil. barev), ale datová náročnost zpracovávaného obrazu je pouze o něco větší neţ třetina originálu. Technicky se paleta realizuje jako tabulka se třemi sloupci a počtem řádků odpovídajícím počtu barev v paletě. Počet barev se volí jako mocnina čísla 2, nejčastěji se pouţívají palety o 256 nebo 16 barvách. Pro reprezentaci obrazu se nejdříve se vytvoří paleta, nebo se pouţije jiţ existující paleta, např. systémová. Proces tvorby palety je netriviální a je nad rámec tohoto textu. Následně je obraz reprezentován nikoli trojicí hodnot R, G a B, ale v paletě je nalezena barva, která nejlépe odpovídá barvě daného pixelu a do hodnoty pixelu se zapíše číslo řádku (index) této barvy. Výsledný datový objem pak odpovídá počtu pixelů 𝑛 vynásobených počtem bitů ℎ𝑝 potřebných na indexaci palety o 𝑚 řádcích + velikost palety 𝐼𝑝 ℎ𝑝 = log 2 𝑚 𝐼𝑝 = 3 ∙ 2ℎ 𝑝 𝐼 = 𝑛 ∙ ℎ𝑝 + 𝐼𝑝 Vyuţití techniky barevné palety je v současné době jiţ dávno překonané, protoţe velikosti pamětí značně převyšují kapacitu nutnou pro uloţení nejvyššího rozlišení v pravých barvách. S paletou je moţné se setkat ve starších verzích operačního systému Windows, kde je moţné nastavit barevnou hloubku pracovní plochy na 8bpp. Barevnou paletu také pouţívá datový formát pro uloţení obrazu GIF při ukládání barevného obrazu.
1.2.3
Datové formáty pro ukládání obrazu
Datových formátů pro uloţení obrazové informace existuje celá řada. Jejich vlastnosti jsou podmíněné dobou jejich vzniku a účelem, ke kterému slouţí. Protoţe neexistuje univerzální "nejlepší" datový formát, je potřeba pro námi zvolenou aplikaci vhodně zvolit ten správný vhodný ze škály standardizovaných typů. Následující výčet obrazových formátů není úplný, ale pokouší se naznačit nejdůleţitější rozdíly mezi jednotlivými typy uloţení, jejich přednosti i jejich nedostatky. Obrazová informace je informačně velmi náročná. Např. hrubá informace z jednoho barevného snímku pořízeného na 10MPx fotoaparátu je přibliţně 32 MB. Pro pohyblivý obraz (video) se pak dostáváme do závratných hodnot v řádech stovek GB. Čím je objem dat větší, tím hůře se s daty pracuje (pomalejší výpočty), hůře se ukládají (větší nároky na paměťové médium) a hůře se přenášejí (rychlost kopírování dat je limitována propustností datové linky). Jedním z prvních poţadavků na kvalitní datový formát je snaha o maximálně úsporné nakládání s uloţenou informací. Téměř kaţdá data v sobě nesou tzv. nadbytečnou (neboli redundantní) informaci, která se s vyuţitím vhodného postupu dá z těchto dat "odstranit", takţe v nich zůstane jen uţitečná informace, která zabírá méně paměti. Algoritmům, které redukují nadbytečnou informaci v datech, se říká kompresní algoritmy. Příkladem kompresního algoritmu pro obecné pouţití je např. velmi rozšířený archivační formát ZIP. Komprimovaná data sama o sobě nejsou příliš uţitečná a nedají se přímo zpracovat. Aby bylo moţno komprimovaná data pouţít, je potřeba provést jejich dekompresi, coţ je proces, který komprimovaná data zrekonstruuje do původní podoby. Před otevřením souborů v ZIP archivu je také potřeba je "rozbalit" na nějaké místo v paměti nebo na disku. V případě
20
obrazových formátů se o kompresi a dekompresi stará softwarová aplikace, ve které soubory vytváříme nebo otevíráme. Podle volby metody pro ukládání obrazové informace můţeme datové formáty rozdělit na nekomprimované a komprimované. Základním typem nekomprimovaného obrazového formátu je prosté uloţení informace v rastru do souboru bez ţádného dalšího zpracování. Takovýmto způsobem pracuje formát Windows Bitmap s příponou BMP, coţ je datový formát pro ukládání obrázků v operačních systémech Windows, RAW formát který je produkován přímo z digitálního zařízení (např. fotoaparátu), případně starší formát TGA (Truevision Targa). Pouţívány jsou zejména skrytě přímo v paměti počítače, protoţe víceméně kopírují způsob, jakým jsou obrazová data uloţena v paměti počítače při zpracování. Tyto formáty nejsou vhodné pro ukládání na paměťové médium za účelem zálohování a přenosu, protoţe takto vzniklé soubory zabírají velké mnoţství prostoru a existují lepší volby formátu, které zohledňují moţnost následného uloţení a transportu a realizují alespoň základní úroveň datové komprese. Komprimované formáty dále dělíme na bezeztrátové a ztrátové. Bezeztrátové formáty odpovídají přesně výše uvedenému popisu kompresního algoritmu a platí pro ně, ţe pokud provedeme kompresi základních dat, tak po jejich dekompresi dostaneme data původní, shodná do posledního bitu s originálem. Ztrátové formáty mají speciální vlastnost, ţe neplatí výše uvedená stoprocentní shoda s originálem a proces komprese dat a následná dekomprese nevede k původním datům, ale dekomprimovaná data se původním datům pouze podobají. Tato vlastnost by se zdála být krajně nevýhodná, ale tyto metody bývají navrţeny takovým způsobem, aby rozdíl mezi originálem a dekomprimovanými daty nebyl běţnými smysly postřehnutelný, nebo v horším případě příliš nevadil. Za tuto cenu je moţné dosáhnout značné redukce původní datové náročnosti a bez ztrátových kompresních formátů by nebylo reálné v dnešním měřítku např. ukládat, přenášet a přehrávat video informace. Průvodce studiem Ztrátové formáty mezi laickou veřejností značně zpopularizoval zvukový formát MP3, což je ztrátový formát zvukové stopy rovněž ztrátového formátu pro uložení videa MPEG.
Původním hojně rozšířeným komprimovaným bezeztrátovým formátem byl formát GIF (Graphics Interchange Format). Tento formát je v současné době na ústupu. Jeho omezením je, ţe neumoţňuje ukládat barvy v reţimu true color, ale pouţívá aţ osmibitovou paletu, tedy maximálně 256 různých barev. Proto není vhodný k ukládání barevných snímků a fotografií. V případě 8 bitových šedotónových obrazů se však toto omezení neprojeví. Dalším jeho problémem je patentová ochrana pouţitého kompresního algoritmu, která znemoţňuje jeho pouţití v některých státech světa. V současné době se pouţívá hlavně ve webové grafice, kde představuje drobné prvky uţivatelského rozhraní nebo stránky (tlačítka, šipky a podobné prvky). Jeho zajímavou vlastností je i to, ţe umoţňuje ukládat více obrázků do jednoho souboru. Tohoto efektu se vyuţívá rovněţ ve webu, oblíbeným zpestřením stránek bývají jednoduché GIF animace. Formát GIF je postupně nahrazován formátem PNG (Portable Network Graphics), který odstraňuje hlavní nevýhody formátu GIF, kterou bylo pouţití palety a licencování a je moţné pomocí něj uchovávat obraz v true color RGB reţimu při zachování slušného kompresního poměru beze ztráty informace. Formát PNG se pouţívá hlavně ve webové grafice, ale dokáţe zastoupit formát GIF v případech, ţe je poţadována nejvyšší moţná kvalita při rozumné míře komprese. Nejznámějším zástupcem ztrátových formátů je formát JPEG (Joint Photographic Experts Group). Jeho nejvýznamnější vlastností je velmi dobrý kompresní poměr, cca 10% původní velikosti v závislosti na nastavení kvality obrazu, kterou je moţné měnit při jeho ukládání. Tento formát je vhodný zejména pro ukládání fotografií a snímků, ve kterých nevadí zkreslení dané ztrátovou kompresí. Kvůli pouţité ztrátové kompresi se v tomto typu formátu mohou v obrazu tvořit neţádoucí artefakty jako je viditelné "čtverečkování" obrazu na segmenty 8x8 pixelů, rozmazané hrany písma, apod. V případě, ţe jsou tyto artefakty neţádoucí, je třeba zvýšit kvalitu uloţení nebo zvolit bezeztrátový formát. Časem se objevila i nestandardizovaná varianta bezeztátového JPEG formátu a ve formátu JPEG 2000 je moţné zvolit bezeztrátovou kompresi.
21
Speciálním datovým formátem je formát TIFF (Tagged Image File Format), který umoţňuje volbu různých typů kompresních metod a dokonce můţe obsahovat více obrazů v jednom souboru, včetně doplňkových informací neobrazové povahy. Pouţívá se pro práci s DTP, při zpracování obrazu, skenování, faxování a rozpoznávání písma.
1.2.4
Systémy DICOM a PACS
Pro medicínské účely byl vyvinut speciální formát DICOM (Digital Imaging and Communications in Medicine), který kromě samotného datového formátu specifikuje i další vlastnosti výměny dat mezi dvěma zařízeními podporujícími tuto formu komunikace. Nemusí se jednat jen o koncové počítače a servery, ale významná řada lékařských přístrojů je s tímto systémem kompatibilní a dokáţe poskytnout výstupy v tomto formátu, případně zpracovat vstupy z jiného zařízení. Mimo primární obrazovou informaci obsahuje formát DICOM i atributy týkající se pozorovaného pacienta, např. jeho identifikační číslo, jméno a podobné informace. Díky tomu se významně sniţuje riziko, ţe by mohlo dojít k záměně souborů různých pacientů. Přestoţe je v tomto formátu moţné uloţit pouze jeden obrazový snímek, je tu počítáno i s uloţením dalších dat, např. videosmyčky (cine loop). Datový formát DICOM je standardizovaný standardem ISO a výrobci medicínských přístrojů uzpůsobují své výrobky po hardwarové i softwarové stránce tak, aby splňovaly jeho poţadavky. DICOM nachází své hlavní uplatnění v systémech PACS. Ve zdravotnictví mají velký význam systémy PACS (Picture Archiving and Communication System). Jsou to systémy vyuţívající prostředí počítačové sítě a k ní připojených zařízení, jakými jsou počítače, servery a síťová úloţiště pro ukládání, zpracování, prezentaci a distribuci obrazové informace. Systémy PACS vyuţívají pro ukládání obrazové informace zpravidla sluţeb formátu DICOM, nicméně je moţné v nich pouţívat i obecnější formáty, jako jsou AVI (Audio Video Interleave), PDF (Potrable Document File) a podobné formáty, je-li vyuţití obecnějšího formátu nezbytné. Vyuţití PACS odstraňuje problémy s manuálním a potenciálně chybným procesem ukládání, správy, transportu a zálohování obrazové informace. Tyto akce probíhají transparentně bez nutnosti obsluhy aktivně se účastnit jednotlivých fází uloţení a zpracování dat, čímţ se předchází chybám způsobeným lidským faktorem. Systém PACS se skládá ze 4 hlavních komponent:
lékařské přístroje produkující obrazovou informaci - digitální RTG, ultrazvuky, CT, MR, a další zařízení podporující standard DICOM zabezpečené síťové spojení - podporuje bezpečný přenos dat mezi prvky systému, zabezpečení je nutné kvůli ochraně citlivých informací pracovní stanice - jejich prostřednictvím jsou prezentovány a vyhodnocovány uloţené snímky úloţiště - pro krátkodobé a dlouhodobé archivování záznamů
Základní funkce systému PACS jsou
Zálohování dat - digitální ukládání a zálohování obrazových dat je cenově výhodné ve srovnání s jinými (např. nedigitálními) způsoby zálohování obrazové informace Vzdálený přístup k datům - moţnost uloţení dat na centrálním uzlu a přístup z libovolného připojeného místa, moţnost dálkových konzultací, podpora výuky a další moţnosti Integrační platforma pro obrazovou komunikaci s jinými systémy - moţnosti propojení s NIS (nemocniční informační systém), elektronickou zdravotní dokumentací, RIS (radiologický informační systém) a dalšími informačními systémy Kontrola průběhu práce - např. moţnost sledovat průběh prací během radiologického vyšetření
22
Shrnutí V této kapitole jsme se seznámili se základy reprezentace barevného obrazu prostřednictvím barevného modelu RGB, reprezentaci pomocí true-color a palety. Současně s tím bylo představeno několik základních komprimovaných i nekomprimovaných datových formátů pro uloţení rastrového obrazu včetně. Společně s formátem DICOM určeným pro medicínské aplikace jsou představeny i základní vlastnosti systému pro ukládání obrazových dat PACS. Pojmy k zapamatování
Barevný obraz, RGB model, barevná paleta Komprese dat, ztrátová a bezeztrátová komprese DICOM, PACS
Kontrolní otázky 1. Kolik základních a doplňkových barev celkem jsme schopni namíchat v modelu RGB ze tří základních barev? 2. Kolikrát přibližně je barevný obraz datově objemnější než stejně veliký obraz v šedé škále? 3. Je možné pomocí RGB modelu zobrazit všechny viditelné barvy? 4. Který obrazový datový formát byste použili k uložení záznamů, kde kriticky záleží na kvalitě. Úkoly k textu 1. V grafickém programu (např. Paint) si spusťte směšovač barev a pokuste se nastavením RGB hodnot namíchat všechny základní a doplňkové barvy. Pokuste se namíchat barvy, které nejsou přímo ve světelném spektru, např. hnědou barvu. Vyzkoušejte si namíchat různé sytosti barev. 2. Vytvořte nebo pouţijte nějaký grafický soubor. Pokuste se ho v editačním programu uloţit ve formátech uvedených v textu (pokud pouţitý editor formát podporuje). Srovnejte velikosti výsledných datových souborů. U formátu JPG zkuste nastavit různou kvalitu a srovnat velikosti a subjektivně kvalitu uloţeného obrazu.
23
2 Část druhá - Databáze 2.1 První lekce Studijní cíle: Cílem lekce je seznámit studenty se základními vlastnostmi databází. Představí pojem databázového systému a základních databázových modelů. Představí se základní prvky nejpouţívanějšího současného databázového modelu relačních databází. Následně budou probrány základní obecné databázové operace. Klíčová slova: Databáze, SŘBD, relační databáze, tabulka, klíč, SQL, databázové operace Potřebný čas: 2 hodiny.
2.1.1
Data a databáze
Jedním z nejstarších problémů informatiky a výpočetní techniky je hromadné automatické zpracování dat. Jedná se zejména o pořízení a záznam velkého mnoţství strukturovaných dat. Tato data je potřeba ukládat na médium, vyhledávat v nich relevantní informace, tyto informace dále zpracovávat (funkčně, statisticky, apod.), třídit, seskupovat, sumarizovat a pořizovat výstupy ze zpracování. Domény pro pouţití těchto systémů postupně pokryly téměř veškeré obory, počínaje administrativou a konče specializovanými systémy uzpůsobeny konkrétním oborům lidské činnosti. Jedním z prvních nasazení výpočetní síly těchto systémů bylo zpracování volebních výsledků, demografické studie, vyuţití v administrativě státního aparátu pro daňovou a sociální správu. Dále pro personalistiku a mzdy u velkých korporací. S rozvojem osobních počítačů se běţné datové zpracování úkolů stalo nedílnou součástí uţivatelských operací s počítačem, proniklo do komerčních firem všech velikosté a umoţnilo vzniknout specializovaným apliakcím pro konkrétní obory, mimo jiné i zdravotnictví. Zapojením počítačů do sítě Internet se otevřely další moţnosti práce s distribuovanými daty, internetové databázové vyhledávací systémy, datové sluţby a další. Problém hromadného zpracování dat začal být strojově řešen technickými prostředky na konci 19. století a byl po dlouhou dobu hnacím motorem výpočetní techniky. Konkrétní řešení zpracování dat se odvíjelo od dostupných hardwarových prostředků, stejně tak jako médií pro uloţení dat. Původní kombinace mechanického a časem elektromechanického zpracování na papírovém médiu - děrném štítku - bylo nahrazeno plně elektronickými počítači a elektomagnetickými médii. Se stoupajícím významem pojmu software jako svébytné součásti vybavení počítače v šedesátých letech minulého století se začaly vznikat pro účely zpracování specializované univerzální programovací jazyky (např. COBOL) a objevila se snaha vyvíjet celé softwarové systémy, pro univerzální zpracování dat. Na přelomu šedesátých a sedmdesátých let byly poloţeny základy relačního databázového modelu, který byl během 70. let komerčně implementován a v 80. létech uţ byl jiţ běţně uţíván a standardizován. V současné době je tento způsob komerčně nejrozšířenějším a většina současných databázových aplikací tento způsob zpracování dat vyuţívá. Vývoj se však nezastavil a uţ se objevují nové, tzv. postrelační systémy, které se opírají o postupy známé z aktuálních metodik tvorby softwaru, tzv objektový přístup. Praktické nasazení těchto systémů však zatím není příliš velké.
2.1.2
Sytém řízení báze dat SŘBD (DBMS)
Systém řízení báze dat (anglicky DBMS - database management system) je sada softwarových programů, které mají za úkol uloţení, organizaci a správu dat v databázi a umoţňují jejich následné získání a zpracování. Poskytují nástroje pro datatbázové administrátory, softwarové vývojáře a koncové uţivatele k sadě operací, které je moţné s databází provádět pomocí dohodnutého rozhraní. SŘBD odstiňuje uţivatele databáze od technických podrobností samotného uloţení dat a technické realizace jejich zabezpečení a nabízí vyšší míru abstrakce pro práci nad uloţenými daty pomocí standardizovaných prostředků, jakými jsou např. databázové programovací jazyky (SQL) a komponenty pro vývoj softwaru (knihovny, adaptéry, ovladače apod.)
24
SŘBD má na starost celou řadu netriviálních úkolů. Přestoţe se jednotlivé komerční i nekomerční databázové systémy liší v technické realizaci, dá se říci, ţe v současnosti nabízejí podobnou škálu sluţeb. Rozdíly mezi různými SŘBD jsou pak v rozsahu, v jakém jsou jednotlivé body realizovány a pochopitelně i v ceně licence. Mezi hlavní úkoly SŘBD patří: Technické řešení uložení dat na médiu - systém se stará o efektivní uloţení databázových dat na paměťovém médiu, jejich správnost, zálohování, ochranu před vnějším nepovoleným zásahem a o přístup k datům podle poţadavku. Součástí tohoto řešení je i optimalizace přístupu, případně rozloţení výkonu mezi více fyzických počítačů. Bezpečnost - databázové systémy poskytují nástroje pro správu uţivatelských účtů jednotlivým uţivatelům databáze a nastavení různých stupňů přístupových oprávnění k databázovým poloţkám obdobně, jako je to např. realizováno u správa účtů v operačním systému nebo v prostředí sítě. Vzdálený přístup - databázové systémy pracují obvykle v reţimu klient-server se vzdáleným přístupem k databázovému stroji prostřednictvím klientských programů. Díky tomuto modelu je moţné, aby k jedné databázi mohlo přistupovat větší mnoţství uţivatelů a databáze se nemusela kopírovat ke kaţdému zájemci zvlášť. Klientským programem bývá zpravidla desktopová aplikace (také zvaná tlustý klient), která pomocí bohatéhoa komfortního uţivatelského rozhraní s celou škálou funkcí umoţňuje pracovat s databázovými záznamy na pracovní stanici a koncový uţivatel zůstává odstíněn od databázové struktury. V posledních letech se prosazují i tzv. tenké klienty, které mají jednodušší uţivatelské rozhraní i nároky na klientslkou pracovní stanici a oblíbeným hostovacím prostředím těchto aplikací je běţný prohlíţeč webu. Ve víceuţivatelském prostředí je komplikované udrţet správnou konzistenci dat, protoţe se nedá zabránit situaci, aby si dva uţivatelé navzájem nezasahovali do dat, ke kterým mají přístup. SŘBD musí umět předcházet, případně řešit kolize vzniklé z přístupu k jedněm datům od různých uţivatelů. Systém zajišťuje moţnost uzamknout právě zpracovávaná data na dobu potřebnou k provedení změn a znemoţnit v tomto jejich změnu od jiného uţivatele, která by vedla k poškození integrity dat. Databázové operace měnící obsah dat mohou být jednoduché (atomické) nebo sloţité, sestávají z celé řady dílčích kroků. Řada dlouhých operací je platná pouze, pokud se provedou všechny všechny dílčí atomické kroky. V případě havárie systému uprostřed dlouhé oprerace by mohlo dojít k porušení integrity dat. Např. při převodu peněz mezi dvěma účty (dvě atomické operace : odečtení částky z účtu A a připsání částky na účet B) by v okamţiku zhroucení systému mezi prvním a druhým krokem došlo pouze k odečtení částky z účtu a uţ nedošlo k přičtení k účtu B a peníze by se "ztratily". Proto se tyto typy operací provádějí tzv. transakčně, neboli systém poskytuje mechanismus, jak bezpečně a spolehlivě zpracovat sekvenci kroků a v případě nenadálé chyby dokáţe vrátit záznamy do původního stavu (tzv. rollback). SŘBD také obsahuje mechanismy pro komunikaci vnějšího prostředí s databázovým systémem pomocí standardizovaných rozhraní a jazyků. Příkladem obecně uznávaného jazyka pro komunikaci s databázemi je dotazovací jazyk SQL (Structured query language). Průvodce studiem Přestože je jazyk SQL standardizovaný standardem ISO, praxe je poněkud odlišná. Každý výrobce SŘBD si obvykle vytváří svůj vlastní "dialekt" jazyka SQL, který se v menších či větších detailech odlišuje od standardu, nebo jej rozšiřuje. Tyto dialekty jsou ovlivněny konkrétními pravidly každého SŘBD a jsou navzájem nekompatibilní. Proto je převod databáze z jednoho systému na druhý spojen se značnými obtížemi a velkými náklady.
25
2.1.3
Klasifikace databází
Způsobů, jak zpracovávat data je moţné vymyslet více. Na následujícím seznamu je běţná klasifikace přístupů k řešení systému uloţení dat dat. Tyto systémy vznikaly postupně v čase, ale nenahrazují jeden druhý, spíše se vhodným způsobem doplňují.
Flat file - souborový model, kde jsou záznamy uloţeny v textové podobě v souboru s jednoduchou strukturou. Kaţdý záznam má vlastní řádek, na řádku můţe být k jenom záznamu více jednotlivých údajů (atributů), většinou jsou odděleny oddělovacím znakem, např. čárka, středník, tabelátor. Tento model odpovídá v podstatě listu v tabulkovém kalkulátoru, kde v řádcích mohou být záznamy a ve sloupcích jednotlivá data kaţdého záznamu. Hierarchické - tyto modely organizují data do hierarchických stromových strukur pomocí vztahu rodičpotomek. Kaţdý záznam kromě kořene má jeden rodičovský záznam a můţe mít několik potomků. Tímto modelem je moţné popsat např. organizační struktury, číselník diagnóz a podobné situace, které reprezentují vztahy mezi entitami 1:N.
Univerzita Palackého
Ústav normální anatomie
Lékařská fakulta
Přírodovědecká fakulta
...
Ústav lékařské biofyziky
...
Správa kolejí a menz
Centrální zařízení
CVT
Rektorát
...
Obrázek 23 Příklad hierarchické struktury
2.1.4
Síťové - jsou rozšířením hierarchického modelu na síťový. rozdíl je ten, ţe zatímco hierarchický model má tzv. stromovou strukturu s jedním kořenem a větvením a neobsahují např. cykly, vazby mezi prvky síťového modelu mohou být nastaveny mezi libovolnými uzly sítě. Klasickou ukázkou síťové architektury je např. síť Internet, kde jsou uzly (počítače a síťové prvky) pospojovány linkami do sloţité sítě, kde mezi dvěma uzly sítě můţe existovat celá řada cest. Entity síťového modelu mohou být obdobně navzájem provázané. Tento způsob reprezentace dat je pro některé účely přirozený, síťové modely se však špatně implementují, např. síťový měl být i nový souborový systém v systémech Windows Vista - mezitím se objevila nová verze systému Windows 7, která jej rovněţ zatím neobsahuje - důvodem je obtíţná implementace a výkon oproti stávajícímu řešení. Relační - v současnosti komerčně nejpouţívanější databázový model postavený na relační algebře. Prvky systému jsou ukládnány prostřednictvím tabulek (relací) a operace jsou prováděny aparátem relační algebry. Podrobnosti budou vysvětleny níţe. Objektové - snaha orientovat se místo tabulek na prvky objektově orientovaného návrhu a programování, objekty, třídy a pod. V praxi zatím nenašly významnější uplatnění. Objektový návrh a programování jsou v současnosti jedním z nejobvyklejších programovacích technik a mají řadu výhodných vlastností, nicméně i nadále se pro ukládání dat pouţívají relační databáze a objekty se na prvky relačních databází tzv. mapují různými technikami ORM (object-relation mapping).
Databázové modelování
Databázové modelování je expertní disciplínou. Jejím cílem, je vytvoření databázového modelu, který popisuje zjednodušenou verzi reality způsobem vhodným pro databázové zpracování. Modelování je obtíţné a vyţaduje
26
profesionální znalosti nejen informatiky, ale i specifické domény. Pro naše účely bude stačit rozumět pouze několika zákjladním pojmům Entita Databázovou entitou rozumíme pojem datového modelu, který často odpovídá skutečnému nebo abstraktnímu prvku v realitě, kterou tento model postihuje. Např v systému, kde evidujeme pacienty a jejich diagnózy, jsou entitami Pacient, Karta, Záznam, Diagnóza a další, vzávislosti na rozsahu a poţadavcích dané aplikace. Kaţdá entita má své vlastnosti - atributy, které ji definují. Např. entita Pacient má atributy jméno, příjmení, rodné čislo, adresa a další, entita Karta má atributy např. evidenční číslo karty, rodné číslo pacienta, entita Záznam má atributy např. datum záznamu, nález, výsledek vyšetření apod., entita Diagnóza má např. atributy kód diagnózy, popis diagnózy, atd. Průvodce studiem Všimněte si, že zatímco entitám Pacient, Karta a Záznam odpovídají skutečné objekty, Diagnóza je pojem abstraktní. Entitami mohou být jak skutečné, tak abstraktní pojmy.
Vztahy mezi entitami Databázový model obsahuje kromě samotných entit i vzájemné vztahy mezi entitami. Vztah mezi entitami značí, ţe entity jsou ve vzájemném spojení, "vědí o sobě". Moţností, jak propojovat entity jsou 3, podle jejich pouţitého typu hovoříme o vztazích typu 1:1, 1:N a M:N. Vztah 1:1 vyjadřuje naprostou závislost dvou entit A a B na sobě. K jedné entitě A existuje právě jedna entita B. Příklad: Entity Pacient a Karta z výše uvedeného příkladu s pacienty jsou vůči sobě ve vztahu 1:1. Tzn, ţe kaţdý pacient v systému má svou jenu kartu a naopak, kaţdá karta je psaná na jednoho pacienta. Nemůţe se stát, aby pacient měl více karet, nebo více pacientů sdílelo jednu kartu. Vztah 1:N vyjadřuje většinou exkluzivní vlastnictví jedné entity druhou. Pro entity A a B platí, ţe entita A je navázána na větší mnoţství entit typu B, ale entita B je navázána na pouze jednu entitu A. Příklad: Entity Karta a Záznam z výše uvedeného příkladu s pacienty jsou vůči sobě ve vztahu 1:N. V jedné kartě můţe být vedeno více záznamů. Naopak to ovšem neplatí, jeden záznam mlůţe být zapsán pouze v jedné kartě, není moţné aby jeden konkrétní záznam byl v kartách dvou různých pacientů. Vztah M:N je nejsloţitěší. Vyjadřuje obecnou závislost dvou entit bez výše uvedených limitů. Entita A má navázáno libovolné mnoţství entit B, stejně je tomu i naopak. Příklad: Entity Pacient a Diagnóza z výše uvedeného příkladu s pacienty jsou vůči sobě ve vztahu M:N. Je moţné, aby pacient měl diagnostikováno více různých diagnóz. Stejně tak i u diagnóz, je moţné, aby jednou diagnózou trpělo více pacientů.
2.1.5
Základní prvky relační databáze
Realační databáze uţívají velké mnoţství pojmů, nicméně naprosto nejdůleţitější pojem tohoto typu databází je pojem relace, nebo také tabulka. S pojmem relace jste se patrně setkali při výuce matematiky na střední škole. Relační databáze vyuţívají efektivně aparát relační algebry pro definici entit a manipulace s nimi. Z pohledu databázového, je relace uspořádaná entice - záznam, který ukládáme do databázové struktury - tabulky. Kaţdá entita databázového modelu má svou pevně danou tabulku. Definice tabulky je dána definicí jejich sloupců (záhlaví tabulky), které určují vlastnosti jednotlivých prvků záznamu (atributů databázové entity). Jednotlivé záznamy jsou pak ukládány ve formě řádků této tabulky. Struktura tabulky je relativně jednoduchá, nicméně z pohledu uţivatele tabulkového kalkulátoru se tu objevují některé odlišnosti od chápání tabulky v Excelovském smyslu.
27
Předně je v databázové tabulce pevně daný soubor sloupců. Tyto sloupce jsou jednoznačně pojmenovány a nesou s sebou další potřebné informace. Těmito informacemi jsou zejména informace o datovém typu a klíči, případně další doplňkové informace, např. výchozí hodnota nebo popisek pro dokumentační účely. Datovým typem sloupce specifikujeme, jaká data budou v daném sloupci uloţena. Například u sloupců Jméno a Příjmení můţeme předpokládat, ţe datovým typem těchto sloupců bude text, protoţe jak jméno tak příjmení jsou textové hodnoty. Naproti tomu sloupec DatumNarozeni nemusí být textový, ale můţeme vyţadovat, aby byl typu Datum/Čas. U poloţkek Výška a Hmotnost zase můţeme čekat číselné hodnoty, proto bude datový typ číslo s desetinnou čárkou. Datový typ nám tedy určuje, jaký bude charakter dat v tom kterém sloupci. Od příslušného datového typu se pak odvíjejí operace, které je moţné se sloupcem provádět, např. pokud jsou datové typy číslelné, je moţné přímo provést jednoduché statistické výpočty jako jsou průměr nebo suma, které u textového typu nedávají smysl. Datový typ je také upřesněn svou velikostí, tzn. ţe je moţné u řady datových typů určit, kolik informace je moţné v tomto sloupci uloţit. U číselných hodnot se dá např. určit rozsah číselných hodnot u celých čísel (např. čísla v intervalech 0-255, 0-65535, ...) nebo desetinných čísel (např. číslo s 6 číslicemi z nichţ 2 jsou za desetinou čárkou a podobně). U textových polí je moţné zadat maximální délku platného textu, např. délka křestního jména můţe být omezena na 20 znaků, délka rodného čísla na 11 znaků (včetně lomítka) apod. Touto specifikací omezujeme rozsah dat pro jednotlivé záznamy a je moţné jednoduše vypočíst, kolik bytů bude v paměti zabírat jeden řádek dané tabulky. Něketré datové typy však mají předdefinovanou velikost, např. logická hodnota má vţdy jeden bit, datum a čas mají také pevně specifikovaný počet bytů (skutečná hodnota závisí na SŘBD). Na následujícím obrázku je předvedena definice databázové tabulky Pacienti v prostředí návrháře tabulky v aplikaci MS Access. Pozor, toto nejsou data z tabulky, ale definice záhlaví, v řádcích jsou jednotlivé sloupce záhlaví tabulky Pacienti, jejich jména a datové typy, v dolní polovině je přesnější specifikace datového typu označeného sloupce, v našem případě je nastaveno, ţe kód státu má mít pouze 2 znaky (místo původních 255).
Obrázek 24 Návrh sloupců tabulky Pacienti
V tabulce existuje jeden nebo několik sloupců se zvláštním významem. Tomuto sloupci (někdy téţ sadě sloupců) se říká klíč. Klíčem rozumíme sloupec nebo více sloupců, na základě kterého jsme schopni jednoznačně identifikovat záznam (řádek) v celé tabulce. Aby byla identifikace moţná, musí být daný záznam v klíčovém sloupci pro danou tabulku unikátní, tzn. ţe není moţné, aby byly v tabulce dva či více záznamů se stejnou hodnotou klíče. Ukáţeme si to přehledněji na následujícím příkladu:
28
Máme tuto tabulku pacientů.
Obrázek 25 Tabulka pacienti
Klíčem rozumíme sloupec s hodnotami, které unikátně identifikují celý řádek. Při pohledu na tabulku můţeme z kandidátů na klíč vyloučit přímo sloupce Stat (všechny hodnoty stejné), Pojistovna a Prijmeni (hodnoty se opakují). Další hodnoty jsou v rámci našich dat unikátní, ale ne všechny jsou klíče. Např. Jmeno, Adresa, Mesto, PSC a VEvidenciOd jsou v naší tabulce naplněny unikátními hodnotami, ale dá se předpokládat, ţe v systému budeme potřebovat mít evidováno např. více lidí se jménem Jan, dva různí lidé mohou bydlet na stejné adrese, pravděpodobně bude více lidí ze stejného města (s PSČ) a více lidí bude moţné zaregistrovat v ten samý den. Klíčem tedy rozumíme i taková pole která jsou unikátní nejen v době definice databáze, ale za dobu celé její existence. Z toho vyplývá, ţe zbývají sloupce Id (identifikátor pacienta) a RodneCislo. Rodné číslo, jak je známo, je ukázkovým jednoznačným identifikátorem občana ČR, nemůţe se stát, ţe by se vyskytovaly dvě osoby se stejným rodným číslem a je tedy vhodným kandidátem na klíč. Druhým unikátním identifikátorem je Id. V naší testovací databázi je Id generováno automaticky hodnotami 9,10,11, ... atd. Kaţdý z těchto dvou sloupců můţe být primárním klíčem, klíč v tabulce můţe být pouze jeden. Já jsem při definici této databáze zvolil za primární klíč sloupec Id (RodneCislo je tzv. sekundární, náhradní, klíč). Viz Obrázek 24, kde je sloupec s primárním klíčem Id označen malou ikonkou ţlutého klíče. Primární klíč se pouţívá k zefektivnění přístupu k databázi (indexaci) a také při návrhu vazeb mezi jednotlivými tabuklami. Tabulky jsou uţitečné samy o sobě a skladují se v nich databázové záznamy. Ale tak, jako definujeme vlastnosti jednotlivých sloupců, můţeme definovat i vztahy mezi různými tabulkami. Tyto definice nám pomohou lépe spravovat naše data, např. zajišťují dodatečnou logiku a funkčnost (umoţňují efektivní dotazy přes více tabulek, kontrolují konzistenci záznamů nebo mazání provázaných záznamů apod.) Mezi různými entitami databázového návrhu často existují vztahy a vazby (relationships). Např. pokud máme databázi zdravotní dokumentace pacientů, pak entity Pacient a ZdravotniZaznam budou v nějakém vzájemném vztahu. Např. takovém, ţe ke kaţdému pacientovi vedeme několik zdravotních záznamů, přitom není moţné, aby jeden záznam sdílelo více pacientů. Pokud máme v systému entitu Diagnóza, tak patrně mezi pacientem a diagnózou existuje nějaký vztah (pacient se např. léčí s diagnózou, více pacientů můţe mít stejnou diagnózu, jeden pacient se můţe léčit s více diagnózami), nebo je diagnóza vedena v jeho zdravotním záznamu. Moţností, jak navzájem svazovat entity (tabulky) mezi sebou pomocí vztahů je celá řada, záleţí na potřebách zvolené aplikace a jejího databázového modelu.
2.1.6
Základní databázové operace
Správa dat a databázového schématu Aby naše databáze obsahovala vůbec nějaká data je nejprve potřeba vytvořit schéma databáze, tzn. vytvořit v systému potřebné tabulky, nadefinovat jejich sloupce a popsat jejich vzájemné vztahy. Tato akce se provádí pomocí speciálních příkazů jazyka SQL, případně pomocí grafických návrhových nástrojů (např. v MS Access), které umoţňují tyto prvky interaktivně navrhnout v komfortním uţivatelském rozhraní bez nutnosti ovládnutí jazyka. Kromě samotného zaloţení databáze a jejího schématu je nutné ji naplnit daty a s těmi dále pracovat. Pro správu dat v tabulkách se pouţívají tři základní operace:
Přidání záznamu (INSERT), které vytváří nový řádek v tabulce a umoţňuje jej naplnit inicializačními daty, např. registrace nové osoby v systému
29
Aktualizace záznamu (UPDATE), která umoţňuje uloţená data změnit (např. změna adresy v případě, ţe se osoba přestěhuje apod.) Ostranění záznamu (DELETE), které ruší databázové záznamy, např. chybně napsaný záznam do karty.
Výše uvedené akce se týkají hrubého datového obsahu databáze. Pro práci s uloţenými daty je nutné zajistit aparát přístupu k datům a jejich zpracování, např. zobrazení podle potřebných kriterií, výpočty, sestavy apod. K těmto akcím se pouţívají dotazovací operace, ketré představíme v následujícícm textu. Projekce (zúžení) dat Projekce neboli zúţení dat je první základní operací nad relační databázovou tabulkou. Tato operace upraví výběr datových sloupců z původní tabulky na po nás vhodné mnoţství a rozvrţení sloupců. Máme-li např. v tabulce nebo pohledu velký počet sloupců (např. můţe jít být několik desítek), z nichţ některé obsahují data, která pro naše účely v tuto chvíli nevyuţijeme, odstarníme z výpisu prostřednictvím projekce. Příklad: Tabulka pacientů má 10 sloupců:
Pro účely našeho příkladu se spokojíme se zjednodušeným výpisem seznamu pacientů, ve kterém uvedeme pouze příjmení, jméno, město a kód pojišťovny:
Všimněte si, ţe kromě sníţení počtu sloupců z deseti na čtyři můţeme měnit i pořadí sloupců (prohozeno pořadí sloupců Jmeno a Prijmeni). V projekci je moţné do výpisu přidávat i další sloupce, které v plůvodní tabulce nebyly, např. sloupce s konstantní hodnotou, nebo hodnotou vypočítanou daným postupem, např. můţeme přidat sloupce VekPacienta nebo Pohlaví, které vypočítáme z rodného čísla. Selekce (výběr) dat Selekce, neboli výběr, vyhledávání či filtr, je asi nejpouţívanější databázovou operací. Slouţí k vyhledávání záznamů na základě daných kriterií. Podobně jako výše zmíněná projekce opět vede k redukci dat, v tomto případě však ke sníţení počtu řádků. Výběr jako takový se nevztahuje pouze na relační databáze, ale jeho princip je přítomen ve valné většíně aplikací pracujících s daty: ve vyhledávání informací či stránek na internetu, kontaktů v mobilním telefonu, nebo při čtení a třídění pošty a nepřeberné spoustě dalších programů. Jak selekce funguje: pro kaţdý výběr musíme mít stanovenou podmínku (tzv. predikát), pomocí kterého je databázový systém schopen u kaţdého řádku rozhodnout, jestli je tato podmínka splněna či nikoli. Např. pokud je podmínka, aby příjmení pacienta začínalo písmenem N, je tato podmínka splněna pro řádek obsahující pacienty
30
Nantla, Nevrlého, Nováka, Novotného, apod, ale není splněna pro řádky s pacienty Absolon, Blaţková, Horák, Ivanová, Ţiţka. Podmínkou (filtrem) prošly pouze z prvně uvedené skupiny a jsou zařazeny do výsledného výpisu. Podmínek určujících výběr můţe existovat celá řada. Většinou se odvozují od svého datového typu, např. textové typy mají jinou škálu podmínek neţ číselné nebo typy pro uloţení data a času. Mohou být jednoduché, např rovnost či nerovnost hodnoty nějakého sloupce se zadanou hodnotou, nebo komplexní - vypočtené pomocí dané matematické funkce. Podmínky je moţné spojovat pomocí logických operátorů (a, nebo, negace, apod.) do často velmi komplikovaných struktur. Např. je moţné vybrat všechny pacienty Nováky z Prahy (hodota ve sloupci Prijmeni se rovná textu "Novák" a zároveň hodnota sloupce Mesto se rovná textu "Praha" ). Nebo je moţné vybrat všechny pacienty z Prahy a Olomouce (hodnota ve sloupci Mesto se rovná textu "Praha" nebo hodnota ve sloupci Mesto se rovná textu "Olomouc"). Moţností vţběrových funkcí je nepřeberné mnoţství, záleţí pochopitelně na potřebě té které aplikace. Příklad: Původní tabulka s daty pacientů:
Nejprve budeme filtrovat seznam všech pacientů se jménem "Novák". V návrhovém rozhraní tvorby dotazu zvolíme sloupec, operátor a hodnotu, pro kterou se má výběr provést. Kritérium nastavíme na rovnost textu "Novák".
Výsledný výběr řádků poprovedení výběrového dotazu vypadá následovně:
Dotazem prošly 3 řádky se záznamy. Pokud bychom chtěli najít všechny Nováky pojištěné u pojišťovny 201 můţeme pouţít spojení logickou spojkou AND. Druhým kriteriem pro sloupec pojistovna je rovnost číslu 201.
Výsledek selekce jsou potom dva řádky, výběrem neprošl řádek s pojišťovnou č. 217.
31
Selekce je také hojně pouţívána v programech poskytujících uţivatelské rozhraní pro práci s tabulkovými daty (tabulkové kalkulátory jako je např. MS Excel a pod.), kde je moţné pohodlně filtrovat hodnoty v tabulce podle zvolených sloupcových filtrů na základě hodnot ve sloupci nebo sloţitějších funkcí. Na následujícím obrázku je ukázka sešitu aplikace Excel se zapnutým menu filtrování sloupce Prijmeni a rozbaleným podmenu s textovými filtry.
Obrázek 26 Filtry a aplikaci Excel
Uspořádání Další obvyklou akcí týkající se databázových operací je změna uspořádání seznamu poleţek, také zvané třídění záznamů. Klasickou ukázkou jsou např. abecední třídění seznamu pacientů, nebo vzestupné nebo sestupné uspořádání číselných hodnot nebo hodnot typu datumu a času. Příklad: Na následující tabulce jsou setříděny záznamy podle sloupce Prijmeni.
32
Třídit záznamy je moţné a obvykle se to děje podle více sloupců. Např. adresář s kontakty je vhodné nejprve setřídit podle příjmení. V případě, ţe adresář obsahuje více poloţek stejného příjmení (např. několik Nováků) je vhodné dotřídit záznamy podle dalšího kriteria, např. křestního jména. Pokud ani to nestačí, můţeme pokračovat adresou a tak dále. Příklad: Abychom dosáhli lepšího třídění i podle křestního jména, můţeme rozšířit třídění o další sloupec. Jako primární sloupec pro třídění budeme i nadále brát příjmení, v případě shody příjmení se bude brát v potaz křestní jméno. V aplikaci Excel se dá další úroveň třídění nastavit takto:
Obrázek 27 Víceúrovňové třídění v Excelu
Takto setříděná tabulka vypadá následovně:
Operace třídění je běţně pouţívaná i v tabulkových kalkulátorech a ty obsahují grafické uţivatelské rozhraní pro setřídění tabulky. Také např. ve vyhledávačích jsou výsledky setříděny podle určité relevance a teprve poté zobrazeny uţivateli. Agregace Databázové operace se netýkají pouze zpřehlednění a redukce velkého mnoţství záznamů. Kromě toho dokáţí provádět i určité výpočty nad těmito daty. K vestavěným typům výpočtu patří základní statistické přehledy nad číselnými daty ve sloupcích. Např. je moţné vytvořit sumu (SUM) nebo průměrnou hodnotu (AVG) všech záznamů v daném sloupci nad daným výběrem dat. Případně najít hodnoty největší a nejmenší a další moţnosti. 33
Příklad: Nejdéle registrovaný pacient v systému je:
Obrázek 28 Nejdéle registrovaný pacient systému
Jinými slovy se jedná o pacienta, jehoţ datum registrace (VEvidenciOd) je nejniţsí.
Průvodce studiem Tato operace je v grafickém návrháři obtížně realizovatelná, uplatní se tedy dotazovací jazyk SQL. Protože je jazyk SQL nad rámec tohoto textu, jen pro zajímavost vložím malou ukázku. Ten, kdo umí aknglicky zjistí, že struktura jazyka je angličtině docela podobná a text lze téměř normálně číst: SELECT * FROM Pacienti where VEvidenciOd = ( SELECT MIN(VEvidenciOd) FROM Pacienti) Jedná se vlastně o dva dotazy, ten v pořadí hledá nejnižší hodnotu sloupce VEvidenciOd a první dotaz vybírá řádek, jehož hodnota sloupce VEvidenciOd odpovídá nalezenému minimu z dfruhého dotazu.
Další oblíbenou agregační operací je také získání počtu poloţek v daném výběru (COUNT). Například zobrazení počtu pacientů registrovaných u pojišťovny 201: Tento dotaz je nejjednodušší vyjádřit přímo v jazyce SQL: SELECT Count(*) AS Pocet FROM Pacienti WHERE ((Pacienti.[Pojistovna])=201);
Výsledkem je pak číslo 3, odpovídající počtu pacientů dle daného kritéria.
Kombinace databázových operací Výše uvedené základní operace jsou na sobě nezávislé. Z toho plyně, ţe tyto operace je moţné navzájem kombinovat do sloţitějšího výsledku. V praxi to znamená, ţe obvykle dochází u naprosté většiny dat alespoň k základní projekci, selekci a třídění zároveň. Navíc je moţné provádět některé z těchto operací (např. projekci a selekci) na datech opakovaně. Tzn. stále upřesňovat jiţ jednou dotázaná data.
34
Shrnutí V této části jsme se seznámili se základy zpracování dat pomocí databázových systémů. Vysvětlili jsme si základní pojem Systém pro řízení báze dat a představili některé databázové modely. Jako nejdůleţitější jsme si zvolili relační model, kde jsme si ukázali jeho základní stavební bloky - tabulky. Na konci kapitoly jsme si představili základní databázové operace pro projekci, výběr a uspořádání záznamů slouţících při dotazování do databázových dat. Pojmy k zapamatování
Databáze Systém pro řízení báze dat Relační databáze Entita, atribut, vztah mezi entitami Tabulka, slupec, záznam Primární klíč Projekce, Selekce, Uspořádání
Kontrolní otázky 1. Který databázový model je obecnější: hierarchický nebo síťový? 2. Jaký je vztah mezi databází a systémem pro řízení báze dat? 3. Dokázali byste vysvětlit na příkladu rozdíl mezi vztahem 1:N a M:N? Cvičení 1. V tabulce Pacienti v textu pouţíváme jako primární klíč číselný identifikátor. Který další sloupec nebo kombinaci sloupců bychom mohli pouţít místo něj? 2. Zamyslete se nad tím, jak by dopadl výsledek dotazu z příkaldu s vyhledáním nejdéle registrovaného pacienta v případě, ţe by bylo v tabulce více pacientů registrovaných v ten samý den (2.2.2002). Úkoly k textu 1. Pokuste se v aplikaci Excel vytvořit jednoduchou tabulku pacientů a samostatně vyzkoušet operace selekce (filtr) uspořádání. 2. Pokuste se v aplikaci MS Access (pokud ji máte k dispozici) vytvořit sami databázi s jednou tabulkou.
Řešení 1. Ze zadání vyplývá, ţe klíč musí být unikátní pro kaţdý záznam v tabulce. V úvahu proto přichází pouze sloupec Id, který je jiţ vyuţit jako primární klíč a sloupec RodneCislo, které je unikátní pro všechny občany ČR. 2. Pokud byb bylo více pacientů registrováno ve stejný den, jehoţ datum je zároveň minimální hodnotou ve sloupci VEvidenciOd bude se dotaz chovat celkem očekávaně, tzn. ţe zobrazí výpis obsahující více pacientů, tolik, kolij je stejných hodnot sloupce VEvidenciOd.
35
Seznam literatury [1] Ţára, J., kol.: Počítačová grafika-principy a algoritmy, Grada, 1992, ISBN 80-85623-00-5 [2] Ţára, J., kol.: Moderní počítačová grafika, Computer press 1998 [3] Hlaváč, V., Šonka, M.: Počítačové vidění, Grada, 1993, ISBN 80-85424-67-3
36
Seznam obrázků Obrázek 1 Kvantování reálných hodnot
3
Obrázek 2 Přesnější kvantizace
3
Obrázek 3 Rastr
8
Obrázek 4 Barevný originál 24 bpp
2
Obrázek 5 Šedotónový obraz 8 bpp
3
Obrázek 6 Dvouúrovňový černobílý obraz 1 bpp
3
Obrázek 7 Histogram obrazu
4
Obrázek 8 Operace posunutí obrazu
5
Obrázek 9 Operace oříznutí obrazu
6
Obrázek 10 Operace zmenšení a zvětšení obrazu
6
Obrázek 11 Pravidelná struktura pro ukázku aliasu
7
Obrázek 12 Alias na pravidelné struktuře při zmenšení na 60, 45 a 26%
7
Obrázek 13 Ukázka nelineární obrazové transformace Twirl
8
Obrázek 14 Převodní křivka v programu Paint.NET
10
Obrázek 15 Ukázka vlivu převodní charakteristiky na obraz
11
Obrázek 16 Ukázka úpravy jasu v obraze
12
Obrázek 17 Ukázka úpravy kontrastu v obraze
13
Obrázek 18 Histogram před ekvalizací
14
Obrázek 19 Histogram před ekvalizaci
14
Obrázek 20 Míchání základních barev v modelu RGB
17
Obrázek 21 Ukázka nastavení barevných komponent pro vybrané barvy v 24 bpp
18
Obrázek 22 CIE chomatický diagram s vyznačenými primárními barvami
19
Obrázek 23 Příklad hierarchické struktury
26
Obrázek 24 Návrh sloupců tabulky Pacienti
28
Obrázek 25 Tabulka pacienti
29
Obrázek 26 Filtry a aplikaci Excel
32
Obrázek 27 Víceúrovňové třídění v Excelu
33
Obrázek 28 Nejdéle registrovaný pacient systému
34
37
Seznam tabulek Tabulka 1 Ukázka kódování krevních skupin pomocí 2 bitů .......................................................................................2 Tabulka 2 Ukázka kódování krevních skupin s Rh faktorem pomocí 3 bitů ................................................................2 Tabulka 3 Rozlišení standardní ....................................................................................................................................2 Tabulka 4 Rozlišení širokoúhlá ....................................................................................................................................2 Tabulka 5 Celočíselné hloubky obrazu.........................................................................................................................3 Tabulka 6 RGB hodnoty některých typů barev ve 24bpp ..........................................................................................18
38
39