„Vizualizációs módszerek” változatai közötti eltérés

Innen: TételWiki
a
a (Példák sztereoszkopikug megjelenítési technikákra)
 
(5 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva)
1. sor: 1. sor:
 
== Képalkotó módszerek ==
 
== Képalkotó módszerek ==
 +
Ha 3D-s objektumokat szeretnénk megjeleníteni, valamennyire is kötődve a valóságos fényviszonyok reprodukálására, akkor alapvetően két fajta megközelítésből kell választanunk. Az egyik a fizikailag intuitív sugárkövetés alapú módszerek családja. Itt lényegében az intenzitást sugarak terjesztik az objektumok, így például a képernyőt reprezentáló kamera felületei között. A másik módszer, a raszterizáció eleve kihasználja, hogy a képet diszkrét pixelekből álló 2D-s rácson akarjuk előállítani és a problémát lényegében a felületek vetületeinek kitöltésére transzformálja.
 +
 
=== Raszterizáció ===
 
=== Raszterizáció ===
 +
Legyenek adottak a felületek, amelyeket le szeretnénk rajzolni a képernyőre. Ez nyilvánvalóan tartalmaz egy vetítést a 3D-s térből a 2D-s képfelületre. Ezt a lépést a raszterizáció a felületek (tipikusan poligonok) analitikus transzformációjával állítja elő. Poligonok esetén ez a csúcspontok levetítését jelenti. Ezek után két feladat van: előállítani pixelere diszkretizált képfelületen az alakzat körvonalát, majd kitölteni azt.
 +
 +
Négyzetrácsos képsík esetén mindkét feladat igen hatkékony algoritmusokkal valósítható meg. Az alakzat körvonalának előállítására a legegyszerűbb módszer a Bresemham-approximáció. Ez megadott két pont között sorban bejárja azokat a pixeleket, amelyeken a vonal áthalad. Az eljárás lényege, hogy a kindulási pontnak megfelelő pixelnél inicializál egy hiba változót, amit az egyenes meredekségének megfelelő értékkel növel. Amikor ez a hiba eléri azt a küszöböt, amikor az egyenes már a másik pixelhez van közelebb, akkor eggyel növeli az aktuális koordinátát és csökkenti a hibát. Az eljárás előnye, hogy lebegőpontos műveletek nélkül mnegvalósítható, olyan hatékonyan, hogy a belső ciklus léptetése csupűán néhány órajelet igényel.
 +
 +
Az alakzat körvonala után annak kitöltése úgy történhet, hogy meghatározzuk  körvonal befoglaló téglalapját, és minden sorban a befoglaló széléről elindulva megnézzük, hogy mikor érünk el a körvonalhoz tartozó (előre megjelölt) pixelt. Ekkortól minden pixelt kitöltünk addig, amíg újra egy eleve már megjelölt pixelhez nem értünk.
 +
 +
A raszterizációs módszerek valóságot imitáló trükkjei ott jelennek meg, hogy milyen színértékeket rendelünk a kitöltés során a pixelekhez. Mivel poligonjaink vannak, ezek mindig háromszögekre bonthatóak (sőt, eleve így vannak tárolva). Minden a fényhatásokat jellemző paramétert a háromszögek csúcsaiban szokás eltárolni (a pozíción túl a felületi normális, adott pont beli szín, felületi textúra koordináta stb.), majd ezeket az értékeket interpolálni a háromszög felületén az aktuális kitöltési pontokra.
 +
 +
Igen egyszerű példaként, tekintsük a legegyszerűbb megvilágítást: ha egy háromszög a pontszerű fényforrás felé néz, akkor világosabb, ha elfele, akkor sötétebb. A legegyszerűbb esetben ezt a fényforrás irányának (l) és a felületi normálisnak (n) az irányával lehet elérni, Így az adott pixel intenzitás értéke a két normálvektor skalárisszorzata:
 +
 +
:<math>I = \mathrm{max}(0, \vec{n}\vec{l})</math>
 +
 +
