4.3 KiB
4.3 KiB
Pokročilá bitmapová grafika
Změna měřítka
- změna velikosti = změna počtu pixelů
- obvykle změna na ose x a y
Princip
- stanovit hodnoty v nových bodech
- výsledek by měl být stejný, jako bychom původní signál vzorkovali s tímto rozlišením
- zvětšení 4x metodou nejbližšího souseda
- nejjednodušší, nejrychlejší
- obvykle nevhodné
- zvětšení 4x metodou (bi)lineární interpolace
- jednoduché a rychlé
- stardardní volba pro většinu grafických knihoven
- vhodné jen pro malá zvětšení
- zvětšení 4x metodou (bi)kubické interpolace
- pro každou dvojici sousedních pixelů najít kubickou funkci
f(t)
takovou, žef(0)
= první pixel,f(1)
= druhý - stanovit hodnoty
f(0.25), f(0.5)
af(0.75)
- vhodné zejména pro větší zvětšení
- lépe zachovává hrany
- podstatně pomalejší
- pro každou dvojici sousedních pixelů najít kubickou funkci
Zvětšení kx
- k je reálné číslo > 1
Zmenšení kx
- k je reálné číslo z (1, 2)
- k je reálné číslo >= 2 - problém s kvalitou všech tří metod
Zmenšení 2x metodou nejbližšího souseda
- jedná se o princip vzorkování
- každý druhý pixel vynechá
- nejjednodušší možné
- použitelné v praxi pro velmi rychlé náhledy
Aliasing
- vzniká při vzorkování obrazu s opakujícím se vzorem, pokud vzorkovací frekvence
f_{s}
je srovnatelná s frekvencíf_{p}
opakování vzoru f_{s} = 1 /
vzdálenost středů sousedních pixelůf_{p} = 1 /
vzdálenost začátků opakovaného vzoruf_{s} > 2f_{p} \to
frekvence již nejsou srovnatelné
- úplné odstranění prakticky nemožné
- potlačení (anti-aliasing)
- nebude tolik rušivý
- metoda tzv. super-samplingu
- relativně rychlé
- ClearType
- využívá znalostí rozložení R, G, B prvků displeje
- mění barvu krajních pixelů pro dosažení průměrování
Mip-maping
- technika pro zobrazování velkých obrázků na různé úrovni přiblížení
- obrázek bývá rozřezán na rozumně velké bloky (např. 256x256 px)
- bloky jsou zmenšeny na různé rozměry
- lze použít náročné metody díky využití pre-procesingu
- při zobrazení je možno
- vybrat nejvhodnější vygenerované rozlišení a jeho výřez zobrazit
- vybrat nejvhodnější vyšší rozlišení a změnit jeho měřítko tak, aby to vyhovovalo požadavkům
Konvoluční filtrování
- používá se např. pro
- rozmazání obrázku pro eliminaci šumu (Gaussovský filtr)
- detekce hran v obrázku
- vytvoření vrženého stínu
- obdoba bilineární filtrace
- žádné pixely nezahazujeme
Kreslení do bitmapy
- doplnění popisků, anotace, ...
Manuální
- programátor mění obsah jednotlivých pixelů bitmapy
- např. rozpoznání obrazu či přebarvení obrázku
Automatické
- nad bitmapou se vytvoří grafický kontext
- kreslí se do grafického kontextu voláním obvyklých metod
- např. doplnění vektorové grafiky do obrázku (popisky, křivky silnic, šipky, ...)
- klíčové pro tzv. double-buffering
Double buffering
- místo kreslení rovnou na obrazovku kreslíme do bitmapy o stejné velikosti
- výsledek se poté zobrazí na obrazovku (1:1)
- pomalejší, ale nezbytné pro animace
Vodoznak
- nejčastěji pro účely copyrightu
- může být viditelný (neměl by jít snadno retušovat)
- může být neviditelný
- obrázek není viditelně poškozen
- data vodoznaku skryta (modifikují se barvy pixelů)
- používají se různé algoritmy
- autor může dokázat, že se jedná o jeho obrázek
- možno použít i pro ověření pravosti dat
Alfa kanál
- doplňuje barevnou informaci (např. RGB) o to, zda pixel je průhledný (0) či nikoliv (1)
- částečná průhlednost = hodnota z intervalu 0.0 - 1.0
- v praxi nejčastěji ukládán do 8 bitů (256 úrovní)
- umožňuje snazší spojení dvou bitmap do sebe
Vrstvy
- výsledný obraz vznikne složením obrázků přes sebe
- vrstvy lze ukládat/načítat oddělené
Alfa kompozice
- vrstvy se skládají na základě informace o průhlednosti (tzv. alfa)
- může být specifikována pro celý obrázek nebo zvlášť pro jednotlivé pixely
Maximum (lighten)
- černá = pozadí
- bílá = to, co má být vidět
Minimum (darken)
- opak maxima
Multiply
- lokální ztmavení obrázku X a Y určuje míru ztmavení