. Simularea Adancimii de Camp In Imagini Sintetice

Introducere

Încercarea de a găsi o cale de a crea o imagine fotografică realistă a fost un scop pentru grafica pe calculator mult timp. În general, graficieni au realizat progrese prin examinarea în primul rând a lumi de lângă ei, și apoi comparând-o cu ceea ce se realiza pe calculator. Dacă imaginile pe calculator nu arată așa de bine, se pune întrebarea "Ce lipsește din grafica computațională ?". La început multe aspecte ale lumii reale au fost introduse rapid în grafica computațională. Câteva dintre aceste înbunătățiri au vizat ascunderea suprafetelor opace, obiectele strălucitoare prezentau puncte lucitoare( highlights), suprafețele prezentau texturi (ca simularea lemnului). Au fost dezvoltate metode pentru a include aceste efecte în imaginile sintetice, astfel încât acestea au ajuns să arate din ce în ce mai reale.

Una dintre primele imagini sintetice reușite a fost realizată folosind câteva din legile fizici. Când vorbim de o lentilă, fizica clasică a reprezentat drumul unei raze atfel: raza pornește de la o sursă de lumină, trece prin lentilă și își continuă drumul. Aceasta metodă a fost denumită "ray-tracing".

Sa crezut că acesta tehnică ar fi o tehnică bună de a simula o imagine sintetică, dar era foarte costisitoare ca timp. Întradevăr este o idee bună dar destul de costisitoare datorită calculelor matematice destul de complicate, s-au implementat tehnici de accelerare dar aceste complică mult algoritmul clasic de ray-tracing. Avantajul este că se poat realiza imagini mai repede, prin tehnici sigure.

Deobicei, în generarea unei imagini este folosit modelul pin-hole de cameră, deoarece reduce foarte mult din complexitatea algoritmului de ray-tracing dar realizează o imagine "all in focus"( în care toate puncte(obiecte) sunt clare – AIF) (ex. fig. 1).Însă un sistem optic real nu conține lentile cu raza zero, cazul camerei pin-hole. Efectul pe care îl generează lentilele este acela că nu toate obiectele din scenă sunt vizibile, clar, unele vor mai neclare( blurred) (ex. fig. 2) . Referitor la acestă problemă se încercă un nou algoritm pentru a obține o imagine care să corespundă noilor setări ale camerei.

Fig. 1 – Imagine AIF Fig. 2 – Imagine Blurred

Modelul de cameră pin-hole, care detremină o imagine AIF, nu poate rezolva probleme legate de focalizarea unui obiect într-o scenă. Deasemenea algorimi mai rapizi de generare de imagini deobicei ignoră acest aspect, iar algoritmul de ray-tarcing este destul de lent. Din aceste cauze se înceracă o simulare acestui efect folosind tehnici propri prelucrări iamginilor, care sunt mai rapide.

Cap. I – Considerații fotografice despre adâncimea de câmp

1.1 Ce este adâncimea de câmp?

A ști ceea ce este focusat (și ceea ce este în afara focusului) este una din considerațiile de bază atunci când se realizează o fotografie. Cu toate că o focusare exactă are loc doar la o distanță precisă, care depinde de formatul filmului, de lungimea focală a lentilei, mărimea deschiderei și distanța de focusare, regiunea aparentă de focusare, sau adâncimea de câmp, pot varia considerabil. Altfel spus zona de punctualitate acceptabilă se denumită adâncime de câmp.

Fără a lua în considerare legile fizici, care determină acest fenomen, acestă adâncime de câmp este realizată de un fenomen denumit cercul cel mai mic de împrăștiere. Când un obiect se află la distanța exactă de focusare, fiecare punct din obiect va fi teranspus ca un punct pe film. Când obiectul nu mai este în focus, punctele de pe film încep să crească și să devină cercuri. Cu cât un obiect este mai mult în afara focusului, cercul de confuzie (împrăștiere) devine mai mare. Dar la un anumit punct (care dinnou depinde de film, lungimea focală a lentilei etc), cercurile de împrăștiere sunt neînsemnate și imaginea apare ca fiind focusată într-un interval de distanțe și având ’adâncime de câmp’.

1.2 Cercul de împrăștiere

În tratatul "New Lexical Manual" se afirmă că în medie ochilui, la o distanță de 10 inci, poate distinge linii individuale care se află la mai mult de 1/100 inci depărtare una de cealaltă. Orice detaliu aflat la o distanță mai mică de 1/100 inci este consideat punctual. Acestă observație stă la baza calculări majorități tabelelor DOF.

O lentilă focusează la o singură distanță precizată. Tot ceea ce se află în afara acestei distanțe nu este focusat. Punctele mai îndepărtate de planul de focusare sunt considerate ca punte în fața filmului, devenind cercuri fuzzy în momentul când ajung pe film. Punctele mai apropiate de cameră vor fi considerate ca puncte în spatele filmului, deci vor genera deasemenea cercuri fuzzy când ajung pe film. Cercurile fuzzy se numesc cercuri de încețoșare (confuzie).

Dacă deschiderea aparatului este redusă, reducând lumina care trece, cercul de confuzie se reduce la valori negative. Dar, micșorarea deschideri determină un cerc de confuzie mai mic și extinde rangul de punctualitate aparentă. Mărind deschiderile negative cercul de confuzie, apare și la deschideri foarte mici.

Factori care influențează DOF :

lungimea focală a lentilei

alegerea numărului lentilei (f-stop)

mărimea cercului de confuzie aceptat, este determinată de distanța la obiect

factorul de mărire

distanța de focusare

1.3 Distanța hiperfocală

Distanța hiperfocală este distanța focală peste care se realizează cea mai mare adâncime de câmp. Este cel mai apropiat punct care va păstra cercul de confuzie constant la infinit. Cel mai apropiat punct care poate fi considerat punctiform, aceptabil, se va află la jumătatea distanței dintre cameră și distanța hiperfocală. Dacă, distanța hiperfocală este de 40 de picioare, zona care se află în jurul distanței de 20 de picioare va fi acceptabilă ca încețoșare.

Importanța acestei mărimi consta în faptul că: pot apărea efecte de ieșire din focus când se dorește focusarea unui paln îndepărtat. Distanța hiperfocală este o funcție care depinde de raza( deschiderea) lentilei. Mai precis schimbarea razei determină schimbarea distanței hiperfocale.

Se ridică problema: „Folosirea unei raze mici duce la adâncime de câmp mai mare?”. Răspunsul este “nu”. Când razele trec prin lentilă unele dintre acestea sunt difractate. Dacă avem o rază mare, proporția dintre lunina difractată și cea nedifractată e neglijabilă, astfel încât difracția nu contribuie la pierderea clarități imagini prea mult( figura din stânga). Când raza este mică proporția dintre lumina difractată și cea nedifractată devine importantă. Ca efect, calitatea imagini se reduce( figura din dreapta). În general, calitatea unei lentile crește cu cât raza este mai mică. Acestă înbunătățire este însă limitată până la un anumit punct după care calitatea lentilei scade datorită impactului difracției.

1.4 Planele cele mai apropiate și departate de încețoșare aceptabilă

Dacă camera este focusată într-un punct mai apropiat decât distanța hiperfocală, infinitul nu va mai fi total în focus(AIF) și va exista un punct apropiat și unul îndepărtat în care cercul de încețoșare depășește mărimea dorită. Cu cât puncul de focus se apropie de cameră, distanța dintre limita superioară și cea inferioară de confuzie se reduce, iar acesta este cunoscută sub numele de adâncime de câmp.

1.5 Limita de punctiformitate

Un fenomen optic diferit este tendința lumini de a se difracta( a schimba direcția și intensitatea unor grupuri de unde după ce au tercut de un obstacol sau o deschizătură). Fenomenul poate fi explicat ca o coroană care se realizează în jurul unei pietre magnifice.

Nivelul difarcției depinde de lungimea de undă a lumini, care variază de la spectrul vizibil al albastrului( 400 nanometri) la cel al roșului( 700 nanometri). O deschidere mai mică, și o frecvența mai mare apropiată de roșu mărește difracția și de fapt descrește rezoluția și limitează gradele de amplificare.

Un punct de lumină se compune din diferite lungimi de undă, și în mare măsură, va apărea ca un disc. Vorbind despre un o mărime punctiformă se aceptă în general acesta fiind un cerc cu raza de 1/200 inci, când este considerată din punct de vedere al distanței de realizare.

Leica Manual definește rezoluția lentilei ca:

"…spațiul dintre două puncte fixate este egal cu lungimea de undă a lumini folosită pentru măsurători, înmulțită cu lungimea focală a lentilei împărțită la diametru." Cum lungimea focală împarțită la diametru este egală cu numărul lentilei( f-stop), ecuația se reduce la lungimea de undă * f-stop.

Cap. 2 – Formarea imaginii cu ajutorul algoritmului de ray-tracing

2.1 Lumina și iluminarea

2.1.1 Fotoni, frecvențe și lungimi de undă

Încă nu a fost satbilită natura lumini. Există doua modele care descriu comportamentul lumini dar nici unul dintere ele nu este complet. Este vorba despre caracterul ondulatoriu al lumini, care realizează o anologie cu valurile mari. Pe de alta parte avem caracterul corpuscular al lumini, care afirmă că lumina este formată din multe particule.

