Poznámky z 5. prezentace z UPG
This commit is contained in:
parent
60c4fa93ae
commit
8e774fefd0
1 changed files with 120 additions and 0 deletions
120
KIV UPG/05. Pokročilá bitmapová grafika.md
Normal file
120
KIV UPG/05. Pokročilá bitmapová grafika.md
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
# 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, že $f(0)$ = první pixel, $f(1)$ = druhý
|
||||||
|
- stanovit hodnoty $f(0.25), f(0.5)$ a $f(0.75)$
|
||||||
|
- vhodné zejména pro větší zvětšení
|
||||||
|
- lépe zachovává hrany
|
||||||
|
- podstatně pomalejší
|
||||||
|
|
||||||
|
**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 vzoru
|
||||||
|
- $f_{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í
|
Loading…
Reference in a new issue