ahol a skalárisszorzat negatív lenne, ott zérus lesz a megvilágítás és így az intenzitás is.
 +
 
=== Sugárkövetés ===
 
=== Sugárkövetés ===
== Szín-rendszerek ==
+
A sugárkövetés a teljes megjelenítést a reprezentálni kívánt 3D-s rendszer koordinátarendszerében végzi, nem a képernyő terében, mint a raszterizáció. Bár a sugárkövető algoritmusoknak igen széles palettája van, a közös pont az, hogy valamilyen sugarakat használnak a fényesség transzportjának leírására a felületek és testek között. Az alábbiakban a legegyszerűbb és legintuitívabb eljárást ismertetjük.
 +
 
 +
Tekintsük a klasszikus optikát motivációnak: adottak fényforrásaink, ahonnan fotonok indulnak ki, amik egyenes vonalban terjednek addig, amíg valamilyen felületet el nem érnek. A felületen a tükröződés és törés törvényeinek megfelelően megváltoznak, majd haladnak tovább a következő felület felé. Mindegyik ilyen sugarat jellemezhetünk az általa szállított fényességgel, illetve hullámhosszal, de a legegyszerűbb esetben számolhatunk RGB intenzitásokkal is.
 +
 
 +
A legegyszerűbb sugárkövetési eljárás tehát úgy állítja elő a képet, hogy követi a fényforrásokból induló sugarakat egészen addig, amíg azok el nem nyelődnek valahol. Az elnyelő objektunok közül kitüntetett a kékpernyőt reprezentáló test: az ide eső sugarak alkotják a végén megjelenő képet.
 +
 
 +
Mivel a sugarak kontinuum kezelése lehetetlen a változatos alakú testek és határfelületek miatt, ezért lényegében egy hatalmas méretű Monte-Carlo eljárással van dolgunk: nagyon sok fénysugarat indítunk és a képernyőn integráljuk a beeső intenzitást. Ebből azonnal következik sokminden, a legfontosabb, hogy a fénysugarak számával csak lassan nő a képminőség, eleinte igen zajos.
 +
 
 +
A sugárkövető algoritmusoknak azonban határozott előnyeik vannak a raszterizációs technikákkal szemben: az átlátszó, áttetsző, illetve nagyon sok tükröző felületet tartalmazó rendszerek kirajzolása raszterizációs módszerrel igen bonyolult, ezzel szemben sugárkövetéssel teljesen intuitív a megvalósításuk. Hasonlóan, a fizikailag korrekt képalkotás (pl. diszkrét színek helyett spektrumokkal számolás és csak a legvégén RGB konverzió) is jól illik ehhez a megközelítéshez. A növekvő számítási kapacitás, valamint a kiterjedt optimalizációs trükkök segítségével manapság már ez a módszer is általánosan használható, főleg ha a képminőség az elsődleges.
 +
 
 +
== Színek reprezentálása ==
 +
Amit a szemünkkel különböző színeknek látunk, az a fizikailag az elektromágneses sugárzás intenzitás spektruma. A szemünkben három színérzékeny receptor-rendszer található, amelyek körülbelül a vörös-zöld-kék színekre érzékenyek, azonban ez az érzékenység nem diszkrét frekvenciát jelent, hanem egy kiterjedt tartományt. Nagyon durván mondhatjuk azt, hogy a szem érzékenysége a három színre három Gauss-függvénnyel jellemezhető.
 +
 
 +
Ha a azt akarjuk leírni, hogy mekkora intenzitású választ vált ki egy adott spektrum a három érzékelő-rendszerben, akkor az matematikailag a három súlyfüggvénnyel való konvolúciját jelenti a spektrummnak. Ez a három szám feleltethető meg a technikában használatos RGB koordinátáknak.
 +
 
 +
Számos probléma van itt azonban: a szem eltérően érzékeny a három tartományban érkező intenzitásra, maga az érzékelés tipikusan logaritmikus. A legnagyobb probléma, hogy a súlyfüggvények nem egészen ismertek, sőt, nem is teljesen pozitív definitek (azaz bizonyos frekvencián érkező sugárzás blokkoló hatás fejt ki egyik, vagy másik receptorokon), így a pusztán három számmal történő reprezentációban számos egyszerűsítő feltevés van, amelyek bizonyos helyzetekben problémákhoz vezethetnek.
 +
 
 +