Tehnicile de ray-tracing se bazează pe caracterul corpuscular al lumini, care spune că o rază de lumină este traictoria unei particule. S-ar putea lucra si cu caracterul ondulatoriu al lumini, dar ar fi mult mai greu și scump. Oricum nici un model nu este complect sau corect în întregime, în unele condiții lunima se comportă ca o undă, în altele ca o particulă. Modelul corpuscular, singur, poate explica în mare parte comportamentul lumini și este cel folosit în algoritmul de raz-tracing.

Particula de bază a lumini este fotonul. Fotonul poate fi imaginat ca o mică minge de biliard, zburând în spațiu, fotonul nu se mișcă doar în linie dreaptă dar și vibreză. În prezent acestă ‘vibrație’ e un fel de abstractizare matematică. Este utilă deoarece majoritatea formulelor care descriu vibrațiile se pot aplica și pentru a descrie coportamentul lumini. Cu toate că nu exista ceva care vibrează, așa cum fotonul nu este o bilă de biliard, explicația ondulatorie a lumini pentru culoare este foarte puternică și dă un punct de start pentru înțelegerea culori.

Sa demonstrat căfiecărui foton îi putem asocia o frecvență de vibrație particulară. O alternativă pentru a descrie vibrațiile fotonului este lungimea de undă. Lungimea de undă și frcvența sunt foarte apropiate ca valoare.

Imaginați-vă că un foton vibrează după un pattern prestabilit, ca în fig. 1. Când fotonul se află în punctul A, începe să cobore pe cerc. Fotonul se mișcă în spațiu, vibrând în sus și jos prin spațiu. După un timp va termina ciclul sus-jos și va începe să se miște în jos dinou. Punctul unde începe să se repete ciclul este notat cu B. Dacă fotonul se mișcă înainte cu o viteză constantă, atunci de fiecare dată când relizeaza o distanță în spațiu egală cu distanța de la A la B va realiza un ciclu complet de vibrație. Acesta distanță va reprezenta lungimea de undă a fotonului.

Fig. 1

Dacă creștem frecvența, fotonul va realiza ciclul când terce prin lentilă, atfel va traversa lentila înainte să se repete. Deci când frecvența crește, lungimea de undă scade. Analog, dacă descreștem frecvența, fotonul va realiza un ciclu într-un timp mai lung. Cum se mișcă înainte la o viteză constantă, va parcurge un spațiu mai mare până se repetă, deci când frecvența e mai mică lugime de undă e mai mare.

Știim din teoria relativității că viteza lumini este o constantă în oreice mediu. Putem rezuma acete observații în următoarea formulă

(1)

unde:

= lungimea de undă (metri)

f’ = frecvența (cicluri pe secundă)

c = viteza lumini( în vid, ) .

În unele situații va fi convenient să vorbim de frecvența fotonului, iar în alte situații e mai normal să vorbim de lungimea de undă. Oricum ambele mărimi descriu același lucru în moduri diferite, iar în anumite medii putem determina mărimile conform formulei (1) . Este deasemenea bine să se știe că energia unui foton se leagă de frecvență:

unde:

E = energia(J)

h = constanta lui Planck().

Sa demonstrat că există ocorelare dirrectă între frecvența( implicit energia) unui foton care lovește ochiul șenergia) unui foton care lovește ochiul și culoarea de răspuns. Frecvențele individuale a diferiți fotoni sunt cele care determină culoarea fiecărui obiect care produce lumină sau doar o reflectă.

2.1.2 Lumina și suprafețele

Pentru a genera imagini realistice este nevoie să se înțeleagă comportamentul lumini pe suprafețele diferitelor obiecte. Acesta nu e o problemă ușoară, deoarece încă multe din fenomenele care le determină lumina nu sunt complet înțelese. Dar există unele aproximații care pot genera imagini surprinzător de bune.

Interacțiunea lumini cu suprafețele se poate diviza în patru clase: reflexie speculară, reflexie difuză, difracție speculară și difracție difuză. Când un foton lovește o suprafață, se vor reliza efecte de schimbare a direcției și culori ca efect al celor patrufenomene. Contribuția pe care o are fiecare efect asupra fotonului este influențată de propietățile materialului. Comportanentul materialului poate fi diferit pentru un foton care vine cu o anumită frecvență și un anumit unghi de incidență.

2.1.3 Spectrul și culorile

Când ne uităm la un bec normal, vedem ’lumină albă’. Ne putem întreba de unde vine lumina albă, de exemplu dacă am văzut vreodată o bandă albă pe curcubeu? Probabil ca nu. Albul nu este o culoare a spectrului pură, nici un foton singur nu poate crea impresia de alb. În schimb, impresia de zone albe este creată când fotoni de diferite culori lovesc aceasi portiune a ochiului aprope simultan. Ochiul reunește aceste culori dând impresia unei lumini albe.

Un bec alb emite fotoni la diferite frecvențe, dar ei vin atât de repede și mulți încât ochiul îi procesează împreună obținându-se în final o culoare albă. Este interesant și util de știut câți fotoni sunt generați la o anumită fercvență de o sursă de lumină. Se pot folosi aparate pentru a realiza măsurători referitoare la numărul de fotoni pentru fiecare lungime de undă emiși într-un interval de timp și afișa rezultatele. O astfel intensitate pe amplitudine de obicei se numește diagrama spectrului de frecvență, care deobicei e întâlnită deobicei sub denumirea de spectru. Fig. 2 arată spectrul de lumimă cunoscut ca CIE Standard Illumination D6500, care aproximează spectul într-o zi noroasă.

Fig. 2 – Spectrul CIE D6500 de iluminare standard, care aproximează lumina solară într-o zi noroasă

Un model convenient, de a reprezenta informațiile, este de a asocia un spectru cu o rază, ca în fig. 3. În acest model, spectrul adună toți fotoni care se află de-a lungul unei raze, abstractizarea devine utilă deoarece toate informațiile împreună sunt grupate. O problemă a acestui model este de a nu modela refracția foarte bine. Când o rază traversează două medi, deobicei își schimbă direcția în funcție de un unghi care depinde de lungimea de undă. Dacă folosim o singură rază pentru a modela toate lungimile de undă simultan, atunci nu există o singură direcție care să fie corectă.

Fig. 3- Un mod de a trata culoarea prin atașarea unei spectru fiecărei raze, descriind lumina razei. Spectrul este dat de pozițiapunctelor pe axele deintensitate și lungime de undă

O altă soluție este de a asigna o lungine de undă particulară fiecărei raze. Dacă dorim să aflăm amplitudinea mai multor lungimi de undă care părăsesc suprafața va trebui să fie folosite mai multe raze, una pentru fiecare lungime de undă care ne interesează.

2.1.4 Reflexia

Presupunând că iluminăm un bar auriu cu o lumină de D6500 (fig. 2), ca în figura 4.Un fel de a arăta cum auriul ar reacționa la lumina care ajunge (la un unghi anume) este de a desena un spectru de reflexie. La un unghi particuar de incidență, spectrul indică procentajul de lumină pe care suprafața aurie îl reflectă pentru fiecare lungime de undă. Pentru a determina culoarea lumini care părăsește suprafața, vom îmulți cantitatea de lunină care ajunge cu procentajul pentru fiecare lungime de undă care se reflectă. Dacă sosește o ‘culoare de la soare’ va pleca o ‘culoare aurie’ de pe suprafață.

Considerați un foton care vibreză pe suprafața unui obiect. Atomi obiectului deasemenea vibrează, la o varietate de frecvențe. Când un atom loveșe un atom, are loc un schimb de energie. Dacă fotonul are energia necesară pentru a determina trecerea atomului la un stadiu stabil, fotonul va fi absorbit și atomul va avea un nivel de energie pentru un timp. Dacă nu există energie suficientă, pentru realizarea transferului, atomul va absorbi doar o parte a energiei fotonului pentru un moment, dar o va pierde foarte repede prin eliberarea ei sub formă de căldură.

Dar dacă fotonul are frecvența necesară pentru a transfera energia lui atomului, atomul va absorbi energia fotonului (distrugând fotonul) și oscilând la un nivel mai ridicat. Atomul nu poate păstra acest nuvel ridicat, astfel încât după un timp eliberează energia pe care a luat-o prin ciocnirea de foton. În acest proces de emitere de energie este generat un nou foton, care conține energie generată prin transmisie. Dar recalculând acesta este chiar energia care a fost cedată de foton prin lovire. Deci un foton lovește un atom, atomul absorbe fotonul și începe să vibreze mai rapid, apoi atomul se calmează și pierde din vibrația adițională, simultan emițând un nou foton cam la aceași frecvență ca fotonul inițial. De fapt, fotonul resultant apare ca reflectat de suprafață.

2.1.5 Coloarea și ochiul

Am mai spus că defapt noi nu vedem culoarea albă, mai bine zis ochilul realizează o mediere a fotonilor primiți transformându-i în alb. Acesta este modul în care se formează culoarea la tot ce vedem, lume noastră conține foarte puține surse de lumină monocromatice (cu aceași frecvență de undă, laserele sunt o excepție). Este normal să ne înrebăm ce spectru oferă pentru o culoare precizată.

