Západočeská univerzita v Plzni Fakulta aplikovaných věd
Multimediální a hypermediální systémy Fresnelovy čočky a digitální korekce optických vad
Ondřej Nedvěd 8.8.2012
[email protected]
Obsah 1 Fresnelovy čočky 1.1 Materiál a tvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Výrobní postup . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Optické vlastnosti . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 2 2 3
2 Optické vady a jejich korekce 2.1 Vady zobrazení . . . . . . . . . . . . . 2.1.1 Vady ostrosti obrazu . . . . . . 2.1.2 Zkreslení obrazu . . . . . . . . 2.2 Chromatické vady . . . . . . . . . . . . 2.2.1 Barevná vada velikosti obrazu . 2.3 Shrnutí optických vad a jejich korekce .
. . . . . .
. . . . . .
. . . . . .
5 5 5 7 7 7 9
. . . . . . cm) . . . . . . . . .
. . . . . .
. . . . . .
10 10 10 11 12 13 14
4 Srovnání výsledného obrazu a závěr 4.1 Srovnání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Závěr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16 16 16
A Shader 1 – Korekce vady velikosti obrazu
18
B Shader 2 – Korekce barevné vady velikosti obrazu
19
C Shader 3 – Finální korekční shader pro dodanou čočku
20
D Výsledky – bez korekce
21
E Výsledky – s korekcí tvaru
22
F Výsledky – s korekcí barvy
23
G Výsledky – s úplnou korekcí
24
H Autoři obrazových materiálů v dokumentu
25
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
3 Použití čoček před zobrazovacím zařízením 3.1 Bez korekce vad zobrazení . . . . . . . . . . . . . . . . . 3.1.1 Čočky s delší ohniskovou vzdálenistí (55 cm) . . . 3.1.2 Čočky s krátkou ohniskovou vzdálenistí (∼10 – 15 3.2 S korigovaným obrazem . . . . . . . . . . . . . . . . . . 3.2.1 Korekce zkreslení obrazu . . . . . . . . . . . . . . 3.2.2 Korekce barevé vady velikosti obrazu . . . . . . .
1
. . . . . .
. . . . . .
1
Fresnelovy čočky
Základní informace týkající se optických vlastností a vad čoček jsou čerpány převážně z [1]. Oproti klasickým skleněným čočkám se běžné Fresnelovy čočky liší především výrobním materiálem, výrobním postupem, fyzickým tvarem a zásadně i optickými vlastnostmi. Jejich užití je tedy směřováno do optických systémů, kde je preferována malá hmotnost, větší průměr čočky či relativně malé náklady na výrobu.
1.1
Materiál a tvar
1.1.1
Výrobní postup
Obrázek 1: Fresnelova čočka s jedním ohniskem. Narozdíl od klasických skleněných čoček – které jsou vyráběny z různých druhů skla, následným broušením a leštěním – se Fresnelovy čočky vyrábějí kvůli dobré zpracovatelnosti z plastů, jakými jsou například polystyren, PVC1 či polymethylmethakrylát. Použitý postup pro výrobu čoček složitých tvarů, kam se řadí i Fresnelovy čočky, je běžně tlakové lití nebo počítačem řízené frézování2 . Co se rozmanitosti tvarů průřezu týče, lze nalézt nejen Fresnelovy čočky odpovídající kulové ploše (obrázek 1), ale také například čočky se dvěma ohniskovými vzdálenostmi (obrázek 2) či čočky korekčního charakteru s průřezy nekulových tvarů. 1 2
polyvinylchlorid Computer Controlled Milling
2
Obrázek 2: Fresnelova čočka se dvěma ohnisky.
1.2
Optické vlastnosti
Mezi základní změřitelné parametry každé čočky lze počítat: • d – tloušťka čočky, kterou je míněna vzdálenost obou hranic čočky na optické ose, • r1 , r2 – poloměry křivosti obou ploch, • n – index lomu materiálu, • propustnost světla (udáváno v procentech) z těchto pak lze pomocí následujících vztahů vypočítat ohniskovou vzdálenost f a vzdálenosti hlavních bodů od vrcholů čočky (tj. od průsečíků hranice čočky a optické osy) |S1 H1 | resp. |S2 H2 |. Vztah pro ohniskovou vzdálenost: f=
nr1 r2 1 , n − 1 (n − 1)d + n(r2 − r1 )
(1)
vzdálenost druhého hlavního bodu od druhého vrcholu čočky3 : S2 H2 = −
r2 d (n − 1)d + n(r2 − r1 )
(2)
a analogicky vzdálenost prvního hlavního bodu od prvního vrcholu čočky: S1 H1 = − 3
r1 d . (n − 1)d + n(r2 − r1 )
Místo, kde optická osa protíná povrch čočky.
3
(3)
Existují však i parametry čoček, vycházející z jejich optických vad, popsaných v následujícím oddílu. Mezi základní patří Abbeovo číslo, udávající chromatickou vadu. Pro matematické vyjádření tohoto čísla viz vzorec (5).
4
2
Optické vady a jejich korekce
2.1 2.1.1
Vady zobrazení Vady ostrosti obrazu
Do této oblasti spadá například astigmatismus, podélná otvorová vada a koma.
Obrázek 3: Podélná otvorová vada či též kulová vada.
Podélná otvorová vada nastává při zobrazení širokého svazku paprsků. Rozdělímeli čočku soustřednými kružnicemi se středem na optické ose do několika oblastí, pak paprsky procházející různými oblastmi protínají optickou osu v různých místech, avšak paprsky ze stejné oblasti v jednom místě. Problém lze tedy snadno znázornit obrázkem průřezu (obrázek 3). Jelikož se vada zvyšuje směrem k okraji s mocninou vzdálenosti, způsobí zúžení vstupního svazku paprsků podstatné zlepšení. Druhou možností je nahrazení jedné čočky dvěma plankonvexními (obrázek 4. Toto řešení bývá aplikováno například v diaprijektorech4
Obrázek 4: Dvě plankonvexní čočky. 4
Projektor zobrazující obraz průsvitem, ne odrazem.
5
Tuto vadu není možné při použití konfigurace monitor – Fresnelova čočka – pozorovatel korigovat digitálně a tím pádem se korekcí dále nebudu zabývat.
Obrázek 5: Vada zvaná astigmatismus.
Astigmatismus lze stručně charakterizovat jako případ, kdy paprsky dopadající na čočku ve dvou navzájem kolmých rovinách protnou optickou osu ve dvou různých bodech. Pro bližší informace o této vadě doporučuji [5] či jinou literaturu zabývající se Peztvalovými plochami a Petzvalovým součtem.
Obrázek 6: Vada zvaná koma.
Koma je možné chápat jako nesymetrickou otvorovou vadu. Vzniká v případech, kdy paprsky dopadají na čočku pod velkým úhlem5 . Jedná se o pokročilou optickou vadu a nebudu se jí tedy zabývat do hloubky. Komu lze opět silně ovlivnit pomocí clony, obdobně jako podélnou otvorovou vadu. 5
Úhel mezi optickou osou a paprskem je velký.
6
2.1.2
Zkreslení obrazu
Nejlépe pozorovatelná vada vyskytující se u čoček je nerovnoměrné zvětšení. Je známa pod názvy soudkovité zkreslení a poduškovité zkreslení (obrázek 7).
Obrázek 7: Vlevo soudkovité zkreslení a vpravo poduškovité. Z obrázků je patrné, jak která vada deformuje pravoúhlou mřížku a pravidelné soustředné kružnice. Tuto vadu lze odstranit buď vložením odpovídající korekční čočky nebo v případě dostatečného rozlišení obrazu i digitální cestou6 . Zkreslení v bodě lze vyjádřit vztahem: V =
y0 − y · 100%, y
(4)
kde y 0 je vzdálenost bodu od středu po průchodu čočkou a y je vzdálenost od středu stejného bodu bez zkreslení. Graf závislosti zkreslení na poloměru může být téměř lineární, nicméně nelineární závislost lze také očekávat. Vždy situace závisí na konkrétní čočce.
2.2 2.2.1
Chromatické vady Barevná vada velikosti obrazu
Tato vada je definována jako rozdíl ohniskových vzdáleností pro modré (fF = 480, 0nm) a červené (fC = 643, 8nm) světlo. Pokud jsou indexy lomu pro modré a červené světlo nF a nC ; ne střední hodnota indexu lomu, potom tzv. Abbeovo číslo je dáno vztahem: νe = 6
ne − 1 nF − nC
Tu jsem si zvolil já.
7
(5)
Obrázek 8: Chromatická vada velikosti obrazu. a charakterizuje barevnou vadu velikosti obrazu. Po odvození ze vztahů pro ohniskové vzdálenosti lze Abbeovo číslo také zapsat jako: νe = −
fe . fF − fC
(6)
Barevnou vadu velikosti obrazu lze opět korigovat přidáním korekční čočky, která musí mít mimořádně malou disperzi7 – tou je například čočka z kazivce.
Obrázek 9: Korekce chromatické vady velikosti obrazu přidáním koreční čočky. Tuto vadu lze pro konfiguraci displej – čočka – oko korigovat i digitálním předzpracováním, jedná se vpodstatě o úpravu obrazu takovým způsobem, jako by prošel korekční čočkou. Teoreticky je princip jednoduchý, pro jednotlivé složky RGB displeje8 je obraz zvětšen v jiném měřítku. V praxi by to však znamenalo zjištění nesčetných hodnot, mezi které patří například přesné vlnové délky jednotlivých barevných složek displeje či všechny 7
Rozptyl světla. Zobrazovací zařízení založené na míchání výstupní barvy v každém bodě pomocí tří základních barevných světel – červené, zelené, modré. 8
8
parametry použité pro předávání od aplikace přes operační systém a ovladač grafické karty až po monitor. I přesto by korekce nebyla stejně uspokojivá jako při vložení fyzické čočky, nicméně v závěru tohoto dokumentu je možné shlédnout rozdíl mezi korigovaným obrazem a obrazem bez korekce.
2.3
Shrnutí optických vad a jejich korekce
Mezi vadami zobrazení a chromatickými vadami lze najít souvislosti. Barevná vada velikosti obrazu a zkreslení jsou vady, při nichž nedochází k rozmazání a lze je tedy poměrně úspěšně korigovat digitální cestou. Jsou zde ovšem dvě úskalí. Prvním je rozlišení vstupního obrazu, což se projevuje nedostatkem obrazové informace v místech, kde je třeba lokální zvětšení, jako je tomu při korekci „poduškovitéhoÿ obrazu9 . Druhým problémem jsou numerické nepřesnosti. Jelikož je finálním produktem obrazu po digitální korekci rastr, mohou být některé pixely překorigovány a jiné podkorigovány a tudíž chybně zobrazeny. Tyto problémy se vyskytují u obou zmíněných optických vad. Korekce vad u nichž dochází k rozmazání je možná pouze přidáním odpovídající korekční čočky. Jako příklad lze uvést toroickou čočku pro korekci astigmatismu. Jelikož nemám k dispozici možnost výroby čočky o specifických parametrech, týkají se mé pokusy pouze úpravy optických vad, uvedených v předchozím odstavci.
9
Viz oddíl zkreslení obrazu.
9
3
Použití čoček před zobrazovacím zařízením
Bohužel ani po delším hledání jsem nenašel relevantní odborný článek, pojednávající o použití Fresnelových čoček před displejem za účelem zlepšení prostorového vjemu. Následující pasáž tedy vychází ze zdrojů, které nemohu ověřit. První zdroj [2] zmiňuje základní informace pro amatérské použití různých druhů Fresnelových čoček. Zaujal mne především odstavec, ve kterém je řečeno, že použití čoček z projektorů není šťastný nápad, nicméně právě tyto čočky jsou zdrojem různých optických vad, které jsem se snažil digitálně korigovat.
3.1 3.1.1
Bez korekce vad zobrazení Čočky s delší ohniskovou vzdálenistí (55 cm)
Jelikož jsem takovouto ani podobnou čočku neměl k dispozici, shrnu pouze výsledky práce jiných lidí. Všichni, jejichž články jsem četl, se shodují, že optimální čočkou pro použití před monitorem je Fresnelova čočka F550, mající následující specifikaci: • Výrobce: 3Dlens Corporation, Taipei, Taiwan, Republic of China – viz [4] • Rozměry: 320mm×400mm×2mm • Velikost Fresnelových zón10 : 0,2mm (jemné) • Ohnisková vzdálenost: 550mm Bohužel výrobce již delší dobu danou čočku neposkytuje ke koupi ve svém internetovém obchodu, proto jsem si ji nemohl objednat a odzkoušet. V prvním článku [2] je pouze zmínka ohledně použití před monitorem, spíše jsou zde popsány testy čoček a jejich různých vlastností. Druhý článek je dílem Rolanda van Roye, který se snažil nalézt co nejpřívětivější řešení pro domácí letecký simulátor a to za použití jak projektorů, LCD11 displejů, tak právě LCD displejů s předsazenými Fresnelovými čočkami. Spolu s dalšími nadšenci12 sestavil a odzkoušel konfiguraci, kterou lze vidět na obrázku 10. Dle ohlasů lidí, kteří vyzkoušeli tuto sestavu má předsazení Fresnelových čoček dvě základní výhody. Zaprvé nejsou vidět okraje monitorů a obraz tím pádem 10
Velikost jednoho „proužkuÿ nebo „mezikružíÿ Fresnelovy čočky. Liquid Crystal Display 12 Jména se nepodařilo dohledat. 11
10
Obrázek 10: Konfigurace třech displejů a jim náležících Fresnelových čoček. tvoří jednolitý celek a zadruhé je obraz tvořen dále za monitorem (při pohledu z ohniskové vzdálenosti by obraz byl v nekonečnu) a uživatel tím pádem získá lepší vjem hloubky. Je velmi subjektivní a tedy neodborné hodnotit vizuální dojem a jelikož ani v odborných článcích jsem nenalezl rozumné vysvětlení, předpokládám, že vizuální vjem je lepší z důvodu větších rozměrů vnímaného obrazu a díky „odstraněníÿ okrajů monitorů není periferní vjem rušen efektem skoku. To vyjadřuje problém, kdy část malého objektu přechází plynulým pohybem z jednoho monitoru na druhý a ve chvíli, kdy by podle vjemu mozku měl být za rámečkem, přeskočí tento objekt na druhou stranu rámečku. 3.1.2
Čočky s krátkou ohniskovou vzdálenistí (∼10 – 15 cm)
Fresnelovy čočky s touto ohniskovou vzdáleností jsem měl k dispozici a v této části své práce se budu snažit napodobit efekt získání prostorového vjemu a zjištění vhodné konfigurace. Pro čočku s ohniskovou vzdáleností ∼13cm jsem provedl jednoduchou úvahu. Pokud je původní ohnisková vzdálenost 550mm a vzdálenost čočky od monitoru 169mm, pak za předpokladu, že chci zachovat zvětšení, musí 11
být vzdálenost mé čočky od monitoru ∼4cm. Hodnota je přibližná, jelikož se nejedná o přesné měření, ale pouze o vizuální vjem. Při pozorování různých scén: • jednoduchá prostorová grafika (Blender3D), • animované video (Tetsuya Nomura, Takeshi Nozue: Final Fantasy VII – Advent Children [2005]), • hraný film (Vadim Jean: Hogfather [2006]), • základní černobílé obrazce a text – objekty s vysokými frekvencemi, jsem dosáhl podobného vjemu, jako při stejně zvětšené scéně na stejném monitoru bez čočky. Pozitivní prostorový vjem se mi nepodařilo pozorovat a jelikož byly poskytnuté čočky na okrajích značně zatíženy zkreslením, nemohl jsem pozorovat efekt odstranní rámečku mezi monitory. Negativa při pozorování přisuzuji spíše typu vybrané čočky, jelikož byly určeny primárně do diaprojektoru13 . Vadu zkreslení i chromatickou vadu bylo možné pozorovat při všech pozorovacích vzdálenostech.14 Pozorování po digitální korekci obrazových vad je uvedeno v následující podsekci.
3.2
S korigovaným obrazem
Obrázek 11: Má konfigurace čočky a monitoru. 13
Projektor zobrazující předlohu prosvícením skrz, ne odrazem. Při opakování pokusu si dovoluji upozornit na možnost bolestí hlavy při delším pozorování – více než jedna minuta. 14
12
Pro korekci obrazu jsem – po zvážení mezi tvorbou vlastního programu zobrazujícího libovolné prostorové modely (výsledná projekce by bývala byla korigována pomocí pixel shaderu) a tvorbou filtrů pro program Media Player Classic (MPC-HC Team)15 – vybral druhou možnost. Výsledky tedy lze reprodukovat kdykoli pouze s použitím shaderů, které jsou v přílohách. Pokud nebude řečeno jinak, budu hovořit o Fresnelově čočce s ohniskovou vzdáleností 13 cm. V příloze D jsou zobrazeny dva snímky. První je předloha šachovnicového vzoru bez předsazené čočky. Pro přesné srovnání by bylo nutné použít kvalitní fotoaparát se stativem, nicméně vlivy čočky a korekcí obrazu lze pozorovat i na těchto snímcích. Všechny byly pořízeny za stejných podmínek, kdy jediným zdrojem světla byl právě monitor. Předloha je uvedena pouze pro porovnání. Druhý snímek představuje fotografii stejného vzoru přes Fresnelovu čočku. Na první pohled je patrné soudkovité zkreslení obrazu. Na přechodech bílá–černá (směr od středu čočky ke kraji) je také zřetelně vidět modrý pruh a na přechodech černá–bílá červený pruh. To je dáno chromatickou vadou čočky. 3.2.1
Korekce zkreslení obrazu
Vadu nerovnoměrného zvětšení jsem již v oddílu teoretického popisu chyby omezil pouze na případy radiální, monotónní v závislosti na vzdálenosti od optické osy. Digitální korekci je možné provést pouze změnou vzdálenosti od optické osy, stačí pouze zjistit onu závislost, se kterou se tento poloměr mění. Po převedení obrazu do polárních souřadnic se po mnohém empirickém snažení podařilo zjistit tuto závislost pro konkrétní čočku jako: r0 = r0,967 ,
(7)
kde r0 je nový poloměr v radiálních souřadnicích a r původní. Pro představu rozdílu viz přílohu E. První snímek zobrazuje šachovnicový vzor po předzpracování korekčním shaderem bez čočky a druhý snímek s čočkou. Po přiložení ostré hrany (například papíru) je zřejmé, že je původní vada značně zkorigována (na úroveň velikosti jednoho pixelu obrazu). Rušivé zlomy hran v obraze by bylo možné odstranit pouze v případě jemnější granularity zobrazovacích bodů monitoru a možnosti přistupovat k nim přímo. Pro běžný filmový snímek jsou takovéto hrany netypické a při sledování si jich uživatel nevšimne, narozdíl od soudkovitého zkreslení, které má rušivý účinek. Zdrojový kód shaderu lze nalézt v příloze A. Proměnná zkresleni udává přímo mocninu poloměru. Hodnota 1.0 znamená nezměněný obraz, interval (0, 0; 1, 0) 15
http://mpc-hc.sourceforge.net/
13
koriguje soudkovité zkreslení a interval (1, 0; +∞) poduškovité zkreslení. Samozřejmě jde pouze o přibližnou aproximaci. Skutečná závislost na poloměru nemusí být monotónní a její průběh se bez přesných měření nedá zjistit. Pro vizuální vjem přes poskytnutou čočku ovšem přibližná korekce dostačuje. 3.2.2
Korekce barevé vady velikosti obrazu
Pro představu jak v extrémním případě taková vada vypadá, uvedu obrázek 12.
Obrázek 12: Extrémní případ chromatické vady. I tuto vadu lze nejlépe korigovat v radiálních souřadnicích, nicméně postup korekce je složitější než v předchozím případě. Pro přesnou korekci je nutné zjistit přesnou vlnovou délku všech barevných složek LCD displeje a mít přímý přístup k zobrazovaným bodům na displeji, to však není snadno dosažitelné a spokojím se tedy s domněnkou, že složky RGB zdrojového obrazu odpovídají červené, zelené a modré barvě výstupního „zářeníÿ a že zelená barva je střední hodnotou mezi modrou a červenou. Tato vada opět nemusí mít lineární průběh v závislosti na vzdálenosti od středu čočky, dokonce posuvy červené a modré složky nemusí být v absolutní hodnotě stejné. U zkoušené čočky se však přibližně lineární průběh prokázal jako nejbližší. Prvním krokem při korekci je rozložení obrazové informace na jednotlivé barvy. Předpokládá se, že střední vlnová délka (zde jsem zvolil zelenou složku), zůstane nezměněna a modrá i červená složka se korigují symetricky opačně16 . Korekci v mém případě lze vyjádřit jako: r0 = r ± (αrk ). 16
Stejné hodnoty, opačná znaménka.
14
(8)
První část r ± (. . .) říká, že posun dané vlnové délky (základní barvy) se odvíjí od pozice střední vlnové délky (zelené barvy). Výraz αrk pak udává samotnou velikost posunu; α je koeficient, který je kladný pro kladné čočky (spojky) a záporný pro záporné čočky (rozptylky). U testované čočky se jevila nejlepší hodnota 0, 0031, tedy poměrně malý posun. Hodnota k je mocnina, v mém případě k = 1.0 udává lineární průběh. Posledním krokem je sestavení výsledných barevných vrstev do jedné. Jelikož je pixelshader v jednom okamžiku vlákna omezen vždy na jeden obrazový bod, je nutné představu sestavování barev obrátit. Pro každý bod jsou zvoleny tři body původního obrazu a z nich jsou vybrány jen chtěné barevné složky a sestaveny do aktuálního bodu na výstupu. Pro vizuální srovnání viz přílohu F, kde první obrázek je korigovaný obraz bez čočky a po jejím předsazení před monitor (druhý obrázek) lze pozorovat překvapivý, avšak ne nečekaný výsledek. Ve většině případů byla chyba zkorigována a hrany se zdají být téměř bez „barevné auryÿ. U některých hran chromatická vada přetrvává nebo se skokově převrátila na opačnou (modrá–červená), to je opět dáno nedostatečným rozlišením výstupního obrazu a vadu tedy nelze zcela odstranit. Přibyly i zelené pruhy, které je možné přisoudit pravděpodobně buď asymetričnosti chromatické vady čočky nebo spíše faktu, že zelená barva v shaderu není střední vlnovou délkou výstupního záření monitoru.
15
4
Srovnání výsledného obrazu a závěr
4.1
Srovnání
Po složení korekce zkreslení a korekce chromatické vady jsem dosáhl kýženého výsledku. V příloze G jsou opět dva obrázky. První ukazuje korigovaný obraz bez použití čočky před monitorem, druhý pak výsledný obraz při předsazení čočky. I na tomto snímku lze pozorovat drobné nepřesnosti, dané výše zmíněnými příčinami a také zaokrouhlovacími chybami. Dále je patrý jakoby odlesk či „duchÿ původního obrazu po okrajích. Jak jsem již zmínil dříve, čočky které jsem měl k dispozici nejsou určeny pro účely použití před monitorem a nelze tedy předvídat chování onbrazu po průchodu jimi a netroufám si odhadnout příčinu těchto „duchůÿ, ikdyž se jich nabízí několik17 . Pokud srovnám původní obraz D a korigovaný obraz G, pak pro snímky s ostrými hranami bych zvolil variantu bez korekce. Na druhou stranu pro běžné filmové snímky, moderní počítačové hry či jiné podobné obrazy bez vysokých frekvencí, bych zvolil korigovaný obraz bez většího rozmýšlení.
4.2
Závěr
Po poměrně dlouhém a přeci marném hledání odborných článků na téma Fresnelovy čočky při použití před monitorem pro zlepšení vizuálního vjemu, jsem použil neověřené zdroje, které napsali lidé, kteří zkoušeli Fresnelovy čočky jako vylepšení jejich stávajících „na koleni postavenýchÿ konstrukcí, převážně simulátorů letadel. Abych byl schopen dosažené výsledky těchto lidí objektivně zhodnotit, rozšířil jsem si obecné znalosti optiky z dostupné literatury. Jelikož jsem měl k dispozici Fresnelovy čočky určené k jiným účelům, což se vyznačovalo značnými optickými vadami, rozhodl jsem se věnovat první část své práce optickým vadám a jejich korekci, respektive digitální korekci. Po aplikaci digitální korekce na obraz jsem testoval použitelnost zmíněných Fresnelových čoček pro použití před monitorem a tedy pro zlepšení vizuálního vjemu. Ikdyž se nepodařilo potvrdit prostorový vjem, přesto je dle mého názoru Fresnelova čočka18 přínosem už jen z důvodu hladkého propojení vnímaného obrazu z více monitorů. 17 18
Odraz, dvojohnisková čočka, dvojitý index lomu aj. Míněno bez optických vad.
16
Pro případnou další práci bych doporučil odzkoušení kvalitnějších Fresnelových čoček a případné sestavení vícemonitorového systému, obdobně jako to udělali autoři zmínění ve zdrojích.
17
A
Shader 1 – Korekce vady velikosti obrazu
sampler s0 : register(s0); float4 p0 : register(c0); #define width (p0[0]) #define height (p0[1]) #define clock (p0[3]) float4 main(float2 tex : TEXCOORD0) : COLOR { //******************** //0..1 -> soudkovitost, 1..FLT_MAX -> poduskovitost float zkresleni = 0.967; //******************** float4 c0 = 0; if (tex.x >= 0 && tex.x <= 1 && tex.y >= 0 && tex.y <= 1) { float cx = 2.0*(tex.x - 0.5); float cy = 2.0*(tex.y - 0.5); float r = sqrt(cx*cx + cy * cy); if (r > 0.0001) { float phi = atan2(cy, cx); r = pow(r,zkresleni); tex.x = r * cos(phi) / 2.0 + 0.5; tex.y = r * sin(phi) / 2.0 + 0.5; } c0 = tex2D(s0, tex); } return c0; }
18
B
Shader 2 – Korekce barevné vady velikosti obrazu
sampler s0 : register(s0); float4 p0 : register(c0); float4 p1 : register(c1); #define width (p0[0]) #define height (p0[1]) #define PI acos(-1) float4 main(float2 tex : TEXCOORD0) : COLOR { //*********************** float dr= 0.0031; //kladne cocky: 0..1; zaporne cocky: -1..0 float mocnina = 1.0; //*********************** float4 cr = 0, cg=0, cb=0, c0 = 0; if (tex.x >= 0 && tex.x <= 1 && tex.y >= 0 && tex.y <= 1) { float cx = 2.0*(tex.x - 0.5); float cy = 2.0*(tex.y - 0.5); float r = sqrt(cx*cx + cy * cy); if (r > 0.0001) { float phi = atan2(cy, cx); tex.x = r * cos(phi) / 2.0 + 0.5; tex.y = r * sin(phi) / 2.0 + 0.5; cg = tex2D(s0, tex); tex.x =( r-pow(r, mocnina)*dr) * cos(phi) / 2.0 + 0.5; tex.y =( r-pow(r, mocnina)*dr) * sin(phi) / 2.0 + 0.5; cr = tex2D(s0, tex); tex.x = (r+pow(r, mocnina)*dr) * cos(phi) / 2.0 + 0.5; tex.y = (r+pow(r, mocnina)*dr) * sin(phi) / 2.0 + 0.5; cb = tex2D(s0, tex); c0 = float4(cr.r, cg.g, cb.b, 1); } else { c0 = tex2D(s0, tex); } } return c0; }
19
C
Shader 3 – Finální korekční shader pro dodanou čočku
sampler s0 : register(s0); float4 p0 : register(c0); float4 p1 : register(c1); #define width (p0[0]) #define height (p0[1]) #define PI acos(-1) float4 main(float2 tex : TEXCOORD0) : COLOR { //chroma //*********************** float dr= 0.0031; //kladne cocky: 0..1; zaporne cocky: -1..0 float mocnina = 1.0; //*********************** //zkresleni //0..1 -> soudkovitost, 1..FLT_MAX -> poduskovitost float zkresleni = 0.967; //*********************** float4 cr = 0, cg=0, cb=0, c0 = 0; if (tex.x >= 0 && tex.x <= 1 && tex.y >= 0 && tex.y <= 1) { float cx = 2.0*(tex.x - 0.5); float cy = 2.0*(tex.y - 0.5); float r = sqrt(cx*cx + cy * cy); if (r > 0.0001) { float phi = atan2(cy, cx); r = pow(r, zkresleni); tex.x = r * cos(phi) / 2.0 + 0.5; tex.y = r * sin(phi) / 2.0 + 0.5; cg = tex2D(s0, tex); tex.x =( r-pow(r, mocnina)*dr) * cos(phi) / 2.0 + 0.5; tex.y =( r-pow(r, mocnina)*dr) * sin(phi) / 2.0 + 0.5; cr = tex2D(s0, tex); tex.x = (r+pow(r, mocnina)*dr) * cos(phi) / 2.0 + 0.5; tex.y = (r+pow(r, mocnina)*dr) * sin(phi) / 2.0 + 0.5; cb = tex2D(s0, tex); c0 = float4(cr.r, cg.g, cb.b, 1); } else { c0 = tex2D(s0, tex); } } return c0; } 20
D
Výsledky – bez korekce
21
E
Výsledky – s korekcí tvaru
22
F
Výsledky – s korekcí barvy
23
G
Výsledky – s úplnou korekcí
24
H
Autoři obrazových materiálů v dokumentu
Obrázky jsou udány vždy jejich číslem, následuje autor a zdroj. 1. Wikimedia Commons: Pko – http://cs.wikipedia.org/wiki/Soubor:Fresnel lens.svg 2. Gottfried Schröder – [1] 3. Wikimedia Commons: Pko – http://cs.wikipedia.org/wiki/Soubor:Spherical aberration.svg 4. Gottfried Schröder – [1] 5. Wikimedia Commons: Albedo-ukr – http://cs.wikipedia.org/wiki/Soubor:Lenscoma.svg 6. Wikimedia Commons: Sebastian Kosch (Ginger Penguin) – http://cs.wikipedia.org/wiki/ Soubor:Astigmatism.svg 7. Gottfried Schröder – [1] 8. Wikimedia Commons: DrBob, Pitel – http://cs.wikipedia.org/wiki/Soubor:Lens6a.svg 9. Wikimedia Commons: DrBob, Pitel – http://cs.wikipedia.org/wiki/Soubor:Lens6b.svg 10. Roland van Roy – http://www.simprojects.nl/images/Visuals%20dimension.JPG 11. (neznámý autor) – http://users.telenet.be/cool things with fresnel lenses/3D theory.htm 12. Ondřej Nedvěd (autor tohoto článku) – ×
25
Reference [1] SCHRÖDER, Gottfried. Technická optika. Praha: SNTL, 1981, 158 s. ISBN 01-240-8650-0. [2] KA7OEI. Fresnel Lens Comparison [online]. 2010 [cit. 2012-08-08]. Dostupné z: http://modulatedlight.org/optical comms/fresnel lens comparison.html [3] ROLAND VAN ROY. 3 LCD’s with 3 Fresnel lenses [online]. 2002 2010 [cit. 2012-08-08]. Dostupné z: http://www.simprojects.nl/3 lcd’s with 3 fresnel lenses.htm [4] 3DLENS CORPORATION. Fresnel Lens Polarizer [online]. 2001 - 2011 [cit. 2012-08-08]. Dostupné z: http://www.3dlens.com/ [5] KINGSLAKE, Rudolf. Lens design fundamentals. San Diego: Academic Press, 1978, 366 s. ISBN 01-240-8650-0.
26