==Sztereoszkopikus megjelenítés==
 +
A fentiekben részletezett mindkét módszer eredménye 2D-s kép. Azonban semmi nem akadályoz minket abban, hogy két képet készítsünk bármelyik eljárással ugyan arról a virtuális térről, úgy beállítva a nézeti képeket, hogy azok a két szemünk által látott képeknek felelhessenek meg. Ezek után csak az a kérdés, hogy hogyan tudjuk ezeket a képeket a szemünkre vetíteni, ezáltal teljes térhatást elérve.
 +
 
 +
===Példák sztereoszkopikus megjelenítési technikákra===
 +
 
 +
A sztereoszkopikus megjelenítés azokat a technikákat foglalja magába, amelyek lehetővé teszik két különböző sík kép szemünkbe juttatását.
 +
 
 +
A legrégebbi ilyen módszer az "anaglyph" eljárás, ahol két féle színnel (tipikusan piros-zöld) vetített képeket lehetett ezeknek megfelelő színszűrős szemöveggel nézni, így a szűrök mindig kiszűrték az egyik, vagy a másik képet az adott szem előtt. Ennek nyilván az a baja, hogy nem lehet sszíneket reprezentálni vele.
 +
 
 +
Az elvet tovább lehetett vinni úgy, hogy sűrűbben váltakoztak a spektrumban az egyik és másik szembe juttatható hullámhosszak, azonban az ehhez szükséges szűrők előállítása drága.
 +
 
 +
Teljesen más elven működnek a passzív sztereo megjelenítők, ahol a passzív jelző arra utal, hogy a szemüveg nem csinál semmit, abban csak két elforgatott beállítású polárszűrő található. A vetítőből egyszerre jön a kétféle polarizáltsággal a két féle kép, amely ismételten kiszűrődik a megfelelő beállítású polárszűrőn. Ennek az a hátránya, hogy normál papírral, vagy monitottal ilyen forrás nem állítható elő. Másik hátránya, hogy ha a megfigyelő elforgatja/eldönti a fejét, akkor széteshet a kép.
 +
 
 +
Az aktív sztereo megoldásnál a szemüvegek infravörös jelekkel szinkronizálva vannak a vetítőkkel. Két vetítő vetíti a két képet, a szokásos képfrissítésnél 2x magasabb frekvencián, 120 Hz-en. A szemüveg sorban kiválogatja a vetítőkből jövő képet jobb-bal-jobb-bal sorrendben.
 +
 
 +
Léteznek szemüvegmentes megvalósítások is. Ezek két nagy csoportra oszthatóak: vagy valamilyen módon követik a megfigyelő fejének/szemének mozgását, és ez alapján vetítenek két különböző képet, vagy egyszerre több különböző irányú képet vetítenek, függetlenül a szemlélő néőpontjától, de a kialakítás olyan, hogy adott pontból legerősebben csak az "odaszánt" vetület jut.
 +
 
 +
Ez utóbbak közül a parallaxis és lentikuláris módszert emeljük ki. A parallaxis módszernél az egymásba fésült jobb-bal kép előtt kis távolságra egy rács van, amely különböző szögekből nézve mindig kitkarja a nem abba szembe szánt képet vetítő pixeleket. Ez effektíve lefelezi a vízszintes felbontást, és viszonylag precíz pozíciókból nyújt csak jó minőségű térhatást. A legfejlettebb megoldások 30-40 különböző látószögből is el tudják ezt érni, de itt már nem 2 képet, hanem többet (18-at) fésülnek össze.
 +
 
 +
A lentikuláris lencséket használó rendszereknél pici lencsék sorozata van elhelyezve a képek előtt, amelyek különböző nézőirányok felé különböző képeket fókuszálnak.
  
 +