Psihologi și fizicieni care au studiat fenomenul au ajuns la o concluzie surprinzătoare. Să presupunem că cineva raportează o lumină portocalie. Sa demonstrat că există un număr infinit de spectre care pot genera aceași lumină, păstrând aceași culoare de portocaliu.

Aceasta nu înseamnă că nu înțelegem ochiul și culoarea de loc. Dându-se o culoare, știm să alcătuim un spectru care va genera acestă culoare. Dar după cum am spus mai sus, există un număr infinit de spectre, fiecare dintre acestea definit dar echivalente. Deci nu există nici un spectru ’corect’ pentru portocaliu, toate generează aceeași culoare.

Fenumenul este important atunci când vorbim despre spectrul de culori și fotoni lovindu-se într-un spatiu 3D. Spectrul final a doi pixeli diferiți poate apărea nerelaționat când ne uităm doar la frecvență, amplitudine, dar poate produce aceași culoare pentru ochi.

2.1.6 Normale la suprafață

Când se studiază ce se întâmplă cu lumina care ajunge la o suprafață se vorbește despre propietățiile geometrice ale suprafetei denumite normale la suprafață. Normala la suprafață e un vector care indică direcția perpendiculară la suprafață în acel punct. De obicei se reprezintă ca un punct care începe de pe suprafață și are direcție opusă interiorului obiectului.

Normala la un plan este aceiași în orice punct al planului fig. 4-a. Normala la suprafața unei sfere într-un punct dat urmăreste raza din centrul sferei la acel punct și mai departe fig. 4-b. Alte obiecte au normale relative ca în fig. 4-c. Cu excepția câtorva obiecte fiecare punct de pe obiect are o normală proprie.

Fig. 4 Câteva normale la plan

Deobicei se notează cu N și sunt considerați ca vectori normalizați (au norma egală cu 1).

2.2 Mecanisme de transport a luminii

Există patru mecanisme (modele) în care lumina interacționează cu suprafața (și mediul). Se numesc metode de transport a lumini. În general interacțiunea lumini implică aspecte legate de considerente geometrice și de culoare. În continuare se vor fi prezentate aspectele geometrice.

2.2.1 Reflexia speculară totală

Ca exemplu, majoritatea imagini dintr-o oglindă se realizează pe baza reflexiei speculare. Punctele luminoase de pe o suprafață lucioasă sunt deasemenea exemple de reflexie speculară.

Lumina de la o sursă lovește suprafața obiectului și apoi o părăsește, deci este un caz de absorție și emitere de către obiect. Pentru unele suprafețe care par a reflecta specular, deformează de fapt lumina datorită lolviri cu suprafața.

Fig. 5 Geometria reflexiei

Fig. 5 arată un foton care ajunge la o suprafață și o părăsește. Unghiul dintre normala la suprafață, notată cu N, și direcția razei( raza incidentă), notată cu I, este numit unghiul de incidență, notat cu . Unghiul dintre normala la suprafață și raza reflectată, notată cu R, se numește unghi de reflexie . Având N și I dat se dorește aflarea lui R.

Două legi ale fizici ne ajută să găsim expresia lui R. Prima este că rază incidentă, normala la suprafață, și raza reflectată se află toate în același plan; deci raza de reflexie este o combinație liniară între raza incidentă și normala la suprafață. Al doilea principiu spune că unghiul de incidență este egal cu unghiul de reflexie.

Putem determina R în mai multe feluri, dar cele mai populare sunt soluția algebrică și ce a geometrică( se pot folosi și alte principi din optică). Multe deviați geometrice sunt posibile. Se va arăta soluția algebrică.

Se începe prin scrierea legiilor fizice matematic:

( a)

. ( b)

Se poate vedea din figura de mai sus că și . Deci putem rescrie formula (b) astfel:

( c)

Ultimul pas este doar recalculare, deoarece Dacă setăm pe , atunci

Formula completă pentru direcția razei reflectate este:

unde I – raza incidentă

N – normala la suprafață

R – raza reflectată.

Ca confirmare, vom recalcula morma vectorului R din formula (c) (recalculăm pentru vectorul A, lungimea(A) = |A| = dacă , atunci |A|=1):

(4)

La pasul 3 am folosit: , iar la pasul 4: , .

2.2.2 Reflexie difuză totală

Reflexia speculară apare doar pe suprafețe lucioase. O suprafață ygrumțuroasă se comportă puțin diferit. Lumina reflectată specular nu e un subiect ușor al acestei probleme, datorită loviri cu suparafața obiectului. Lumina reflectată difuz chiar interacționeză cu suprafața. Când un foton e absorbit de un atom de pe suprafață, fotonul poate fi transformat în căldură sau poate fi iradiat dinou. Dacă fotonul e iradiat, nimic nu indică direcția pe care o va urma fotonul. Cu toate că un foton are doar o direcție, mai multi fotoni odată cu trecerea timpului o vor lua în părți diferite.

Singura geometrie de care trebuie să luăm semă este de a vedea cât din suprafață este vizibilă sursei. Putem afla acesta din ungiul format de raza incidentă la suprafață si normala la suprafață. Contribuția lumini care ajunge la suprafață este paroporțională cu cosinusul unghiului, ca în fig. 6.

Acesta este modelul de reflexia Lambertiană al reflecției dufuziei totale.

Fig. 6

2.2.3 Transmisie speculară totală

Pentru un obiect transparent, lumina poate ajunge din spatele obiectului pe suprafață și să o traverseze, contribuind la lumina care părăsește suprafață. Acestă lumină este numită lunimă transmisă.

Nu e necesar ca mediile de fiecare parte a obiectului să fie aceleași, putem ave aun acvariu umplut cu apă. Lumina poate trece din aier prin sticlă, apoi din sticlă prin apă, apoi din apă prin sticlă și din sticlă în aier. Fiecare dintre aceste tranziții pot afecta direcția razei. Fig. 7 reprezintă un liniar într-un pahar cu apă.

Fig. 7 Refracția într-un pahar cu apă.

Pentru a determina cum trebuie lumina care se transmite, trebuie să studiem comportamentul lumini când trece granița dintre două medi. Acest fenomen se numește transmisie sau refracție. Este imortant de aflat că fiecare mediu are un indice de refracție, care descrie viteza lumini în acel mediu în comparație cu viteza lumini în vid. Pentru adetermina cum lumina își schimbă teraictoria când traversează mediile, se compară indici de refracție a materialului și unghiul razei incidente.

Fig. 8 Geometria refracției

Fig. 8 reprezintă o rază (notată cu I), care trece printr-o suprafață cu normala N. Raza incidentă face un unghi (ungiul de incidență) cu suprafața normală. Raza transmisă T face un unghi (unghiul de refracție) cu normala reflectată. Raza incidentă, normala și raza refractată se găsesc din nou toate în același plan. Ecuația care leagă unghiurile de incidență și transmitere a razei este legea lui Snell:

(a)

unde:

– este indicele de refracție al mediului 1 în raport cu vidul

– este indicele de refracție al mediului 2 în raport cu vidul

– este indicele de refracție al mediului 2 în raport cu mediul 1.

Se dovedește că indicele de refracție este dependent de lungimea de undă a razei incidente. De aceea o prismă separă raza incidentă într-un spectru: diferite lungimi de undă sunt refractate de diferite cantități. Acest lucru a fost observat de Newton în cartea sa despre optică; fig. 9 arată o diagramă a unei prisme care refractă lumina solară într-un spectru bazat pe una din diagramele lui Newton.

Fig. 9 Lumina soarelui trecând printr-o pinhole, lovește o prismă și e reflectată de un spectru pe un ecran.

Fig. 10

Fig. 11

Fig . 10 prezintă indicele de refracție ca o funcție de lungime de undă. Câțiva indici de refracție folositori sunt listați în fig. 11. Cu toate că aceștia sunt toți măsurați în raport cu vidul, valorile relative la aer sunt foarte similare.

2.2.4 Reflecția internă totală

Un tip de comportament al lumini care apare la frontiera între medii se numește reflexie internă totală (TIR). TIR este un fenomen fizic care apare atunci când raza de lumină încearcă să treacă dintr-un mediu dens într-un mediu mai puțin dens cu un unghi obtuz. Rezultatul este că raza de lumină alunecă pe frontiera dintre medi, și efecul este că în loc de a fi refractată este reflectată specular. Acest efect este mecanismul de bază din spatele fibrelor optice; ele ‘prind’ raza în interiorul tubului de fibră, asigurându-se că TIR apare ori de câte ori raza încearcă să iasă.

Fig. 12

Dacă dorim, putem găsi o formulă matematică pentru ungiul critic în spatele căruia se produce reflexia internă totală. Dar în grafica pe calculator deobicei dorim să detectăm când are loc TIR – apoi folosim ecuația pentru reflexia seculară perfectă ca să calculăm raza ‘refractată’. Fig . 12 ne prezintă raza traversând frontiera dintre sticlă și aer la diferite unghiuri; acestă frontieră are unghiul critic de 41,80.

