Podložíme zase nějakým podkresem, pravým analogovým.
Víme nespolehlivost kanálu – pravděpodobnost chybného bitu – a z toho programem GNU R spočteme jak silný ten šumový signál je.
> help(qnorm)
qnorm je kvantilová funkce normálního rozložení. Té se dá pravděpodobnost a ona nám řekne, v jaké vzdálenosti od středu šumu musí být řezací úroveň, aby pod ní šum lezl s danou pravděpodobností. Protože jde o poměr mezi řezací úrovní, která je fixní, a šířkou kopečku, přidáme před to 1/ (jedna lomeno). Mínus je, protože nás zajímá lezení šumu nad řezací úroveň místo pod ni. A nakonec vydělíme 2, protože řezací úroveň je v půlce mezi hodnotami bitu 0 a 1:
> sirka=-1/qnorm(0.001)/2 > sirka [1] 0.1618001 > plot(x,dnorm(x, mean=0,sd=sirka),type="l") > lines(x,dnorm(x, mean=1,sd=sirka),type="l")
Co je na obrázku? Levá křivka reprezentuje histogram signálu přijatého pro nulové vyslané bity a ta pravá pro jedničkové. Malinkatý zářez – zobáček nad hodnotou 0,5 představuje právě tu malinkatou plochu, kde je pokrytí dvojnásobné a vznikají chyby. Ten zbytek se přijme bezchybně.
Větší šum by odpovídal širším, více se překrývajícím kopečkům. Nižší zase užším, které by se pochopitelně méně překrývaly. Kdyby kanál byl úplně bez šumu, měli bychom jen dvě svislé, nekonečně vysoké spektrální čáry – nuly a jedničky, přesně stejné hodnoty, co jsme vyslali. Takhle se nám hodnoty různě posouvají od čísel 0 a 1 podle toho, kterým směrem s nimi šum zrovna hne.
Takto si teď situaci nasimulujeme. Předpokládám, že počet nul a jedniček na vysílači je zhruba stejný (pro běžné obrázky typicky splněno). Také předpokládám, že síla šumu je stále stejná, konstantní, ta, kterou jsme vypočítali. Ona konstantní typicky bude, určená fyzikálními parametry, v případě tisku na papír vlastnostmi toneru a papíru a tiskového procesu. V případě elektronického systému je daná silou temodynamického šumu na odporech v obvodu, výstřelového šumu na polovodičových přechodech, kterými protéká proud. V případě mozku to budou procesy teplotního šumu a šum tvořený kvantizací (diskrétním charakterem) aktivních molekul a diskretizací nervových impulsů. Typicky se v mozku jako analogová hodnota bere průměrný počet impulsů za určitý časový interval.
Další zjednodušení, co tu mám, že šum je aditivní – k signálu se přičítá. V elektronice to tak typicky je, u tisku ne. Síla šumu může záviset na přenášené hodnotě. Jak je to v mozku, přesně nevím. Domnívám se že toto omezení modelu zde nemá podstatný význam. Dá se snadno kompenzovat tím, že signálové hodnoty natáhneme nebo smáčkneme tak, aby při přenosu trpěly všechny stejně.
Podle Bayesovy věty je pak pravděpodobnost, že byl bit 1, jaká? Je to pravděpodobnost, že jedničkový bit vygeneruje přijatou hodnotu, vydělená pravděpodobností, že vůbec nějaký bit vygeneruje přijatou hodnotu:
gmic wat.pnm -div 3 -round -o wat_msb.pnm -noise 0.162,0 \ [0] -sub[1] 1 -div 0.162 -pow 2 -div -2 -exp -add[0] [1] -div[1] [0] \ -remove[0] \ -o wat_msb_noise.cimg gmic wat.pnm -mod 2 -o wat_lsb.pnm -noise 0.162,0 \ [0] -sub[1] 1 -div 0.162 -pow 2 -div -2 -exp -add[0] [1] -div[1] [0] \ -remove[0] \ -o wat_lsb_noise.cimg gmic wat_msb_noise.cimg -mul 2 wat_lsb_noise.cimg -add -mul 85 -cut 0,255 -o result_bayes.png -d
V gmicu na konci vidíme, že výsledný obrázek obsahuje desetinné pixelové hodnoty (při pohybu myší po obrázku).
Další možnost, jak kvalitu zlepšit, by byla založená na tom, že poškozený horní bit nadělá větší paseku než poškozený dolní bit. Napartitionovali bychom tedy bity na papíře tak, že by MSB byly fyzicky větší, a měly tím pádem lepší odstup od šumu a menší pravděpodobnost chyby.
Je v jednoduchosti genialita?
Co se ale místo stále sofistikovanějšího postupu ukládání bitů na papír a komplexního dekódování se statistickými algoritmy pustit opačným směrem? Nešlo by se inspirovat heslem „v jednoduchosti je genialita“? Co ten obrázek na ten papír prostě vytisknout? Je třeba ho rozložit do R G a B kanálů a přidat nějaké soutiskové kříže, aby fotografie nevypadala, jako když se Sergejovi Michajloviči Prokudinovi-Gorskému pohne jeho subjekt:
gmic "(0,255;255,0)" -to_rgb wat.png -resize[0] 10,[1] [0] -append x \ [0] [0] -channels[0] 0 -channels[1] 1 -channels[2] 2 \ -o[0] red.png \ -o[1] green.png \ -o[2] blue.png \ -append y
Nascanovaný tisk pak nahrajeme do GIMPu a pomocí funkce perspective transform – corrective (písmeno p) registrujeme soutiskové značky na rohy obrazu. Při složení jsem pak udělal nějakou korekci na černou, která není úplně černá, a korekci nelinearity polotónovaného tisku tiskárny:
gmic red.png green.png blue.png -sub 15 -mul 1.0625 \ -div 255 -pow 1.5 -mul 255 \ -append c with_sync.png -resize[0] [1],5 \ -remove[1] -cut 0,255 \ -o result_analog.png -d
Musím říct, že kvalita tohoto analogového nekomprimovaného obrazu mě proti těm nekomprimovaným digitálním velmi překvapila. Obraz vnímám jako překvapivě čistý s mnohem lepší reprodukcí barevných gradací, a charakter rušení vnímám jako méně obtěžující, přirozenější, prostě analogový :).
Na analogovém kanálu by JPEG vůbec z principu běžet nemohl, ale jak by si vedl na chybovém digitálním kanále? Na bezchybném digitálním kanále má 100 kB JPEG obrazovou kvalitu velmi vysokou:
JPEG na chybovém kanále
Při naší příkladové chybovosti 0,1 % je JPEG zcela nepoužitelný:
Jak si vede při různých chybovostech od 2-10 do 2-18 , můžete vidět v galerii. Některé pokusy tam chybí, to je když JPEG zchátral natolik, že ho ani GMIC nedokázal načíst, aby ho znovu korektně uložil.
Sečteme-li všechny chybové obrázky v galerii, vyjde obrázek rozeznatelný jen v hrubých obrysech – jakási Praha stověžatá. Reakce tohoto digitálního systému na chyby má následující vlastnosti:
- Poškozuje se víc dolní část obrázku
- Vznikají geometrické struktury, co tam vůbec nebyly (šachovnice, proužky)
- Dochází k prostorovým posuvům
- Jedna chyba dokáže poškodit velké části obrázku
- Dochází k totálním výpadkům částí obrazu
- Integrací více snímků nelze kvalitu zlepšit, naopak, obraz se rozmaže.
V příštím díle uzavřu srovnání analogových a digitálních metod a konečně už vezmeme svěrák, pilku na železo, meotar a osciloskop a podíváme se fyzicky, co pod kapotou běhá za signály.