[[Fájl:GlassFree3D.png]]
 
{{MSc záróvizsga}}
 
{{MSc záróvizsga}}

A lap jelenlegi, 2011. június 13., 18:50-kori változata

Képalkotó módszerek

Ha 3D-s objektumokat szeretnénk megjeleníteni, valamennyire is kötődve a valóságos fényviszonyok reprodukálására, akkor alapvetően két fajta megközelítésből kell választanunk. Az egyik a fizikailag intuitív sugárkövetés alapú módszerek családja. Itt lényegében az intenzitást sugarak terjesztik az objektumok, így például a képernyőt reprezentáló kamera felületei között. A másik módszer, a raszterizáció eleve kihasználja, hogy a képet diszkrét pixelekből álló 2D-s rácson akarjuk előállítani és a problémát lényegében a felületek vetületeinek kitöltésére transzformálja.

Raszterizáció

Legyenek adottak a felületek, amelyeket le szeretnénk rajzolni a képernyőre. Ez nyilvánvalóan tartalmaz egy vetítést a 3D-s térből a 2D-s képfelületre. Ezt a lépést a raszterizáció a felületek (tipikusan poligonok) analitikus transzformációjával állítja elő. Poligonok esetén ez a csúcspontok levetítését jelenti. Ezek után két feladat van: előállítani pixelere diszkretizált képfelületen az alakzat körvonalát, majd kitölteni azt.

Négyzetrácsos képsík esetén mindkét feladat igen hatkékony algoritmusokkal valósítható meg. Az alakzat körvonalának előállítására a legegyszerűbb módszer a Bresemham-approximáció. Ez megadott két pont között sorban bejárja azokat a pixeleket, amelyeken a vonal áthalad. Az eljárás lényege, hogy a kindulási pontnak megfelelő pixelnél inicializál egy hiba változót, amit az egyenes meredekségének megfelelő értékkel növel. Amikor ez a hiba eléri azt a küszöböt, amikor az egyenes már a másik pixelhez van közelebb, akkor eggyel növeli az aktuális koordinátát és csökkenti a hibát. Az eljárás előnye, hogy lebegőpontos műveletek nélkül mnegvalósítható, olyan hatékonyan, hogy a belső ciklus léptetése csupűán néhány órajelet igényel.

Az alakzat körvonala után annak kitöltése úgy történhet, hogy meghatározzuk körvonal befoglaló téglalapját, és minden sorban a befoglaló széléről elindulva megnézzük, hogy mikor érünk el a körvonalhoz tartozó (előre megjelölt) pixelt. Ekkortól minden pixelt kitöltünk addig, amíg újra egy eleve már megjelölt pixelhez nem értünk.

A raszterizációs módszerek valóságot imitáló trükkjei ott jelennek meg, hogy milyen színértékeket rendelünk a kitöltés során a pixelekhez. Mivel poligonjaink vannak, ezek mindig háromszögekre bonthatóak (sőt, eleve így vannak tárolva). Minden a fényhatásokat jellemző paramétert a háromszögek csúcsaiban szokás eltárolni (a pozíción túl a felületi normális, adott pont beli szín, felületi textúra koordináta stb.), majd ezeket az értékeket interpolálni a háromszög felületén az aktuális kitöltési pontokra.

Igen egyszerű példaként, tekintsük a legegyszerűbb megvilágítást: ha egy háromszög a pontszerű fényforrás felé néz, akkor világosabb, ha elfele, akkor sötétebb. A legegyszerűbb esetben ezt a fényforrás irányának (l) és a felületi normálisnak (n) az irányával lehet elérni, Így az adott pixel intenzitás értéke a két normálvektor skalárisszorzata:

I = \mathrm{max}(0, \vec{n}\vec{l})

ahol a skalárisszorzat negatív lenne, ott zérus lesz a megvilágítás és így az intenzitás is.

Sugárkövetés