Vom vedea în continuare cum să detectăm apariția TIR în acel punct uităm de ecuațiile pentru raza refractată și calculăm în schimb direcția pentru reflexia speculară perfectă.

2.2.5 Optica refracției

Putem afla formula pentru direcția razei de refracție cu ajutorul fig. 13.

Fig. 13 Geometria refracției

Cele două legi fizice sunt: raza refractată este coplanară cu raza incidentă și raza normală, și legea lui Snell din ecuația de mai sus. Vom adopta notația și . Legile fizice sunt:

(1)

(2)

Se observă ca în formula (1) calculăm , și nu cum ne-am aștepta din forma formulei (a). Relația este ; termenul se va dovedi mult mai folositor mai târziu.

Scopul nostru este să-i găsim pe și în relația (1). Ca și în cazul reflexiei speculare avem cel puțin două metode majore la dispoziția noastră: algebrică și geometrică. În abordarea algebrică rezolvăm acestă pereche de ecuații simultan folosind manipularea ecuațiilor. În abordarea geometrică analizăm geometria situației și scriem toate relațile pe care le găsim; simplificare duce apoi la găsirea necunoscutelor.

În amândouă abordările, se vor folosi următorele valori:

(3)

(4)

2.2.6 Soluția algebrică pentru raza refractată

Rudicăm la pătrat ambele părți ale fornumei (1), și rezultă:

(5)

Dar , deci putem înlocui în formula de mai sus:

(6)

putem rescrie:

(7)

Ultimul pas este justificat de formula ( cum |N| = 1). Ecuația (7) reprezintă prima condiție pentru și . Cum dorim ca noul vector T să aibă norma unu punem următoarea condiție:

(8)

unde dinou avem și înlocuim (IN) cu Ci din formula (1). Putem scrie rezultatul acestor două derivări astfel:

(9)

și apoi rezolvăm ecuațile simultan pentru aflarea lui și . Rădăcinile pătrate implicate determină apariția a 4 valori pentru și . Definind variabilele temporare:

(10)

Putem scrie:

Primul set de și corespund valorilor pe care le căutăm pentru T; celelalte reprezintă reflecția vectorului în alte trei direcți formate denormală și tangenta la suprafață.

Formula finală pentru T este:

(11)

2.2.7 Soluția geometrică pentru raza refractată

Să începen cu a observa din fig. 13 că raza refractată T poate fi descompusă în doi vectori mai simpli. Unul este o formă scalată a reflexiei normalei, pe care îl notăm cu –N’. Celălalt este o formă scalată a vectorului care leagă vârful lui –N’ de vârful lui I’( o variantă scalată a razei de incidentă I, dar cu capătul în origine). Deci altă formulă pentru T este:

(12)

Acum putem rezolva pentru k, I’ și N’ cu ajutorul unor formule trigonometrice. La fel ca la soluția algebrică începem prin ridicarea la pătrat a ambelolr părți ale formulei (1):

(13)

Dar cum , putem rezolva pentru S2i și Ct:

(14)

Vom rezolva ecuația (12) prin găsirea valorilor pentru vectori N’ și I’, și apoi valoarea pentru k. Cum I’ nu este decât o versiune scalată alui I, putem scrie I’ = | I ‘|I. Din figura … putem observa că proiecția lui I’ pe N(|I’|Ci) are aceași lungime ca proiecția lui T pe N(|T|Ct = Ct, deoarece |T| = 1). Deci:

(15)

Putem urama aceiași pași pentru determinarea lui N’, scriind N’ = | N‘|N. Lungimea lui N’ este chiar proiecția lui T pe N(|T|Ct = Ct, deoarece |T| = 1). Deci:

(16)

În cele din urmă îl aflăm pe k, notând că scalează (N’ + I’) prin precizarea factorului de proiecție a lui T și I’ pe acest vector. Proiecțile pot fi găsite din ugiuri relevante:

(17)

Acum avem toate elementele pentru a scrie ecuația razei refractate. Vom rescrie ecuația (12) folosind formulele (15), (16), (17) pe care le-am găsit pentru I’, N’ și k:

(18)

Recalculând cu Ct din formula (14) rezultă:

(19)

Când Ct nu e număr real, atunci lumina este supusă reflecției totale.

2.2.8 Refracție difuză totală

Am văzut că într-un mediu care suportă refracție speculară totală, lumina trece fără a interacționa cu mediul. La cealaltă extremă este un mediu care are multe particule care interacționează cu fotonul. Un exemplu de un astfel de material este plasticul, care permite lumini și culori să treacă, dar nimic nu se vede clar în cealată parte a plasticului.

Dacă am găsi un exemplu ideal pentru un astfel de mediu, s-ar spune că suportă refracție difuză totală. Un mediu difuz perfect transparent ar împrăștia lumina în toate direcțiile când este traversat, la fel cum reflexia difuză totală împrăștie lumina în toate direcțiile când se reflectă. Intensitatea lumini difuze refractată va fi constantă.

2.3 Modelul de colorare

2.3.1 Reflexia difuză Idr()

Discuția de mai sus despre reflexia difuză a lumini e destul de completă: culoarea razei absorbite și reiradiate depinde foarte puțin de unghiul de incidență. Și cum aceași lumină e iradiată în toate direcțiile, nu contează din ce unghi ne uităm. Deci reflexia difuză e influențată doar de culoare lumini care vine, gradul de absorție al obiectului și unghiul dintre raza incidentă ți normala la suprafață.:

unde

Idr() – lumina reflectată difuz

Ilj() – spectrul sursei de lumină j

Fdr() – curba de reflexie difuză

N – normala la suprafață

L – raza de lumină.

2.3.2 Reflexia speculară Isr()

Cum se pune problema pentru o suprafață aspră, când de fapt am dezvoltat problema doar în cazul reflexiei totale. Ne putem imagina suprafața ca alcătuită din multe părți sau reflectori plați. Deci, o suprafață a unui obiect aspru se vede de aproape, ca un munte.

Fig. 14

Fig . 14-a, reprezintă o suprafață aspră. Lumina vine de la ochi și lovește suprafață zgrumțuroasă. Ne interesează să urmărim particula de lumină de la sursa de lumină, până ajunge dinou la sursa de lumină prin reflexie speculară. Raza este reflectată de la o microsuprafață la alta de mai multe ori. Odată ce raza sa ciocnit de material este colorată de acesta. Dacă se lovește o dată sau de două ori efectul abia este observabil. Dar raza care vine se pote ciocni de mai multe ori de suprafață. După suficient de multe ciocniri, culoarea razei este afectată destul de mult de material. În acest caz culoarea punctului luminos este cea a obiectului raportat la spectrul lumini incidente.

Fig . 14-b ne arată o rază care face un unghi optuz cu suprafața. Dacă raza ajunge în ochiul observatorului, atunci ea a lovit una sau două microparți. Dar cum lumina circulă aproape în linie dreaptă, orice altă rază va fi blocată pe drum. Cum lumina ciocnește doar un număr mic de fețe aproape nu se colorează de loc. În acest caz, culoarea punctului luminos este culoarea razei, iar culoarea obiectului este aproape inrelevantă.

Observațiile de mai sus se pot rezuma astfel: culoarea și intensitatea lumini reflectate specular pot depinde de direcția și culoarea lumini inițiale, culoarea obiectului și distribuția microfețelor obiectului.

Modelul cu microfețe e un model teoretic, și e descris de câteva ecuați.

Fig. 15

Fig . 15-a reprezintă valorile tipice ale unui observator. O suprafață este iluminată, și dorim să găsim lumina care este reflectată înapoi la observator. Puncul de pe suprafață este P. Vectorul în direcția observatorului care pornește din P este notat cu V. Nornala la P este N. Vectorul care pointează aproape de sursa de lumină j este Lj. Am desenat deasemenea un vector exact între V și Lj, notat cu Hj. Vectori V, Lj și Hj sunt toți în același plan. Am notat unghiul dintre V și Hj (care este același cu unghiul dintre Hj și Lj) cu , iar unghiul dintre Hj și N cu . Toți acești vectori sunt normalizați.

Reflexia speculară totală are loc când unghiul de incidență este egal cu unghiul de reflexie. Acesta este cazul pentru microfețele care au normala la suprafață paralelă cu Hj, deorece Hj face un unghi egal cu observatorul și sursa de lumină.

Deci raza poate veni de la sursa de lumină (de exemplu de-a lungul vectorului Lj) și poate fi reflectată specular în ochi (de exemplu în vectorul V), dacă lovește o microfață cu normala Hj.

Expresia lui Isr() este complexă, deoarece aici apar efecte subtile care sunt influențate de propietățiile materialului și de poziția observatorului. De exemplu cu cât mai multe raze se ciocnesc de suprafață, cu atât mai mult se va schimba culoarea datorită interacțiuni cu suprafața. Pentru a determina acesta avem nevoie de informați despre felul în care microfețele sunt așezate pe suprafață.

Isr() ne indică cum este colorează lumina incidentă de catre material atunci când se reflecta. Intensitatea lumini se reduce la fiecare lungime de undă de o cantitate care depinde de lungimea de undă și de unghiul de incidență. Deci, Isr() ne dă curba de reflexie a materialului, pentru o rază incidentă la un anumit unghi.

