Table of Contents

Vnímání barev a barevné modely. Rastrová grafika, základní rastrové formáty souborů. Vektorová grafika, reprezentace 2D a 3D objektů, základní formáty souborů pro 2D a 3D data. Principy 3D modelování a mapování textur.

B4B39VGO Webové stránky předmětu

1. Vnímání barev

Lidské oko vnímá světlo jako elektromagnetické vlnění v rozsahu přibližně 380 až 720 nm. Každá vlnová délka odpovídá určité vnímané barvě – např. modrá (krátké vlny), zelená (střední), červená (dlouhé). Vjem barvy vzniká v mozku kombinací signálů ze tří typů světločivných buněk – čípků.

1. Tvorba barevného vjemu v lidském oku

Struktura oka a sítnice

Světlo a barva

Metamerismus

2. Kolorimetrický experiment

3. Barevné prostory podle CIE

CIE RGB

CIE XYZ

CIE xyY

\[ x = \frac{X}{X + Y + Z},\quad y = \frac{Y}{X + Y + Z},\quad z = \frac{Z}{X + Y + Z} \]

\[ x + y + z = 1 \]

4. Chromatický diagram (CIE 1931)

2. Barevné modely

Barevné modely slouží k reprezentaci barev v digitálních zařízeních (displeje, tiskárny) i při práci s barvami v softwaru. Liší se tím, jakým způsobem skládají barvy (aditivně/subtraktivně) a jak jsou pro uživatele intuitivní.

1. Aditivní a subtraktivní skládání

2. Modely založené na primárních barvách

RGB model
CMY(K) model

3. Problémy modelů RGB a CMY(K) pro uživatele

4. Abstraktní modely: HSV a HSL

Modely HSV a HSL byly navrženy pro intuitivnější práci s barvami – například při výběru barvy v grafických editorech.

HSV (Hue, Saturation, Value)
HSL (Hue, Saturation, Lightness)

5. Kvantizace barev

3. Rastrová grafika

Rastrová grafika reprezentuje obraz jako mřížku pixelů, kde každý pixel nese informaci o barvě. Vzniká digitalizací spojité obrazové funkce pomocí vzorkování a kvantizace.

1. Digitalizace obrazu

Obraz jako signál

PPI a DPI

2. Vzorkování, aliasing a anti-aliasing

Vzorkování

Antialiasing

3. Kvantizace, polotónování a dithering

Kvantizace barev

Polotónování

Dithering

4. Reprezentace barev

Přímá reprezentace (Direct color)

Indexovaná reprezentace

5. Transformace rastrového obrazu

Problém transformací

Metody transformace

Interpolace při transformaci

6. Komprese rastrových obrázků

Typy komprese

Bezeztrátové metody

Ztrátová metoda – JPEG

Postup JPEG komprese
  1. Převod RGB → YCbCr
    • Jasová složka (Y) se oddělí od barevných složek (Cb, Cr), protože oko je citlivější na jas než na barvu.
  2. Downsampling (podvzorkování)
    • Barevné složky Cb a Cr se zmenší (např. 4:2:0), čímž se ušetří místo – detailní barvy nejsou pro vnímání zásadní.
  3. Rozdělení obrazu na bloky 8×8 pixelů
    • Obraz je segmentován na malé čtverce, což umožňuje lokální frekvenční analýzu.
  4. Diskrétní kosinová transformace (DCT)
    • Každý blok je převeden do frekvenční domény – oddělí se nízkofrekvenční složky (struktura) od vysokofrekvenčních (detaily, šum).
  5. Kvantizace DCT koeficientů
    • Koeficienty se zaokrouhlují podle kvantizační matice – tím se odstraní jemné detaily, které nejsou výrazné pro lidské oko.
  6. Entropické kódování
    • Zbylá data se lineárně uspořádají a dále komprimují kombinací RLE a Huffmanova kódování, čímž se ještě sníží velikost.

7. Formáty rastrových obrázků

GIF (Graphics Interchange Format)

PNG (Portable Network Graphics)

JPEG (Joint Photographic Experts Group)

4. Vektorová grafika a reprezentace 2D objektů

Vektorová grafika popisuje obraz pomocí geometrických útvarů (např. úsečky, křivky, elipsy), nikoliv maticí pixelů. Vektorové objekty lze libovolně zvětšovat bez ztráty kvality, protože se vykreslují dynamicky při každé změně velikosti nebo přiblížení.

Používá se v nástrojích jako Adobe Illustrator, Corel Draw, Flash nebo při práci s formátem SVG (Scalable Vector Graphics).

1. Reprezentace 2D objektů

2. Parametrické polynomiální křivky

Parametrické křivky popisují 2D (či 3D) tvar pomocí funkce bodu \( P(t) \) závislé na parametru \( t \in [0,1] \). Jsou základním nástrojem pro přesnou definici tvaru, animace a transformace.

Rozlišujeme dva typy:

Spojitost segmentů u křivek

Spojitost (continuity) určuje, jak hladce na sebe navazují segmenty složených (piecewise) křivek. Každý segment je sám o sobě plynulý, ale přechody mezi nimi mohou být ostré nebo hladké podle typu spojitosti.

Parametrická spojitost (Cⁿ) – zajišťuje hladkost na základě derivací:

Geometrická spojitost (Gⁿ) – zachovává pouze vizuální hladkost, bez ohledu na velikosti derivací:

Geometrická spojitost je méně striktní než parametrická, ale často dostačující pro vizuální hladkost v praxi (např. v grafice a modelování).

Bézierovy křivky

de Casteljauův algoritmus (pro Bézierovy křivky)

B-spline křivky

NURBS (Non-Uniform Rational B-Spline)

