13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody interpolace, které se používají při změně velikosti rastrového obrázku. Mezi základní práce s rastrovým obrázkem patří vytvoření a zobrazení jeho histogramu, úprava jasu, kontrastu, vytvoření negativu, aplikování vybraného filtru, převod na odstíny šedé a další. Tento blok se rovněž bude zabývat barvami a jejich jednotlivými kanály, barevným modelem a prostorem, vytvořením a použitím základních standardních i adaptivních palet.
Doba nutná k nastudování
4-5 hodin
Průvodce studiem Při studiu tohoto bloku se předpokládá, že student je seznámen se základy reprezentace rastrového obrazu, zná základní možnosti pro popis barev (barevný model), umí přistupovat k jednotlivým pixelům rastrového obrázku a je schopen pracovat s barvami jednotlivých pixelů stejně tak i s barevnými kanály.
13.1 Pixel a jeho barva Jak bylo uvedeno v předchozích blocích, jednotlivé barvy použité v konkrétním rastrovém obrázku jsou součástí určitého barevného prostoru. Samotný barevný prostor je popsán vybraným barevným modelem. Ten umožňuje definovat pomocí jednotlivých proměnných daného modelu (tzv. kanály) všechny barvy daného barevného prostoru. Jak již bylo rovněž uvedeno, rastrový obrázek je tvořen jednotlivými pixely, které jsou uspořádány do řádků a sloupců. To znamená, že celý rastrový obraz je tvořen jakousi maticí pixelů. Každý pixel nese informaci o barvě daného obrazového bodu. A vzhledem k úvodní informaci o barevném prostoru je zřejmé, že barva každého KST/IPOGR Počítačová grafika
1-1
Petr Veselý KST FEI Univerzita Pardubice
jednotlivého pixelu může nabývat libovolnou hodnotu z barevného prostoru, který je rastrovému obrázku přiřazen. Veškeré úpravy rastrového obrazu jsou ve svém principu založeny a změně barevné informace u jednotlivých pixelů obrázku. Tento princip je jistě zřejmý u úprav, jako je převod na odstíny šedé, změna jasu, změna kontrastu, atd. Všechny vyjmenované úpravy mají jedno společné. Během těchto úprav se nemění počet obrazových bodů, jen se upravuje jejich barva. Nicméně popsaný princip platí i pro úpravy, kde dochází ke změně počtu pixelů, např. otočení změna velikosti pomocí interpolace atd. Zde ovšem samotné změně barev předchází vytvoření co do velikosti příslušně upravené kopii původního obrázku a následně je jednotlivých pixelů vytvořené kopie nastavována odpovídající barva, v závislosti na použitém algoritmu. 13.1.1 Přístup k barvě pixelu V následující ukázce je naznačen přístup k jednotlivým barevným složkám barvy pixelu. Barva pixelu je instance třídy Color. Pomocí jejích metod případně pomocí přístupu k jednotlivým bajtům pomocí operátoru SHR je možné získat hodnotu jednotlivých barevných kanálů R, G, B a A. Kanál A představuje průhlednost dané barvy.
Obrázek 1: Kódování jednotlivých barev v proměnné typu int
Color c = new Color (255, 0, 128); int r = c.getRed(); int g = c.getGreen(); int b = c.getBlue(); String rgb = Integer.toHexString(c.getRGB()); rgb = rgb.substring(2, rgb.length()); int i = c.getRGB();// v hexa AARRGGB // AA standardně nastaveno na 0xFF r = (i & 0xFF0000) >> 16; g = (i & 0xFF00) >> 8; b = i & 0xFF; KST/IPOGR Počítačová grafika
1-2
Petr Veselý KST FEI Univerzita Pardubice
Důležité upozornění: Grafické knihovny některých vývojových nástrojů skládají RGB kanály opačně (např. Delphi).
13.2 Geometrické transformace Geometrické transformace u rastrového obrázku představují především jeho otočení. V případě otáčení dochází v podstatě k transformacím souřadnic jednotlivých pixelů. V případě otočení o úhel, který je násobkem 90°, se jedná o bezeztrátový celočíselný algoritmus. To znamená, že originální i transformované souřadnice jsou celá čísla a operace je vratná beze ztráty jakékoliv informace. V případě otočení o volný reálný úhel se jedná o operaci, při které dochází k přepočítávání polohy pixelu pomocí vztahů pro transformace otočení, jejímž výsledkem je reálná hodnota, kterou je třeba před použitím zaokrouhlit. Dochází ke změně rozměrů obrázku (v ojedinělých případech zůstává rozměr stejný) Pro geometrické transformace rastrového obrazu se používá mapování dopředné – prochází se pixely původního rastru a určuje se barva a poloha pixelu ve výsledném rastru zpětné – pro pixely výsledného rastru se hledají odpovídající pixely v původním rastru (většinou reálná hodnota). Vybranou metodou (volba se promítne do kvality) se určí barva výsledného pixel dle sousedů původním rastru. Při dopředném mapování mohou vznikat prázdná místa ve výsledném rastru, které je potřeba nalézt a určit jejich barvu z vyplněných sousedů.
KST/IPOGR Počítačová grafika
1-3
Petr Veselý KST FEI Univerzita Pardubice
Obrázek 2: Vznik děr v závislosti na úhlu otočení
Rovněž je třeba správě určit rozměry výsledného obrázku jako pravoúhelníkové ohraničení. Vztah pro novou velikost lse obecně zapsat jako:
( š ' , v' ) f ( š , v, )
Obrázek 3: Otočení obrázku
13.3 Změna velikosti Změna velikosti je jednou z nejčastěji používaných operací. KST/IPOGR Počítačová grafika
1-4
Petr Veselý KST FEI Univerzita Pardubice
Princip: převzorkování – převedení diskrétního signálu na spojitý a provedení nového vzorkování Interpolace nejbližším sousedem novyRozmer = staryRozmer * koefZmeny Pokud je koeficient zvětšení (zmenšení) k celé číslo, potom každý pixel zopakuji k-krát (kreslí se pouze každý k-tý řádek). Pro reálný poměr se určí nový rozměr a pro každý pixel v novém rozměru určím nejbližšího souseda v původním obrázku.
1
2
3
4
5
Obrázek 4: Porovnání dvou principů interpolace nejbližším sousedem při poměru 12/5
Lineární interpolace (bilineární) určí hodnoty f(x), pokud znám f(x0) a f(x1) pro x0 < x < x1. Bilineární interpolaci získáme postupnou aplikací lineární interpolace v obou směrech
x x0 f ( x) f X 0 ( f X 1 f X 0 ) x1 x0
Obrázek 5: Princip lineární interpolace
KST/IPOGR Počítačová grafika
1-5
Petr Veselý KST FEI Univerzita Pardubice
Kubická interpolace (bikubická) využívá vytvoření splajnové kubické křivky jako závislosti pro výpočet interpolované hodnoty. Umožňuje výpočet libovolného bodu na křivce. Více viz blok 8 – křivky.
Obrázek 6: Princip kubické interpolace
Následující příklad demonstruje interpolaci v ploše. Výpočet lze provádět postupně (dvě interpolace v řádku a následně z vypočítaných hodnot provést interpolaci ve sloupci) nebo jediným výpočtem Barva= (1-n)*((1-m)*Barva1 + m*Barva2) + (n)*((1-m)*Barva3 + m*Barva4) Požadované zvětšení ve směru x-ové osy je 3, ve směru y-ové osy je 2. Pixel [7; 3] v novém rastru je mapován do originálního rastru na pozici [2.33; 1.5] m = 0,333; n = 0.5 Barva se určuje z barev pixelů [2; 1], [3; 1], [2; 2], [3; 2] Barva1 (224, 255, 255) Barva2 (44, 255, 255) BarvaA (164, 255, 255) Barva3 (255, 220, 150) Barva4 (255, 190, 50) BarvaB (255, 210, 100) Výsledek: Barva interpolovaného pixelu (210, 232, 177)
KST/IPOGR Počítačová grafika
1-6
Petr Veselý KST FEI Univerzita Pardubice
Obrázek 7: Ukázka výpočtu lineární interpolace
13.4 Převod na odstíny šedé Převod na odstíny šedé představuje nejjednodušší způsob redukce barev v obraze. Realizuje se postupným přepočtem jasu všech pixelů. Jas pixelu lze vypočítat „zprůměrováním“ hodnot v jednotlivých kanálech. Ovšem vzhledem k tomu, že lidské oko je různě citlivé na jednotlivé barvy (nejvíce na zelenou) je mnohem vhodnější upravit váhy hodnot v jednotlivých kanálech. Jeden z doporučených vztahů je: jas = 0,299*r + 0,587*g + 0,114*b
Pojmy k zapamatování Rastrový obraz, barva pixelu, barevný kanál, interpolace, lineární a kubická interpolace, interpolace nejbližším sousedem, mapování pixelů, dopředné a zpětné mapování
Otázky na procvičení 1. Jak je definován rastrový obraz? 2. Co je to pixel a jakou nese informaci? 3. Jaký je přístup k jednotlivým barevným kanálům v barvě? 4. Jak se realizují geometrické úpravy rastrového obrázku? 5. Jaký je rozdíl mezi dopředným a zpětným mapováním? KST/IPOGR 1-7 Počítačová grafika
Petr Veselý KST FEI Univerzita Pardubice
6. Jakým způsobem se řeší vzniklé „díry“ při geometrických transformacích? 7. Jaké metody znáte pro úpravu velikosti rastrového obrázku?. 8. Co je to histogram? 9. Jaký je rozdíl mezi histogramem barevného obrázku a obrázku v odstínech šedé? 10. Jak se převádí barva na její jas?
Odkazy a další studijní prameny
Žára, J., Beneš, B., Felkel, P. Moderní počítačová grafika. Computer Press, Brno, 1998. ISBN 80-7226-049-9. Foley, Van D. Computer Graphics. Principles and Practice. Addison-Wesley,1991.
KST/IPOGR Počítačová grafika
1-8
Petr Veselý KST FEI Univerzita Pardubice