Lumina speculară Isr() este:

(a)

unde:

Isr() – lumina reflectată specular

F(, ) – descrie reflexia pentru lungima de undă și unghiul de incidență

G(N, V, L) – descrie orientarea microfeței

D() – spune câte microfețe sunt orientate în direcția H

N – normala la suprafță

L – raza incidentă

V – vectorul observatorului.

2.3.3 Termenul geometric

Ecuația lui G (G vine de la geometrie) e destul de complicată. Unul dintre vectori folosiți în realizarea lui G este H; acesta este vectorul care va reflecta complet lumina care vine la observator. Vom avea dinou nevoie de H când vom discuta despre termenul F. Cum H reflectă perfect lunina de la L la V, H este așezat chiar între cei doi vectori:

Expresia pentru G încorporând umbrele și efectele de mascare este:

2.3.4 Termenul distribuție

Termenul D reprezintă distribuția. Ne spune câte microfețe au normala parlelă cu vectorul de reflexie H. Acestea vor reflecta lunina de la suprfață total. Valoarea lui D depinde de valorile altei variabile, m. Valoarea lui m descrie ‘asperitățiile’ suprafeței. Când m ia o valolare mică (de ex. 0.2), atunci descriem o suprafață destul de lucioasă. Dacă m ia o valoare mare (de ex. 0.7), avem de a face cu o suprafață plină de asperități.

Valoarea lui D depinde și de , ungiul dintre H și L.Există câteva metode cunoscute pentru al evalua pe D, bazate pe diferite criteri, ca viteza de evaluare sau acuratețea geonetrică. O astfel de formulă este următoarea:

unde:

c – este o constantă albitrară

e – constanta lui Euler.

Acesta este cunoscut ca modelul Gaussian, și este bun în a simula realitatea, dar este și o metodă rapidă.

Dacă am avea mai nult timp (pentru a construi tabele, indexate după , unul pentru fiecare valoare a lui m de care avem nevoie în desen), o funcție mult mai bună este funcția de distribuție a lui Beckmann:

.

Acesta are deasemenea avantajul că nu conține constante arbitrare pe care utizatorul trebuie să le seteze.

Să considerăm că o suprafață conține diferite nivele de asperitate, fiecare cu o valoare diferită pentru m. De exemplu, putem avea o suprafața cu puține zone foarte aspre, iar o amre patre cu zone foarte lucioase. Putem exprima acsta prin descrierea lui G ca o sumă de diferiți factori de distribuție. Dacă k ia diferite valori a lui m(m1, m2,… mk), atunci putem scrie:

2.3.5 Termenul Fresnel

Din nefericire expresia lui F nu e așa de liniară ca a termenilor D și G. Se observă că niciunde în formulele lui G și D nu au fost incluse valorile sau ale unghiurilor și lungime de undă a razei incidente. Dar aceste valori aduc o contribuție în stabilirea culori, aici este llocul unde ținem seama de ele.

Acesta este o formulă pentru F care modelează lumina nepolarizată la o anumită frecvență de undă:

unde:

= indexul de refracție penru o lungine de undă.

Din nefericire, depinde de lungine de undă, iar valorile curbei în general nu sunt măsurate. Pe de altă parte există propietăți ale materialelor care au fost catalogate și cercetate în diferite lucrări. Una dintre aceste propietăți este legată de curba de reflexie la normala suprafeței; care este F(, = 0) pentru o mulțime de valori a lui .

Ne vom referi uneori la întreaga curbă ca F(, ) fentru unele valori fixate a lui ; în astfel de cazuri vom scire F(), deci F(, = 0) = F0().

În practică, cercetători iau o monstră de material. Curață materialul, îl așează perpendicular pe o sursă de lumină, și măsoară intensitatea lumini reflectate la mai multe lungimi de undă. Știind intensitatea lumini incidente la acele lungimi de undă, permite crearea unui graf care exprimă spectrul de reflexivitate al materialului când iluminăn cu lumină paralelă suprafața.

Avantajul acestei tehnici este acela de a avea solutii pentru ecuația lui Fresnel când ‘ 0. Putem rezolva pentru n la orice lungine de undă, dacă procedăm astfel. Observăm că la incidența la normală = 0, deci Putem rezolva acum pentru g: Introducând valorile în ecuația lui Fresnel obținem:

.

Dorim să-l aflam pe , deci vom face radical pentru valorile absolute:

Astfel obținem valoarea pentru pentru câteva valori a lui pentru incidența normală. Astfel putem găsi valoarea lui pentru orice lungime de undă de care suntem interesați. Acum că cunoștem , putem rezolva ecuația lui Fresnel la orice unghi de incidență.

Calcularea lui F poate fi îmbunătățită prin diferite tehnici. Una ar presupune crearea unei tabele indexate după unghi și lungimea de undă pentru fiecare material. O altă soluție e de a construi un tabel mai mare și a interpola intrările; acesta va ocupa mai puțin spațiu dar interpolările vor dura mai mult decât accesarea unui tabel look-up.

Efectul lui F asupra punctului este de luat în considerare. Când o rază lovește o suprafață cu asperități, aproape de normala la suprafață atunci culoaea razei reflectate va deveni culoarea obiectului. Cu cât raza se depărtează de suprafață cu atât culoare razei va fi mai apropiată de culoarea sursei. Acestă shiftare este destul de ’scumpă’ de realizat. Se poate reliza prin interpolare liniară înter culoarea sursei și culoarea obiectului. Dar interpolarea pierde unele dintre aspectele tranziției culorilor.

Vom stabili unele notați. Pentru = 0, vom scrie F0() pentru a reprezenta o felie 2-D a curbei lui Fresnel, culoarea pe care o vom obține este un produs al curbei de reflexie speculară F0() și spectrul lumini incident la suprafață Ilj (), deci culoarea noastră C() pentru = 0 este C0() = F0()Ilj ()-.

Curba 2-D Fresnel corespunzătoare la = /2 este F/2 (), unde se vede culoarea sursei C/2 = Ilj (). Curba devine pentru alte valori a lui egală cu F ().

Formula finală pentru a stabili intensitatea la lungimea de undă și unghiul de incidență este:

Acum avem C() scris în termeni de lumină incidentă Ilj(), curba de reflexie pentru = 0, F0() și funcția de reflexie Fresnel pentru , F().

2.4 Colorare rapidă

Mai sus am prezentat un model de culorare de mare calitate. Din nefericire, este foarte încet. Pentru o procesare mai rapidă se folosesc algoritmi mai simpli, dar care nu realizează o acuratețe a imagini așa de mare.

2.4.1 Modelul Hall de culorare

Intensitatea lumini care părăsește o suprafață pe o direcție dată este o funcție care depinde de propitățiile lumini, geometrie, obiect și direcția observatorului. Modelul Hall divide lumina primită în două: lumină care vine direct de la sursă și lumină care vine de la alte corpuri. După cum am văzut există patru feluri de emisie a lumini: reflexie difuză, refracție difuză, reflexie speculară și refracție speculară. Rezultă că avem două feluri de lumină incidentă și patru feluri de transport al lumini, care ne dau în total opt clase de interacțiune lumină-suprafață care trebuie luate în calcul.

Tabelul de mai jos prezintă cele opt categori de lumină emisă, care au fost identificate. Fiecare categorie conține o formulă în modelul Hall. Acesta este formula completă a lui Hall pentru o rază care părăsește obiectul spre observator:

Fig. 16

Fig. 17

Unde:

kdr – coeficientul de reflexie difuză

ksr – coeficientul de reflexie speculară

kst – coeficientul de refracție speculară

Isr() – spectrul razei reflectate

Ist() – spectrul razei reflactate

Ilj() – spectrul sursei de lumină j

Fdr() – curba de reflexie difuză pentru suprața cu lungimea de undă

Fsr(, )–curba de reflexie speculară pentru lungimea de undă și unghiul

Fst(, )–curba de refcția speculară pentru lungimea de undă și unghiul

r, j = cos-1(NHj)

t, j = cos-1(NHj’)

R – ungiul dintre normală și raza reflectată

T – ungiul dintre normală și raza refractată

Tr – transmisibilitatea pe unitatea de lungime a mediului care conține raza reflectată

Tt – transmisibilitatea pe unitatea de lungime a mediului care conține raza refractată

sr – distanța pe care a străbătut-o raza reflectată

st – distanța pe care a străbătut-o raza refractată

n – coeficientul pentru hightlight-ul reflexiei speculare

n’ – coeficientul pentru hightlight-ul refracției speculare

N – normala la suprafață

Lj – vectorul de la sursa de lumină j

V – vectorul orientat în direcția observatorului

Hj – normala pentru reflexia totală speculară a unei microfețe pentru sursa de lumină j

Hj’ – normala pentru reflexia totală speculară a unei microfețe pentru sursa de lumină j.

Și

kdr + ksr = 1

kdt + kst = 1

0 <= kdr, ksr, kdt, kst <= 1

0 <= Tr, Tt <= 1.

