Zpět na domů

JPEG a neurofyziologie zraku: jak formát oklámá oko

Článek vysvětluje, jak formát JPEG vychází z neurofyziologických vlastností lidského zraku: poměru tyčinek a čípků, perifernímu barevnému vidění, práci neuronů V1 a kontrastní citlivosti (CSF). Jsou uvedeny technické detaily YCbCr, chroma subsampling 4:2:0, DCT a kvantování s příklady kódu.

Jak JPEG modeluje vaše zrak: technický rozbor
Advertisement 728x90

Jak JPEG podvádí zrakový systém: inženýrství založené na neurofyziologii

JPEG není jen formát komprese. Je to trojrozměrný model lidského zraku zakódovaný v algoritmu z roku 1992. Neoptimalizuje data pro ukládání – modeluje, co vidí oko, jak zpracovává mozek a kde zrakový systém ztrácí informace. Výsledkem jsou soubory 5–10krát menší bez znatelné ztráty vnímání. Tento efekt se nedosahuje zjednodušením matematiky, ale přesným odpovídáním biologickým limitem: hustotě fotoreceptorů, kontrastní citlivosti a prostorové frekvenční selektivitě mozkové kůry. Níže následuje technický rozbor každého kroku pipeline JPEG skrze optiku neurofyziologie zraku.

YCbCr: rozdělení signálu podle biologické důležitosti

Prvním krokem kodování JPEG je převod RGB na YCbCr. To není technické zpohodlnění, ale přímá realizace anatomie sítnice. Člověk má asi 120 milionů tyčinek (citlivých na jas) a pouze 6–7 milionů čepiček (barevných receptorů). Poměr je zhruba 20:1. Zrakový systém tedy mnohem přesněji rozeznává odstíny jasu než barevné odstíny.

Vzorec pro výpočet kanálu Y:

Google AdInline article slot
Y = 0,299 × R + 0,587 × G + 0,114 × B

Koeficienty nejsou náhodné: 0,587 u zelené odráží špičku citlivosti lidského oka na vlnové délce ~555 nm – žlutozelené oblasti spektra, evolučně adaptované pro detekci zralých plodů na pozadí listí. Právě proto černobílé obrázky s takovými váhami působí objemně a kontrastně, zatímco rovnoměrné průměrování (0,33R + 0,33G + 0,33B) dává plochou, „mydlatou“ fotografii.

V YCbCr obsahuje kanál Y veškeré kritické informace pro vnímání struktury, kontur a textur. Cb a Cr jsou pouze korekcemi barevného tónu. Ty lze podrobovat agresivnímu zpracování bez rizika ztráty vnímané kvality.

Chroma subsampling: komprese barvy podle anatomie periferního zraku

Po konverzi se aplikuje chroma subsampling – snížení rozlišení barevných kanálů. Nejběžnější režim 4:2:0 znamená: jeden blok Cb a jeden blok Cr na čtyři bloky Y (2×2 pixely). Fakticky se vyhazuje 75 % barevné informace.

Google AdInline article slot

To přímo odpovídá anatomii sítnice: čepičky jsou soustředěny v centrální jamce (fovea), jejich hustota však prudce klesá do periferie. Prostorové rozlišení barevného zraku je v průměru čtyřikrát nižší než monochromatického. JPEG barvu „neztrácí“ – zachovává právě tolik, kolik je schopen rozlišit zrakový systém v každém lokálním úseku obrazu.

Pro ověření stačí otevřít libovolný JPEG ve Photoshopu, rozložit ho na kanály YCbCr a porovnat vizuální kvalitu Y a Cb/Cr: poslední bude vypadat rozmazaně a nízkofrekvenčně – ale při překlopení na Y automaticky mozek obnoví celistvost obrazu. To není nedostatek formátu – je to využití práce zrakové kůry.

DCT a kvantizace: frekvenční mapa slepých skvrn

Diskrétní kosinová transformace (DCT) rozděluje obraz na bloky 8×8 a každý blok dekomponuje na 64 základních složek – od nízkofrekvenčních (plynulé gradienty) až po vysokofrekvenční (jemné hrany, šum, textury). To není abstrakce: neurony primární zrakové kůry (V1) reagují na orientované pásky s určitou prostorovou frekvencí – fakticky provádějí biologickou aproximaci DCT.

Google AdInline article slot