A sugárkövetés a teljes megjelenítést a reprezentálni kívánt 3D-s rendszer koordinátarendszerében végzi, nem a képernyő terében, mint a raszterizáció. Bár a sugárkövető algoritmusoknak igen széles palettája van, a közös pont az, hogy valamilyen sugarakat használnak a fényesség transzportjának leírására a felületek és testek között. Az alábbiakban a legegyszerűbb és legintuitívabb eljárást ismertetjük.

Tekintsük a klasszikus optikát motivációnak: adottak fényforrásaink, ahonnan fotonok indulnak ki, amik egyenes vonalban terjednek addig, amíg valamilyen felületet el nem érnek. A felületen a tükröződés és törés törvényeinek megfelelően megváltoznak, majd haladnak tovább a következő felület felé. Mindegyik ilyen sugarat jellemezhetünk az általa szállított fényességgel, illetve hullámhosszal, de a legegyszerűbb esetben számolhatunk RGB intenzitásokkal is.

A legegyszerűbb sugárkövetési eljárás tehát úgy állítja elő a képet, hogy követi a fényforrásokból induló sugarakat egészen addig, amíg azok el nem nyelődnek valahol. Az elnyelő objektunok közül kitüntetett a kékpernyőt reprezentáló test: az ide eső sugarak alkotják a végén megjelenő képet.

Mivel a sugarak kontinuum kezelése lehetetlen a változatos alakú testek és határfelületek miatt, ezért lényegében egy hatalmas méretű Monte-Carlo eljárással van dolgunk: nagyon sok fénysugarat indítunk és a képernyőn integráljuk a beeső intenzitást. Ebből azonnal következik sokminden, a legfontosabb, hogy a fénysugarak számával csak lassan nő a képminőség, eleinte igen zajos.

A sugárkövető algoritmusoknak azonban határozott előnyeik vannak a raszterizációs technikákkal szemben: az átlátszó, áttetsző, illetve nagyon sok tükröző felületet tartalmazó rendszerek kirajzolása raszterizációs módszerrel igen bonyolult, ezzel szemben sugárkövetéssel teljesen intuitív a megvalósításuk. Hasonlóan, a fizikailag korrekt képalkotás (pl. diszkrét színek helyett spektrumokkal számolás és csak a legvégén RGB konverzió) is jól illik ehhez a megközelítéshez. A növekvő számítási kapacitás, valamint a kiterjedt optimalizációs trükkök segítségével manapság már ez a módszer is általánosan használható, főleg ha a képminőség az elsődleges.

Színek reprezentálása

Amit a szemünkkel különböző színeknek látunk, az a fizikailag az elektromágneses sugárzás intenzitás spektruma. A szemünkben három színérzékeny receptor-rendszer található, amelyek körülbelül a vörös-zöld-kék színekre érzékenyek, azonban ez az érzékenység nem diszkrét frekvenciát jelent, hanem egy kiterjedt tartományt. Nagyon durván mondhatjuk azt, hogy a szem érzékenysége a három színre három Gauss-függvénnyel jellemezhető.

Ha a azt akarjuk leírni, hogy mekkora intenzitású választ vált ki egy adott spektrum a három érzékelő-rendszerben, akkor az matematikailag a három súlyfüggvénnyel való konvolúciját jelenti a spektrummnak. Ez a három szám feleltethető meg a technikában használatos RGB koordinátáknak.

Számos probléma van itt azonban: a szem eltérően érzékeny a három tartományban érkező intenzitásra, maga az érzékelés tipikusan logaritmikus. A legnagyobb probléma, hogy a súlyfüggvények nem egészen ismertek, sőt, nem is teljesen pozitív definitek (azaz bizonyos frekvencián érkező sugárzás blokkoló hatás fejt ki egyik, vagy másik receptorokon), így a pusztán három számmal történő reprezentációban számos egyszerűsítő feltevés van, amelyek bizonyos helyzetekben problémákhoz vezethetnek.

Sztereoszkopikus megjelenítés