Figurile 16 și 17 arată geometria ecuației. Subdivizăm lumina care pleacă de la punctul P de pe suptrafță și se îndreaptă spre obsevator. Observatorul se află în direcția indicată de vectorul V. Putem construi un vector care pointează spre fiecare sursă de lumină, pentru a ne ajuta să găsim unghiul de incidență la suprafață; astfel de vectori sunt Lj pentru fiecare sursă j.

Vectorul Hj este același cu vectorul H pe care l-am întâlnit atunci când am vorbit de șiftarea culori pe o suprafață care reflectă lumina. Ne spune că vectorul normal la microfață care reflectă spectral lumina care vine de la sursa j la observator:

Vectorul Hj are același rol penrtu refracție, dându-se normala la microfață care va transmite (refracta) lumina direct la observator. Putem determina pe Hj folosind legea lui Snell. Mediile 1 și 2 au indici de refracție 1 și 2, atunci:

2.4.2 Reflexia difuză a unei surse de lumină

Acest termen descrie cantitatea de lumină care părăsește suprafață prin intermediul reflexiei difuze a sursei de lumină. Coeficientul kdr descrie tipul de reflexie al materialului. O olindă va avea reflexia difuză 0, în timp ce o bucată de cretă va avea o difuzie aproare egală cu 0.9.

Pentru fiecare rază, produsul puntual reprezintă cosinulul ungiului dintre direcția lumini și normala la suprafață. Vom folosi acest rezultat pentru a scala spectrul sursei de lumină, Ilj (). Apoi îmulțim intensitatea reflectată la fiecare frecvență de curba reflexie difuză a materialului, Fdr (); acestă valoare este independentă de ungiul de incidență al lumini care vine. După ce am însumat reflexia difuză a fiecărei surse, îmultim rezultatul cu kdr, coeficientul de reflexie difuză al suprafetei.

2.4.3 Reflexia speculară a unei surse de lumină

Acest termen este similar cu reflexia difuză a sursei. Observăm că reflexia Fresnel este acum o funcție care depinde de ungiul de incidență, . Acesta este ungiul dintre normala la suprafață și direcția microfeței care va provoca o reflexie speculară totală a razei în direcția observatorului. Curba particulară pe care o folosim este acea de reflexie speculară.

Deasemenea se observă dependența lui ridicat la puterea n. Acest termen înlocuiește funcțiile D și G în modelul de culorare al ecuației (a). Acest termen a fost prima dată dezvoltat de Phong pentru a determina culoarea lumini reflectate. Dacă n este 1, atunci vom obține un highlight foarte împrăștiată. Dar dacă n crește la 5, 10 sau chiar mai mult, highilight-ul va tinde să fie punctual.

Suprafețele foarte lucioase vor avea un exponent ridicat determinând zone punctiforme. Cu cât suprafața e mai mată vom avea un exponent mai mic.

Ultima diferență este acea că îmulțim rezultatul cu coeficientul de reflexie speculară ksr.

2.4.4 Refracția speculară a unei surse de lumină

Formula este asemănătoare cu formula reflexiei speculare a sursei de lumină. Observăm că . Aici produsul punctual se face cu H’ în loc de H, deoarece dorim refracția speculară, nu reflexia. Exponentul n’ controlează punctualitatea lumini refractate, la fel cum n controla punctualitatea lumini reflectate.

Curba de refracție Fst(, t) poate fi dedusă din formule care exprimă conservarea energiei:

Fst(, ) = 1 – Fsr(, ).

Rezultatul este scalat cu coeficientul de refracție kst.

2.4.5 Reflexia speculară a lumini care vine de pe alte corpuri

Nu doar lumina care vine de la sursa de lumină se reflectă la obsrvator; orice altă lumină care ajunge cu unghiul potrivit este reflectată deasemenea. Exemplificăm printr-o rază reflectată.

Spectrul razei care vine este notată aici cu Isr(). Cum este reflectată specular, îi îmulțim lungimea de undă cu lungimea de undă a curbei lumini reflectate Fsr(, R), realizată pentru unghiul de incidență R și îmulțim rezultatul cu coeficientul de reflexie speculară ksr.

Trebuie să ținem seama că lumina vine de altă sursă și își pierde din intensitate în drumul pe care îl parcurge.Termenul Tr determină cât de multă lumină se pierde pe unitatea de timp în mediul pe care îl străbate. Termenul sr este distanța străbătută de rază de la ultima intersecție la punct. Termenul reprezintă dispersia lumini.

Se observă că nu trebui să realizăm produsul puntual al razei reflectate specular cu normala în acel punct. Acesta este deoarece știm că generăm o rază de reflexie speculară perfectă când realizăm generarea imagini, deci orice culoare ar veni va fi reflectată cu toată intensitatea, modelată doar de funcția și coeficienții de reflexie speculară.

2.4.6 Refracția speculară a lumini venite de la alte corpuri

Termenul este asemănător cu reflexia speculară determinată de o rază care vine de la alt obiect. Coeficientul este kst deoarece lumina vine de la o rază refractată. Culoarea razei refractate este Ist(). Curba de refractate este Fst(, R). Am reunit distanța pe care lumina o parcurge cu Tr (reducerea intensități pe unitatea de timp) și st (distanța parcusă) în termenul (care reprezintă reducerea intensități în drumul pe care îl parcurge).

2.4.7 Lumina ambientală

Acest termen cuprinde toate efectele de reflexie difuză de la toate corpurile. ’Spectrul’ lumini ambientale este dat se Ia(). Lumina este reflectată difuz și modelată de curba de reflexie difuză. Coeficientul kdr al reflexiei difuze scalează spectrul.

Cap. 3 – Simularea adâncimii de câmp cu ajutorul algoritmilor de prelucrare a imaginii

3.1 Simularea adâncimii de câmp prin algoritmul de ray-tracing

Deorece pixeli sunt mărimi discrete, grafica implementează un proces de exemplificare. Mărimea pixelului determină limita superioară a frecvențelor care pot fi afișate. Acesta limita se numeste Nyquist limit. Încercarea de a afișa frecvențe mai mari decât acestă limită pot duce la efecte ca: iluminarea puternică sau alte deformări ale imagini legate de antialiasing. Unele din aceste deformări pot fi aceptate în aplicațiile unde este se folosește viteza, dar sunt inacceptabile în simularea de imagini reale.

Algoritmi de generare a imaginilor pot fi clasificați în algoritmi analitici și discreți în funcție de cum rezolvă problemele de alising. Algoritmi analitici pot filtra frecvențele înalte care provoacă alising-ul înainte de exemplificarea valori pixelului. Acestă filtrare tinde a fi complicată și costisitoare ca timp dar poate elimina unele tipuri de alising foarte bine. Algoritmi discreți, ca ray-tracing, consideră imaginea ca un dreptunghi format din pixeli, cum se ignoră tot ceea ce conțin acești pixeli, prin natura lor ei exclud filtrarea imagini. Acești algoritmi sunt mult mai simpli, mai eleganți, și mai ușor de implementat hardware decât cei analitici. Deasemenea permit multe lucruri destul de greu de rezolvat analitic, ca umbrele, reflecția, refracția, geometria constructivă a solidelor( CSG ), motion blur, adâncimea de câmp.

3.1.1 Camera Pinhole

Cel mai simplu model de cameră este pinhole. Poate fi imaginată ca o peliculă dintr-un film fotografic plasat într-o cutie pe o parte a ei. Un ac este folosit pentru a reliza un singur orificiu punctual în cutie( în partea opusă părăți unde se află pelicula fotografică), care va fi acoperită cu o peliculă opacă. Când se dorește să se realizeze o fotografie, se fixează camera și se înlătureză pellicula. Lumina intră prin pinhole și lovește filmul, cauzând o modificare chimică a filmului. Când sa terminat expunerea se lasă dinou pelicula peste pinhole. În ciuda simplicități ei, camera pinhole generează o imagine reală.

Pinhole (orificiul punctiform) este o parte necesară a camerei. Dacă îndepărtăm cutia și gaura și expunem întreaga peliculă, suprafața filmului va deveni albă, deorece lumina din toate direcțiile va lovi toate punctele de pe peliculă. Pinhole elimină acestă problemă permițând doar unui număr mic de raze să treacă din scenă pe film. În particular, fiecare punct de pe film poate primi lumină doar de-a lungul liniei care unește partea din film și pinhole. Cu cât gaura se mărește, fiecare punct al filmului primeste mai multe raze de lumină, și imaginea devine mai strălucitoare și mai încețoșată.

Fig. Reprezentarea unei camere pinhole.

Cu toate că modele de camere mult mai complicate au fost folosite în grafică, modelul pinhole este destul de popular datorită simplități și ariei mari de răspândire. Ca convenție în programare și modelare, versiunea clasică de cameră mută planul filmului în fața găuri, și consideră gaura (pinhole) ca centrul ochiului. Dacă s-ar construi o cameră reală în acest fel nu va funcționa bine de loc, dar este bună pentru o simulare pe calculator. Cerința ca toate razele de lumină să trecă prin pinhole este transpusă în cerința ca toate razele să treacă prin ochi (eyepoint).

3.1.2 Abordare din punct de vedere al generări discrete a imaginilor

