Syntax highlighting of Archiv/2D počítačová grafika, komprese obrazu a videa

== Rozsah látky ==
Seznam [http://www.mff.cuni.cz/studium/bcmgr/ok/i3b52.htm oficiálních] státnicových otázek:
: Výstupní grafická zařízení, plošné útvary - jejich reprezentace a množinové operace s nimi, kreslicí a ořezávací algoritmy v rovině, anti-aliasing, barevné vidění a barevné systémy, reprodukce barevné grafiky, rozptylování a půltónování, kompozice poloprůhledných obrázků, geometrické deformace rastrových obrázků, morphing, základní principy komprese rastrové 2D grafiky, skalární a vektorové kvantování, prediktivní komprese, transformační kompresní metody, hierarchické a progresivní metody, waveletové transformace a jejich celočíselné implementace, kódování koeficientů, komprese videosignálu, časová predikce - kompenzace pohybu, standardy JPEG a MPEG, snímání obrazu v digitální fotografii.

== Výstupní grafická zařízení ==
* podľa trvanlivosti zobrazenia
** zobrazovacie zariadenie (display, projector)
** tiskové zariadenia (tiskárna, plotter, osvitová jednotka)

* podle barevných schopností
** Č/B zobrazenie (2 barvy)
** monochromaticke zobrazení (256 odstínů šedi)
** Barevná paleta (pevná nebo nahrávaná: 16-1024)
** plná barevnost ("true-color" - maximální barevné využití zobrazovací technologie: 16.7 mil. i více)

* rastrový/vektorový výstup
** rastrový
*** jsou přímo adresovány jednotlivé pixely
*** data jsou závislá na rozlišení (a nelze je jednoduše škálovat)
** vektorový
*** zobrazují se přímo složitější objekty (čáry, křivky, písmo)
*** data nejsou závislá na rozlišení (lze je škálovat až v zobrazovacom zařízení)

* podla technologie výstupu:
** vektorový výstup (staré displeje, plotter, některé osvitové je dnotky)
** rastrový výstup (displje, tiskárny)

* podle komunikace:
** vektorové zařízení (urychlované video-adaptéry, plottery, PostScript)
** rastrové zařízení (bežné video-adaptéry, tiskárny v grafickém režimu)

== Plošné útvary - jejich reprezentace a množinové operace s nimi ==

== Kreslicí a ořezávací algoritmy v rovině ==

=== Kreslení ===
==== Kreslení čar ====
* Kreslení čáry - DDA algoritmus (celočíselní)
** vyhoda - snadná implementace
** nevýhody - nutno počítat s velkou přesností (real, fixed point), jedno dělení, v cyklu zaokrouhlování

  input: x_1, x_2, y_1, y_2, color : integer
  1. <math>x=x_1, y=y_1</math>
  2. <math>dx=1; dy=\frac{y_2 - y_1}{x_2, x_1}</math> ''(předpokládáme |y_2 - y_1| < |x2-x1|)''
  3. while (x<=x_2) <math>x_{n+1}=x_n+dx, y_{n+1}=y_n+dy</math>; PutPixel(x, round(y), color);

* Kreslení čáry - Bresenhamův algoritmus
** vyhody - rychlost, iba nasobenie a ščítaní, dá se implementovat bez if-ů

* Kreslení kružnica - Bresenhamův algoritmus
** kreslí se jen <math>\frac{1}{8}</math> kružnice (tj. while y>x) - zbytek se řeší symetrií

==== Odvození Bresenhamových algoritmů ====
* Rozkreslení pixelů, jejich polovin
* Určení základních vztahů pro dané tvary
** Úsečka - <math>E'=E-\frac{dy}{dx}<=M=\frac{1}{2}</math>
** Kružnice - <math>F(M)=M_x^2+M_y^2-R^2 > 0 </math>
** Elipsa - kreslí se po čtvrtinách, pozor, od chvíle, kdy dy=dx se posouvá v každém kroku y a ne x!!!
*** <math> F(M)=b^2M_x^2+a^2M_y^2-a^2b^2 > 0 </math>
* Odstranění zlomků, odvození inkrementů(resp. dekrementů)

==== Vyplňování n-úhelníka ====
* Seznam hran, dy, dxy (změna x při změně y o 1)
* Hrany orientované shora dolů, setříděné podle y, x, dxy
* Udržuje se seznam aktivních hran při vyplňování
* Zjednodušeně se vyplňují jen liché body

==== Vyplňování souvislé oblasti ====
Více druhů:
* Hraniční
* Stejné barvy (záplavové)
* 4-souvislé, 8-souvislé

Lépe využít frontu než zásobník - menší spotřeba paměti.

Řádkový algoritmus

==== Kreslení písma ====

Písmo zadáno dvěma různými způsoby:
* Vektorově
** Pomocí úseček, oblouků, kružnic,...
** Snadné neprofesionální škálování
** Při kreslení je nutno resterizovat
* Rastrově
** Zadáno v bitmapě
** Snadné vykreslení pomocí BitBlt
** Při vykreslování vhodné využití vzoru Flyweight

=== Ořezávání ===

== Anti-aliasing ==

=== Alias ===

Alias vzniká při rekonstrukci vzorkovaného singálu. Jedná se o dodatečnou (nežádanou) nízkofrekvenční informaci, která vzniká ve dvou případech:

1. Pokud je původní funkce frekvenčně neomezená - neexistuje maximální frekvence. => při diskrétním zobrazení spojité funkce nikdy nedostaneme přesnou reprezentaci.
2. Pokud je původní funkce frekvenčně omezená, tj. pokud existuje v jejím Fourierovském spektru maximální frekvence fmax. Pokud se taková funkce vzorkuje s frekvencí menší než tzv. Nyquistův limit -> fnyq = 2*fmax, vzniká alias.

Typický příklad - vykreslování šachovnice.

=== Antialiasing ===

Problém aliasu se typicky řeší supersamplingem - převzorkováním na vyšší rozlišení a následným průměrováním hodnot. Nevýhodou je ztráta informace u vysokofrekvenčních částí - ostré hrany se rozmažou.

* Pravidelné vzorkování - jen přenese problém o řád dál
* Stochastické vzorkování - problém se řeší umělým přidáním šumu
** Poison disc
** Jittering (roztřesení)
** N-věží

== Barevné vidění a barevné systémy, reprodukce barevné grafiky ==

=== Barevné vidění ===
oko - rohovka, duhovka, panenka, čočka, sklivec, sítnice. Žlutá skvrna

Tyčinky - intenzita světla - vnímání kontrastů, vidění za šera, v oku cca 120e6

Čípky - tři typy (r, g, b) - vnímání barev, soustředěny ve slepé skvrně, v oku cca 8e6

=== Barevné systémy ===
* RGB
* CMY(K) = 1 - RGB
* HSV (barvy na šestibokém jehlanu), HLS (barvy na dvou kuželech)
** převod není prosté zobrazení, používá se algoritmus. viz Pelikánovy slidy
* <math>YC_bC_r</math> - používán při kódování JPEG
** <math>Y = 0.3*R + 0.6*G + 0.1*B</math>
** <math>C_b = 0.56*(B-Y)</math>
** <math>C_r = 0.71*(R-Y)</math>

=== Reprodukce barevné grafiky ===

Pokud někdo tušíte, co spadá pod tuhle otázku, prosím doplňte.

== Rozptylování a půltónování ==

== Kompozice poloprůhledných obrázků ==

== Geometrické deformace rastrových obrázků ==

== Morphing ==

== Základní principy komprese rastrové 2D grafiky ==

== Skalární a vektorové kvantování ==

== Prediktivní komprese ==

== Transformační kompresní metody ==

== Hierarchické a progresivní metody ==

== Waveletové transformace a jejich celočíselné implementace ==

[http://faculty.gvsu.edu/aboufade/web/wavelets/student_work/EF/how-works.html Jak funguje JPEG 2000]

== Kódování koeficientů ==

== Komprese videosignálu, časová predikce - kompenzace pohybu ==

== Standardy JPEG a MPEG ==

[http://en.wikipedia.org/wiki/MPEG-1 MPEG-1];
[http://en.wikipedia.org/wiki/MPEG-2 MPEG-2];
[http://en.wikipedia.org/wiki/MPEG-3 MPEG-3];
[http://en.wikipedia.org/wiki/MPEG-4 MPEG-4];

[http://en.wikipedia.org/wiki/Chroma_subsampling Chroma subsampling]

[http://en.wikipedia.org/wiki/Macroblock Macroblock]

== Snímání obrazu v digitální fotografii ==

[[Category: Státnice Informatika Mgr.]]