A fentiekben részletezett mindkét módszer eredménye 2D-s kép. Azonban semmi nem akadályoz minket abban, hogy két képet készítsünk bármelyik eljárással ugyan arról a virtuális térről, úgy beállítva a nézeti képeket, hogy azok a két szemünk által látott képeknek felelhessenek meg. Ezek után csak az a kérdés, hogy hogyan tudjuk ezeket a képeket a szemünkre vetíteni, ezáltal teljes térhatást elérve.

Példák sztereoszkopikus megjelenítési technikákra

A sztereoszkopikus megjelenítés azokat a technikákat foglalja magába, amelyek lehetővé teszik két különböző sík kép szemünkbe juttatását.

A legrégebbi ilyen módszer az "anaglyph" eljárás, ahol két féle színnel (tipikusan piros-zöld) vetített képeket lehetett ezeknek megfelelő színszűrős szemöveggel nézni, így a szűrök mindig kiszűrték az egyik, vagy a másik képet az adott szem előtt. Ennek nyilván az a baja, hogy nem lehet sszíneket reprezentálni vele.

Az elvet tovább lehetett vinni úgy, hogy sűrűbben váltakoztak a spektrumban az egyik és másik szembe juttatható hullámhosszak, azonban az ehhez szükséges szűrők előállítása drága.

Teljesen más elven működnek a passzív sztereo megjelenítők, ahol a passzív jelző arra utal, hogy a szemüveg nem csinál semmit, abban csak két elforgatott beállítású polárszűrő található. A vetítőből egyszerre jön a kétféle polarizáltsággal a két féle kép, amely ismételten kiszűrődik a megfelelő beállítású polárszűrőn. Ennek az a hátránya, hogy normál papírral, vagy monitottal ilyen forrás nem állítható elő. Másik hátránya, hogy ha a megfigyelő elforgatja/eldönti a fejét, akkor széteshet a kép.

Az aktív sztereo megoldásnál a szemüvegek infravörös jelekkel szinkronizálva vannak a vetítőkkel. Két vetítő vetíti a két képet, a szokásos képfrissítésnél 2x magasabb frekvencián, 120 Hz-en. A szemüveg sorban kiválogatja a vetítőkből jövő képet jobb-bal-jobb-bal sorrendben.

Léteznek szemüvegmentes megvalósítások is. Ezek két nagy csoportra oszthatóak: vagy valamilyen módon követik a megfigyelő fejének/szemének mozgását, és ez alapján vetítenek két különböző képet, vagy egyszerre több különböző irányú képet vetítenek, függetlenül a szemlélő néőpontjától, de a kialakítás olyan, hogy adott pontból legerősebben csak az "odaszánt" vetület jut.

Ez utóbbak közül a parallaxis és lentikuláris módszert emeljük ki. A parallaxis módszernél az egymásba fésült jobb-bal kép előtt kis távolságra egy rács van, amely különböző szögekből nézve mindig kitkarja a nem abba szembe szánt képet vetítő pixeleket. Ez effektíve lefelezi a vízszintes felbontást, és viszonylag precíz pozíciókból nyújt csak jó minőségű térhatást. A legfejlettebb megoldások 30-40 különböző látószögből is el tudják ezt érni, de itt már nem 2 képet, hanem többet (18-at) fésülnek össze.

A lentikuláris lencséket használó rendszereknél pici lencsék sorozata van elhelyezve a képek előtt, amelyek különböző nézőirányok felé különböző képeket fókuszálnak.

GlassFree3D.png

MSc záróvizsga tételek
Tételek Soktest rendszerek | Transzportfolyamatok | Véletlen gráfok generálása, tulajdonságai | Elsőrendű és folytonos fázisátalakulások | Válasz- és korrelációs függvények, fluktuáció-disszipáció tétel | Sztochasztikus folyamatok | A statisztikus fizikai szimulációk alapjai és a Monte Carlo módszer | Dinamikai rendszerek, kaotikus viselkedés | Adatelemzés: lineáris és nem lineáris regresszió egy modellen bemutatva | Adatelemzés: bootstrap modellek | TCP hálózat működése | Adatelemzés: ARCH, GARCH folyamatok | Numerikus módszerek | Vizualizációs módszerek