Camerele și ochiul au o rază a lentilei finită, dar și o adâncime de câmp finită. Fiecare punct din scena apare ca un cerc în planul imagine. Cercul e numit cerc de confuzie și mărimea lui depinde de puntul de focusare și de propietățiile lentilei. Adâncimea de câmp pote fi un efect dorit sau nu.

Majoritate pachetelor grafice sunt bazate pe o camera pinhole cu toate obiectele în plin focus. Se poate simula adâncimea de câmp cu o tehnica după procesarea imagini. Fiecare obiect e prima dată generat în focus total, apoi fiecare punct e acoperit cu un filtru cu mărimea egala cu diametrul cercului de confuzie. Programul stă cel mai mult în postprocesare și timpul crește cu cât raza descrește.

O astfel de procesare nu poate fi complect corectă, deoarece vizibilitatea este calculată de la un singur punct, centrul lentilei. Imaginea mediului este diferită din diferite părți ale lentilei, și diferențele includ schimbări de vizibilitate și umbră care nu pot fi tratate de abordarea prin postprocesare.

De exemplu, considerăm un obiect care este mult afară din focus în fața uni obiect care e în focus. Calculele suprafeței vizibile făcută cu un model de camera pinhole determină vizibilitatea din centrul lentilei. Deoarece obiectul din față nu e focusat, părți ale obiectului focusat care nu sunt vizibile din centrul lentilei vor fi vizibile din alte părți ale lentilei. Informații despre aceste părți nu vor fi date de postprocesare, deci postprocesarea nu ar putea obtine rezultatele corecte.

Mai exista un mod de a trata problema adâncimi de câmp. Adâncimea de câmp se realizeaza deoarece lentila este o mărime finită. Fiecare punct de pe lentila arata la fel și în planul focal. Suprafața vizibilă și umbrele pot fi diferite din diferite părți ale lentilei. Calculele adâncimi de câmp ar trebui să țină sema de acest fapt și să fie o parte integrată a calculelor suprafeței vizibile și umbrelor.

Adâncimea de câmp poate fi calculată începând cu o rază din centrul lentilei prin punctul p al planului focal. Un punct de pe suprafața lentilei e selectat, apoi o rază din acel punct prin punctul p e trasată. Setările necesare ale cameri pentru acesta sunt distanța focală și diametrul lentilei F/n, unde F este lunginea focală a lentilei și n este f-stop.

Deoarece integreză atât calculele pentru adâncimea de câmp cât și cele pentru suprafața vizibilă și umbre, acesta abordare dă o soluție mai bună problemei adâncimi de câmp, cu condiția că nu ținem seama de efectele difracției.

Fig. 1

Figura de mai sus demonstrează de ce abordarea de mai sus exprimă corect cercul de confuzie. Lentila are diametrul F/n și e focusată în punctul P deci planul imagine e la o distanta VP, unde:

, pentru P > F.

Punctele din plan care se află la distanța D față de lentilă vor fi focusate în planul:

, pentru D >F

și au cercul de neclaritate cu diametru C:

Pentru un punct I din planul iamgine, raza pe care o trasăm cade în conul a cărui rază este D:

Distanța în planul imagine de la un punct din acest con la un punct de pe axele conului este r înmulțit cu puterea lentilei

Este ușor de arătat că

Prin urmare fiecare punct din con are un cerc de confuzie care atinge punctul din imagine I. Punctele din afara conului nu afectează punctul din imagine, iar punctele din con afectează imaginea.

Calculele pentru adâncimea de câmp pot fi făcute și în spațiul perspectivă. La început nu este evident, deoarece matricea perspectivă este definită din punctul unde se află ochiul, și bâțiala lentilei implică schimbarea poziției pentru fiecare rază. Pentru un puct al ochilui care se bățâie locația corectă în spațiul ecran poate fi determinată în spațiul perspectivă al centrului lentilei.

Presupunem că obiectul se află în spațiul ochiului. În spațiul ochiului, centrul lentilei e originea, linia de vedere se află dea lungul axei z, și axele x și y sunt aliniate cu axele x, y ale spațiului ecran. Transformările pespectivă din spațiul ochiului în spațiul ecran presupun o cameră pinhole poziționată în origine în spațiul ochiului, și transformă fiecare punct (,,) din spațiul ochiului într-un punct (,,) din spațiul ecran. Pentru adâncimea de câmp sunt luate diferite puncte de exemplificare presupunând că camera pinhole se aflală în diferite puncte pe lentilă. În spațiul ochiului un punct de pe lentilă se aflală la o anumită locație (r xl, r yl, 0), unde

| xl | 1, | yl | 1

.

Valorile xl, yl pentru orice punct exemplificat se determină prin bâțâirea unui pattern care ne asigură că exemplele sunt bine distribuite pe lentilă.

Un punct (,,) care se află în spațiul ochiului în centrul lentilei este la (,,) în spațiul ochiului reprezentând punctul (r xl, r yl, 0) de pe lentilă. Altfel spus:

dar este mult mai mare, întotdeuna, în comparație cu r și valoarea ordonatei obiectului este acceși ca ordonata relativă z a obictului, deci putem presupune că = . Din figura 1, este ușor de arătat folosind asemănarea triunghiurilor că:

unde D este distanța de la lentilă la punctul de focus. Pentru o lentilă dată locația e specificată prin xl și yl, punctele sunt shiftate în spațiul ochiului conform formulelor de mai sus. Dar ceea ce trebuie făcut de fapt este shiftarea spațiului ecran.

Definindu-ne spațiul ochiului, știim matricea perspectivă care transformă spațiul ochiului în spațiu ecran trbuie să fie de forma

atfel încât punctul de pe ecran (,) este punctul din spațiu (,,) cu

și de la un punct de pe lentilă, în spațiul ecran punctul devine (,)

Dorim să calculăm (,) știind deja punctul (,). Deci suntem interesați de diferența între cele două spații ecran:

unde

Analog

unde

.

Observați că parametri ax, bx, ay și by depind de proprietățiile lentilei. Aceste valori pot fi calculate direct din elementele matrici perspectivă sau mai întâi găsind coordonatele punctului în spațiul ecran = (0, 0, 1) și = (1, 1, 1):

astfel încât

și analog

Ajungem la relațiile:

.

3.2 Abordarea din punctul de vedere al fizicii

Neclaritatea care apare în unele zone ale imagini cunoscuta sub denumirea adâncime de câmp(DOF). Caracteristicile optice care o determină sunt:

Lungimea focală a lentilei

Raza lentilei

Distanța pâna la punctul de focus.

Spre deosebire de camera pin-hole, unde fiecare punct din spațiul obiect, care nu e opturat de alt obiect, este reprezentat ca un singur punct in spațiul imagine, la lentilele reale, punctere care se afla în afara DOF sunt imprăștiate pe o suprafata(un disc de raza ε, presupunad ca forma lentilei e circulară ) în spațiul imagine (fig. 2).

Fig. 2

Raza disculuide împrăștiere poate fi determinată din formula:

unde

f este lungimea focala a lentilei

d0 este distanța până la obiect

di este imaginea de la lentila la planul imagine

și

unde

d0 este distanța unde punctul ar fi în focus( în fața sau în spatele planului imagine)

nf este f-numarul lentilei( egal cu lungimea focală pe raza lentilei).

Fig. 3

Discurile de vizibilitate a punctelor unei imagini se suprapun, deci valorea fiecarui punct al imagini va fi obținută prin combinarea contribuției fiecărui punct a carui disc de vizibilitate se suprapune peste punctul curent. Acesta opertie e cunoscută sub numele de convoluție.

Funcția care descrie intensitatea culori in discul de vizibilitate este numită funcție de împrăștiere(PSF), reprezentând o marime esențială a sistemelor optice. Funcția de împrăștiere depinde de:

Lungimea focală a lentilei

Raza lentilei

Distanța de la lentilă la punctul de focus

Presupunând că funcția de împrăștiere e invariantă la șiftări și ignorând difracția, de exemplu avem de face cu o lentilă perfectă, formarea unei imagini bi-dimensionale este usor de descris cu ea. Știind funcția de împrăștiere a sistemului optic "virtual" folosit pentru a genera imaginea cu algoritmul ray-tracing, se poate obține adâncimea de câmp.

Funcția de împrăștiere (în spațiul imagine) e un con cu centrul în punct. În afara conului de împrăștiere funcția ia valoarea zero, iar în interior conform legilor de conservare a energiei iradiate e specificată prin funcția:

unde

– este intensitatea lumini colectata de lentila de la punct

– este functia Box.

În acest moment putem considera că ray-tracing-ul poate genera imagini cu adâncimea de câmp setată, dar setarile camerei pot fi greșite, deci ar trebui refăcută imaginea.

3.3 Abordarea din punctul de vedere al prelucrări imaginii

În cazul camerei pin-hole algoritmul ray-tracing, incluzând adâncimea de câmp adaugă mult la costul generări imagini. Deorece nu avem acces la rezultat, nu rareori trebuie să modificăm setările camerei( lungimea focală și raza) pentru a obține o mai bună imagine. Acesta implică un nou calcul al imagini. Pentru a se realiza mai rapid procesul de generare a imagini se propune o noua alternativă.

