From 8e774fefd052f5c056e63b30b461afb3c1641c56 Mon Sep 17 00:00:00 2001 From: Filip Znachor Date: Wed, 24 May 2023 21:14:43 +0200 Subject: [PATCH] =?UTF-8?q?Pozn=C3=A1mky=20z=205.=20prezentace=20z=20UPG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KIV UPG/05. Pokročilá bitmapová grafika.md | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 KIV UPG/05. Pokročilá bitmapová grafika.md diff --git a/KIV UPG/05. Pokročilá bitmapová grafika.md b/KIV UPG/05. Pokročilá bitmapová grafika.md new file mode 100644 index 0000000..55108dd --- /dev/null +++ b/KIV UPG/05. Pokročilá bitmapová grafika.md @@ -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í \ No newline at end of file