de Boorův algoritmus (pro B-spline a NURBS křivky)

Postup výpočtu bodu:

  1. Najdi interval uzlového vektoru \( u_i \leq u < u_{i+1} \), kam parametr \( u \) spadá.
  2. Aplikuj opakované zprůměrovávání kontrolních bodů mezi uzly (rekurze přes stupně).
  3. Výsledkem je bod \( d^{n-r}_{i-r+1}(u) \) na křivce.

3. Rendering parametrických křivek

Parametrické křivky se nevykreslují jako celek, ale aproximují se pomocí úseček. K tomu se používá princip rekurzivního dělení křivky, které zajistí požadovanou přesnost vykreslení.

Rendering probíhá na základě algoritmu vhodného pro daný typ křivky:

  1. Zhodnocení velikosti segmentu
    • U Bézierových křivek se například kontroluje plocha konvexního obalu (např. čtyřúhelník daný kontrolními body).
    • Pokud je oblast menší než určitý práh (threshold), segment se vykreslí jako úsečka mezi krajními body.
  2. Dělení křivky na menší segmenty
    • Pokud není segment dostatečně „malý“, křivka se rozdělí na dvě části (např. v bodě \( t = 0{,}5 \)) a proces se aplikuje rekurzivně na každou z nich.
    • U racionálních křivek probíhá dělení v homogenních souřadnicích, aby se zachovala geometrická přesnost.
  3. Rekurzivní vykreslování
    • Proces pokračuje, dokud nejsou všechny segmenty dostatečně malé pro vykreslení přímkou.
    • Tím vznikne čárková aproximace celé křivky.
  4. Převod B-spline/NURBS na Bézier pro vykreslení
    • Zvýší se násobnost vnitřních uzlů v uzlovém vektoru na hodnotu rovnající se stupni křivky.
    • Každý výsledný segment se poté vykreslí jako samostatná Bézierova křivka.
  5. Výpočty v souřadnicových systémech
    • Pokud výpočet probíhá v kartézských souřadnicích, používá se běžná lineární interpolace
    • U racionálních křivek je nutné výpočty provádět v homogenním prostoru \((xw, yw, w)\), aby se zachovala spojitost a správný tvar.
  6. Alternativní přístup – vzorkování
    • Křivka se vyhodnocuje v rovnoměrných parametrech a výsledné body se spojí úsečkami.
    • Tato metoda poskytuje rychlou, ale méně přesnou aproximaci.

4. SVG – Scalable Vector Graphics

5. Reprezentace 3D objektů a principy 3D modelování

3D objekty lze reprezentovat různými způsoby v závislosti na účelu použití – rendering, fyzikální simulace, nebo modelování. Každá reprezentace má specifické výhody z hlediska přesnosti, úspory paměti nebo možností úprav.

1. Typy reprezentace 3D objektů

2. Datové struktury pro reprezentaci

3. Formát OBJ

4. Parametrické povrchy – Bézierovy a B-Spline plochy

Parametrické plochy slouží k přesné reprezentaci zakřivených povrchů pomocí funkcí dvou proměnných (u, v). Povrch je tvořen pohybem kontrolních bodů po křivce, čímž vzniká síť bodů definujících tvar.

Bézierovy plochy

B-Spline plochy

NURBS (Non-Uniform Rational B-Spline)

5. Modelovací operace

  1. Blokování – skládání základních 3D tvarů (kvádry, válce, kužely) do hrubého modelu.
  2. Bridge – spojení dvou profilů (např. křivek nebo ploch) stěnami za vzniku nové plošky; profily musí mít stejný stupeň a knot vektor.
  3. Extrude – vytažení 2D profilu do prostoru podél přímky nebo křivky; vznikne plocha nebo těleso s konstantním průřezem.
  4. Loft – propojení více 2D profilů podle jejich pořadí za vzniku hladkého tělesa.
  5. Rotační plocha (lathe) – otáčení 2D profilu kolem osy; vhodné pro osově symetrické objekty jako vázy nebo kola.
  6. Volné modelování – přímá úprava vrcholů, hran a ploch pro tvorbu složitých tvarů bez použití primitiv.
  7. Proporcionální editace – při pohybu jednoho vrcholu jsou ovlivněny i okolní podle vzdálenosti; lze volit různé druhy plynulosti.
  8. Sculpting (sochání) – organické modelování pomocí štětců, deformací a objemového tahu, vhodné pro tvorbu detailních povrchů.
  9. Knife / Subdivide / Loop cut – rozdělení geometrie pro zvýšení detailu nebo změnu topologie; např. loop cut přidá nové hrany podél smyčky.
  10. Snapping – přichytávání vrcholů k mřížce, jiným vrcholům, hranám nebo plochám; umožňuje přesné zarovnání nebo změnu topologie.
  11. Modifiers – nedestruktivní nástroje pro úpravu geometrie jako Mirror, Array, Bevel, Boolean; lze řetězit a jejich pořadí ovlivňuje výsledek.
  12. Subdivision surfaces (Catmull-Clark) – hladké dělení čtvercových polygonů na menší pro plynulé organické tvary; běžné v animaci.

6. Dělené plochy (Subdivision Surfaces)

7. Implicitní plochy

8. Sochání (Sculpting)

6. Principy mapování textur

Mapování textur je proces přiřazení souřadnic textury jednotlivým bodům na povrchu 3D objektu, aby mohla být textura správně zobrazena. Nejčastější metodou je UV mapování, které převádí 3D povrch na 2D rovinu a umožňuje efektivní zobrazení detailů bez nutnosti složité geometrie.

1. Textury a mapování

2. UV mapování

3. Způsoby unwrappingu

4. Primitivní projekce

5. Další techniky

Bonus: Pokročilé techniky texturování