Deorece setările diferite ale cameri nu schimbă nimic în scena a carei imagine va fi calculată, se poate genera doar o data imaginea, prin modelul de cameră pin-hole (unde toate punctele iamgini sunt în focus – AIF) și apoi să se încerce să aplice uni algoritmi care simulează schimbarea caracteristcilor cameri pentru simularea de câmp. Pentru a putea opera asupra imagini generate cu o cameră pin-hole este necesar să se salveze distanța de la cameră la obiect. Pentru fiecare punct din imaginea AIF, determinăm contribuția la adâncimea de câmp data de funcția de împrăștiere. În ultinul pas al procesului se face o sumă a contributiilor pentru fiecare punct al imagini. Acestia sunt pași care trebui urmăriți:

Se modifică algoritmul de ray-tracing astfel încât să salveze harta distanțelor( nu implică nici un cost suplimentar deorece acestea sunt disponibile în timpul generări iamgini)

Cu imaginea AIF( P ) și harta adâncimilor( X ) se setează:

Lungimea focala ( f )

Raza ( r )

Punctul de focus ()

Pentru 0.25 adâncimea de câmp se poate detrmina astfel:

Unde

și este numarul f al lentilei( si este raportul dintre distanța focală a lentilei și diametrul lentilei 2r)

Pentru fiecare pixel, care aparține adâncimea în:

Doar copiați valoarea generata în noua imagine P'.

Pentru fiecare pixel în afara adâncimi de câmp, care are adâncimea:

Detrminatii deplasamentul x în spațiul imagine și raza corespunzătoare ε pentru discul de neclaritate

și

Adăugați contributia pixelului (ca rezultat al funcției de împrăștiere) și acumulați-o la pixeli vecini în imaginea rezultant (P'). Pastrati o uramă a contributiei fiecarui pixel la imaginea P'.

cu și

dacă nu e în focus.

În final, se face o mediere pentru fiecare pixel din imaginea P' în conformitate cu numărul urmărit() al contribuției culorilor celorlanți pixeli.

3.3 Simularea în POV-Ray a adâncimi de câmp

3.3.1 Folosind setările clasice ale camerei

POV-Ray poate simula adâncimea de câmp considerând un numar suplimentar de raze pentru un punct, luate aleatoriu de pe lentilă și realizând apoi media lor.

Pentru a realiza efectul de DOF, trebuie specificat cuvântul aperturei, în definiția camerei, urmat de o valoare reală, care determină adâncimea zonei de claritate. Cu cât valoarea parametrului aperture este mai mare, se obține o zonă de neclaritate mai mare; în timp ce o valoare mică determină o zonă de claritate mare. Observați, că în timp ce camera se comportă ca o cameră reală, valorile pentru deschidere sunt pur arbitrare și nu au nici un fel de legătură cu f-numberul (f-stopul) lentilei.

Trebuie precizat deasemenea parametrul blur_samples urmat de un întreg, care specifică numărul maxim de raze care vor fi construite pentru fiecare pixel. Mai multe raze crează un efect mai bun, dar imaginea se generează mai încet. În setările inițiale nu este folosit acest efect, astfel încât valorile pentru aperture și blur_samples sunt 0.

Centrul zonei de claritate este specificat prin parametrul focal_point, care e de tip vector. Obiectele care se află în apropierea acestui punct sunt focusate și cu cât se îndepărtează sunt mai blurred. Valoarea default este <0, 0, 0>.

Deasemenea blur_samples specifică numărul maxim de exemple, există un mecanism adaptiv care oprește generarea de raze când un anumit gard de acceptanță a fost atins. În acel punct generarea de mai multe raze nu ar duce la schimbări semnificative ale rezultatului. Parametri confidance și variance sunt urmați de valori reale care controlează funcția adaptivă. Valoarea confidance este folosită pentru a determina când sunt destule raze care aproximează pentru a obține culoarea corectă. Valoarea variance specifică o toleranță acceptabilă a razelor care au fost folosite până acum. Altfel spus, procesul de generare de raze se termină când valoarea punctului se apropie (controlată fiind de confidance și variance) de culoarea reală.

Din cauză ca confidance este o probabilitate ea poate lua valori în intervalul 0, 1 (default value este 0.9 – 90%). Valoarea pentru varianță ar terbui să aprțină rangului celei mai mici culori afișabile (default value 1/128).

Cu cât parametrul confidance detrmină folosirea mai multor exemple, se mărește timpul de generare al imagini și se obține o imagine mai bună. Același lucru e valabil și pentru praguri mici de varianță.

Exemplu:

camera {

perspective

location <-30, 10, 20>

up y

right -4/3 * x

look_at <0, 0, 0>

angle 15

focal_point <-6, 1, 4>

blur_samples 30

variance 100/256

confidence 0.999

}

În continuare vom prezenta o imagine (250×250) generată la diferite setări ale parametrilor blur_samples, confidance și variance, precum și timpul de generare:

blur_samples 30

variance 1/256

confidence 0.999

Timpul de generare: 32 secunde

blur_samples 60

variance 1/256

confidance 0.999

Timpul de generare: 40 secunde

blur_samples 30

variance 1/256

confidance 0.2

Timpul de generare: 29 secunde

blur_samples 30

variance 100/256

confidance 0.999

Timpul de generare: 12 secunde

3.3.2 Folosirea unui filtru de tip blur

Folosirea unui filtru blur implementat conform algoritmului din secțiunea 3.3, duce la realizarea unor imagini într-un timp mai mic, aproximând destul de bine zona de profunzime de câmp. Pentru acesta e necesar setarea câtorva parametri:

focal lenegth reprezintă distanța focală și care depinde de ungiul de deschidere al camerei (), fiind necesară și salvarea acestuia, calculată astfel: , unde D este poziția diafragmei (distanța dintre lentile). De fapt în loc de focal length se folosește difragma/2

aperture care reprezintă raza lentilei

focus point distanța de la cameră la puctul (palnul) care va fi în focus (clar).

Algoritmul poate fi selectat din meniul ImageViewing, opțiunea Photo Efect, acest meniu mai conține o opțiune Blur Filter care realizează un filtru blur care poate fi aplicat pe o parte din imagine, liniile dintre cele două limite acre pot fi precizate nu sunt afectate de acest filtru. Filtrul implementat este un filtru median pe un nucleu de convoluție de 3×3: .

De exemplu, pentru a realiza o setare mai informată a parametrilor folosiți în simularea DOF din POV-Ray putem folosi fisierul DoF.inc realizat de Francois Dispot prezentat mai jos:

#local _DoF_tempver = version;

#version 3.1;

#macro DoF(

Location, //the "location" vector

Width, //in pixels; decrease to narrow the sharpness zone

Angle, //in degrees

LookAt, //the look_at vector

Plane1, //1st sharp point

Plane2 //2nd sharp point

)

#render "Depth of Field control plug-in V 1.0\n"

#local Unary= vnormalize(LookAt-Location);

#local Alpha= vdot(Unary, Plane1-Location); //1st sharp distance

#local Beta = vdot(Unary, Plane2-Location); //last sharp distance

#if (Alpha = Beta)

debug (" Both control points are at the same distance\n")

error

#end

#if (Alpha <= 0)

debug (" 1st control point is behind camera\n")

error

#end

#if (Beta <= 0)

debug (" 2nd control point is behind camera\n")

error

#end

#local d=2/(1/Alpha+1/Beta); //distance to focal point

#local H=2/(1/Alpha-1/Beta); //Hyperfocal distance

#local F=18/tan(radians(Angle/2)); //Equivalent focal length (in mm) in 35mm OT f-stops)

#local FocalPoint=Location+d*Unary; //(in units)

#local e=36/Width; //Diameter of confusion center is 1 pixel, in 35mm film mm.

#local A=e*H/F; //Aperture (in units, N

#debug concat(" focus point ", str(d, 0, 3), "\n")

#debug concat(" aperture ", str(A, 0, 3), "\n")

aperture A

focal_point FocalPoint

#end

#version _DoF_tempver;

Pentru a obține rezultate comparabile între fișierul .inc prezentat mai sus și filtru vom seta focal length cu 18, iar deschiderea (aperure) și distanța la punctul de focus (focus point) se pot calcula din relațiile de mai sus.

Filtrul folosit este de fapt un filtru lowpass (de reducere a zgomotelor). Nucleul de convoluție este o funcție care are aliura unei gaussiene. Am folosit gausian, adaptiv, în funcție raza cercului de confuzie și deasemenea gausiana se ridică diferit pe patru nivele. Pe fiecare sfert de nucleu gaussiana se ridică la puteri diferite. Pentru margini sunt lasate valorile gaussienei, pentru următorul sfert se ridică la pătrat, apoi la a treia, apoi la a patra.

Bibliografie

A. Glassner – An Introduction to Ray Tracing, Academic Press, 1989

Lucian Cucu –Analele Universități din Timișoara, Vol. XXXVIII, fasc. 2, 2000 Seria Matematică-Informatică – Some Consideration of Field Simulation in Ray-Traced Images

Rafael C. Gonzalez, Richard E. Woods – Digital Image Processing, 1993, Addison-Wesley Publishing Company, Inc.

Similar Posts