Poté koeficienty podléhají kvantizaci – dělení hodnotami z tabulky kvantizace a zaokrouhlení. Standardní tabulka pro kanál Y má následující strukturu: minimální dělitele v levém horním rohu (nízké frekvence, vysoká citlivost), maximální v pravém dolním (vysoké frekvence, nízká citlivost). Tato tabulka není inženýrská domněnka, ale empirická mapa kontrastní citlivosti (CSF), získaná v psychovizuálních experimentech na lidech. Špička CSF se nachází na 3–5 cyklech na stupeň úhlu zorného pole; mimo ~60 cyklů/stupeň člověk fyzicky nerozlišuje detaily.

Když si vyberete quality=80 ve Photoshopu, nastavujete hranici, při které kvantizace zasahuje pouze do frekvencí pod hranicí vnímání. Při quality=5 začíná algoritmus vymazávat i střední frekvence – ty, které mozek skutečně využívá k rozpoznávání tvaru a textury. Odtud prudký pokles vnímané kvality.

Experiment: vizualizace toho, co oko nevnímá

Abychom viděli, které komponenty JPEG považuje za „neviditelné“, můžeme udělat jednoduchý experiment: uložit stejný obrázek jako JPEG s různými hodnotami quality, pak vypočítat rozdíl mezi originálem (PNG) a komprimovanou verzí.

from PIL import Image
import numpy as np

original = np.array(Image.open("photo.png")).astype(np.float32)

for q in [95, 80, 50, 20, 5]:
    Image.open("photo.png").save(f"q{q}.jpg", quality=q)
    compressed = np.array(Image.open(f"q{q}.jpg")).astype(np.float32)

    diff = original - compressed
    diff_visual = ((diff - diff.min()) / (diff.max() - diff.min()) * 255)
    Image.fromarray(diff_visual.astype(np.uint8)).save(f"diff_q{q}.png")

Výsledky jsou názorné:

  • Při quality=95 je mapa rozdílů téměř černá – ztráty se nacházejí v oblasti šumu.
  • Při quality=80 se rozdíly lokalizují na konturách, tenkých liniích a vysokofrekvenčních texturách (vlasy, tkaniny) – právě tyto komponenty DCT umisťuje do vysokofrekvenčních koeficientů a kvantizace je vymazává jako první.
  • Při quality=5 se mapa rozdílů stává rozpoznatelnou jako „zrnitá verze originálu“ – algoritmus již překračuje hranice CSF a začíná odstraňovat informace potřebné pro vnímání tvaru.

To není artefakt kodování – je to mapa prahů vašeho vlastního zraku.

Quality 80: bod inflexe na křivce CSF

Proč právě 80 – de facto standard webu? Graf závislosti velikosti souboru a SSIM (index strukturální podobnosti) na quality ukazuje jasný bod inflexe kolem hodnoty 80. Do té doby roste kvalita (SSIM) při malém zvětšení velikosti. Poté se velikost zdvojnásobí při zanedbatelném nárůstu SSIM (méně než 0,001).

To se shoduje s přechodem od „odstraňování neviditelných frekvencí“ k „odstraňování viditelných“. Kvantizace při quality < 80 pracuje v oblasti, kde je CSF blízko nuly; při quality > 80 – v oblasti, kde CSF prudce stoupá. Tedy pravidlo „quality=80“ není magické číslo, ale praktická aproximace prahu kontrastní citlivosti pro typický obrázek při standardním prohlížení (30 cm, 1080p).

Co je důležité

  • JPEG nekomprimuje „obraz“, ale modeluje fungování zrakového systému: tyčinky/čepičky → Y/CbCr, periferní barevný zrak → chroma subsampling, neuronální frekvenční selektivita V1 → DCT, prahy kontrastní citlivosti → tabulka kvantizace.
  • Koeficienty ve vzorci Y = 0,299R + 0,587G + 0,114B nejsou přiblížením, ale parametrizovaným modelem spektrální citlivosti lidského oka.
  • Režim 4:2:0 chroma subsampling odpovídá skutečnému poměru rozlišení monochromatického a barevného zraku (~4:1), nikoli technickým limitům zařízení.
  • Tabulka kvantizace není statická předloha, ale empirická mapa CSF získaná v laboratorních podmínkách na živých testovaných subjektech.
  • Quality=80 není „kompromis“, ale bod, kde algoritmus přestává pracovat v oblasti neviditelných ztrát a začíná zasahovat do vnímaných komponentů obrazu.

— Editorial Team

Advertisement 728x90

Číst dál