IŶfruŵusețarea faĐială îŶ Realitatea Virtuală [616149]
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
UNIVERSITATEA POLITEHNICA BUCURE ȘTI
FACULTATEA DE AUTOMATICĂ Ș I CALCULATOARE
DEPARTAMENTUL CALCULATOARE
PROIECT DE DIPLOMĂ
ÎŶfruŵusețarea faĐială în realitatea ǀirtuală
BUCURE ȘTI
2017
Coordonator științific:
As. Drd. Ing. Alexandru GrădiŶaru
Ing. Cosmin Stan
Student: [anonimizat]Ŷfruŵusețarea faĐială îŶ Realitatea Virtuală
Curpins
1. Introducere ……………………………………………………………………………………………………………………. 1
1.1 Tema proiectului ……………………………………………………………………………………………………….. 1
1.2 Motivul alegerii temei ………………………………………………………………………………………………… 1
2. State of the Art ………………………………………………………………………………………………………………. 2
Ϯ.ϭ Realitatea ǀirtuală ……………………………………………………………………………………………………… 2
2.1.1 Hardware ……………………………………………………………………………………………………………. 2
2.1.2 Software …………………………………………………………………………………………………………….. 5
2.2 Camere video 360 ……………………………………………………………………………………………………… 5
2.2.1 Hardware ……………………………………………………………………………………………………………. 5
2.2.2 Software …………………………………………………………………………………………………………….. 6
2.2.3 Live Streaming …………………………………………………………………………………………………….. 7
2.2.4 Neajunsuri ale camerelor 360 ……………………………………………………………………………….. 7
2.3 Face Beautification …………………………………………………………………………………………………….. 8
Ϯ.ϯ.ϭ EfeĐte de îŶfruŵusețare ale feței …………………………………………………………………………… 8
2.3.2 Etapele procesului ……………………………………………………………………………………………… 12
3. Arhitectura proiectului ………………………………………………………………………………………………….. 13
3.1 Descriere workflow ………………………………………………………………………………………………….. 13
3.2 Tehnologii folosite ……………………………………………………………………………………………………. 14
3.2.ϭ AŶdroid Studio și SDK -ul Android …………………………………………………………………………. 14
3.2.2 360Fly 4K SDK ……………………………………………………………………………………………………. 15
3.2.3 OpenGL …………………………………………………………………………………………………………….. 15
3.2.4 Java Native Interface (JNI) …………………………………………………………………………………… 16
3.2.5 GoogleVR SDK ……………………………………………………………………………………………………. 16
4. Implementare ………………………………………………………………………………………………………………. 18
4.1 Utilizarea SDK-ului GoogleVR …………………………………………………………………………………….. 18
4.2 Conectarea la camera 360Fly 4K ………………………………………………………………………………… 19
ϰ.ϯ Preluarea Đadrelor de la Đaŵeră ………………………………………………………………………………… 19
4.4 Transformarea planar-sferic ………………………………………………………………………………………. 20
ϰ.ϱ Utilizarea ŵotorului de îŶfruŵusețare faĐială ……………………………………………………………… 22
ϰ.ϲ Optiŵizarea ŵotorului de îŶfruŵusețare ……………………………………………………………………. 23
ϰ.ϳ IŶteraĐțiuŶea Đu apliĐația ………………………………………………………………………………………….. 23
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
ϱ. Testarea apliĐației și iŶterpretarea rezultatelor ………………………………………………………………… 24
ϱ.ϭ SĐeŶarii de testare îŶ diǀerse ĐoŶdiții de iluŵiŶare ………………………………………………………. 24
ϱ.ϭ.ϭ LuŵiŶă Ŷaturală îŶtr -un mediu umbrit exterior ……………………………………………………… 24
ϱ.ϭ.Ϯ LuŵiŶă Ŷaturală diŶ spate îŶtr -un mediu exterior ………………………………………………….. 25
ϱ.ϭ.ϯ LuŵiŶă Ŷaturală de iŶteŶsitate ŵedie îŶtr -un mediu interior ………………………………….. 26
ϱ.ϭ.ϰ LuŵiŶă Ŷaturală de iŶteŶsitate slaďă îŶtr -un mediu interior ……………………………………. 26
ϱ.ϭ.ϱ LuŵiŶă artifiĐială apliĐată de sus îŶtr -un mediu închis ……………………………………………. 27
5.1.6 Mediu foarte slab iluminat ………………………………………………………………………………….. 28
ϱ.Ϯ Testarea ǀitezei de rulare îŶ fuŶĐție de Ŷuŵărul de fețe diŶ iŵagiŶe ……………………………… 28
ϱ.ϯ Eǀaluarea efiĐieŶței ĐoŵuŶiĐării diŶtre Đaŵeră și telefoŶ …………………………………………….. 30
6. Concluzie ……………………………………………………………………………………………………………………… 31
6.1 Workflow- ul urŵărit ………………………………………………………………………………………………… 31
6.2 Calitatea imaginii ……………………………………………………………………………………………………… 31
6.3 Utilitatea proiectului ………………………………………………………………………………………………… 31
7. ÎŵďuŶătățiri ulterioare ………………………………………………………………………………………………….. 32
ϳ.ϭ ÎŵďuŶătătirea Đalitătii iŵagiŶii ………………………………………………………………………………….. 32
ϳ.Ϯ IŶteraĐțiuŶea ĐoŶsisteŶtă Đu apliĐația ………………………………………………………………………… 32
ϳ.Ϯ MeŶiu de start al apliĐației ………………………………………………………………………………………… 32
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
Lucrarea propune integrarea într- o apliĐaț ie android a unui mo tor de îŶfruŵusețare
faĐială pe un flux de cadre în timp real generat de o ca ŵeră 360. LuĐrarea aďordează , pe rând,
tehnologiile folosite, etapele de impleme Ŷtare și rezultatele oďț inute după finalizarea proiectului.
Implementarea a necesitat î Ŷțelegerea ďuŶă a pipeline- ului plă cii grafice a telefonului , preĐuŵ și
ce trebuie avut în vedere în momentul în care se cere corecta rea distorsiunilor unei imagini
provenite de la o Đaŵeră 360. Eǀaluarea fiŶală ĐoŶĐluzioŶează Đu oďțiŶerea uŶui prototip
fuŶĐțioŶal ĐoŶforŵ ǁorkfloǁ -ului iŶiț ial sugerat, care s-a dovedit, în mare parte, să se comporte
conform așteptă rilor.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
1
1. Introducere
Priŵul Đapitol al aĐestei luĐrări ș tiințifice va defini tema proiectului si v a prezent a
conțiŶutul luĐrării ș i gruparea pe capitole a acesteia. La sfâr șit vom rezum a motivul alegerii temei și
de Đe ĐoŶsiderăŵ Đă ideea propusă ǀa iŶoǀa doŵeŶiul îŶ Đare se îŶĐadrează.
1.1 Tema proiectului
SĐopul priŶĐipal îl repreziŶtă deĐodarea uŶui streaŵ liǀe, proǀeŶit de la o Đaŵeră ϯϲϬ, pe
un telefon cu sistem de operare Android, aplicarea unor efecte de înfrumuse țare faĐială pe feț ele din
imagine și randarea fluxului de date procesat pe ecranul telefonului într-un format compatibil cu o
pereche de ochelari destina ți ǀizualizării realităț ii virtuale.
Lucrarea va cuprinde 6 capitole cu men țiuŶea Đă aĐest Đapitol repreziŶtă doar o
iŶtroduĐere îŶ Đeea Đe urŵează. Capitolele prezeŶtate ǀor acoperi:
– aria State of the Art diŶ doŵeŶiul realităț ii virtuale, al camerelor 360 și al
motoarelor de înfrumuse țare faĐială ďazate pe deteĐț ia fe țelor din imagini;
– workflow-ul ales pentru implementare și tehnologiile folosite;
– etapele de implementare ale aplica ției;
– etapele de testare și evaluarea rezultatelor ob ținute;
– ĐoŶĐluziile trase îŶ urŵa iŵpleŵeŶtării și a eǀaluării rezultatelor;
– îŵďuŶătăț irile ce pot fi aduse ulterior prototipului.
1.2 Motivul alegerii temei
Ideea luĐrării de față Ŷu a fost să realizăŵ uŶ studiu îŶ Đare să prezeŶtăŵ tehŶologi ile
dispoŶiďile, Đi să Đreăŵ uŶ prototip Đare să îŵďiŶe aĐeste tehŶologii deja edžisteŶte. Astfel, aŵ al es să
iŶtegrăŵ îŶ ŵediul realităț ii virtuale efectele de înfrumuse țare, îŶtruĐât, diŶ studiile făĐute, Ŷu aŵ
găsit uŶ pateŶt pe aĐeastă teŵă.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
2
2. State of the Art
În acest capitol vom prezent a uŶ studiu al tehŶologiilor de ultiŵa oră folosite îŶ doŵeŶiul
realităț ii virtuale, al camerelor generatoare de con ținut 360 și al motoarelor de înfrumuse țare
faĐială . Se vor face referiri la modul de func ționare al acestor tehnologii precum și la lipsurile pe care
le au acestea.
2.1 Realitatea virtual ă
Realitatea ǀirtuală ;VRͿ reprezi ntă o siŵulare a ŵediului realizată Đu ajutorul tehŶologiei Đe
este Đapaďilă să iŶduĐă persoaŶelor Đe o priǀesĐ iluzia uŶei luŵi reale. AĐest ĐoŶĐept a apărut suď
deŶuŵirea de The Ultiŵate DisplaLJ dată de Đatre IǀaŶ E. SutherlaŶd în anul 1965 [1] , îŶsă JaroŶ
Lanier a fost primul care a avut definit numele de Virtual Reality în anul 1989 [2]. Acesta a pus bazele
realității ǀirtuale și, de la ideile sale, eĐhipe de ĐerĐetare diŶ îŶtreagă luŵe au porŶit studii, ŵuŶĐă Đe
a dus la apariția prototipurilor și Đhiar a produselor din ziua de azi.
În 2012, un proiect Kickstarter a dat lovitura sub numele de Oculus Rift11, un produ s
accesiďil Đe a adus luŵii îŶtregi posiďilitatea de a lua parte la o siŵulare re alistă a unui mediu creat
folosind puterea de procesare a unui Smartphone. Oculus Rift era format dintr- un HMD (Head-
Mounted Display) și două uŶități ŵoďile de ĐoŶt rolare și a fost puŶĐtul de pleĐare al ǀalului realității
virtuale.
Realitatea ǀirtuală este uŶ ĐoŶĐept Đoŵpledž și are la ďază folosirea uŶor teh Ŷici de a
iŶduĐe seŶzația de realitate. Folosirea uŶui siŵplu displaLJ Ŷu este sufiĐieŶtă, îŶtruĐât fiiŶ d doar uŶ
observator într- o luŵe tridiŵeŶsioŶală Ŷu poate păĐăli Đreierul uŵaŶ îŶdeajuŶs. Astfel, folosire a
uŶor seŶzori de ŵișĐare Đare determina direĐția de orientare a capului în timpul folosirii unui
eĐhipaŵeŶt VR aĐoperă eleŵeŶtul Đe a lipsit pâŶă aĐuŵ. ÎŶ aĐelași sĐop, o ĐoŶtriďuție iŵ portaŶă o
aduc și joystick- urile, Đreate suď diferite forŵe ergoŶoŵiĐe și ŵeŶite să aduĐă o iŵersiuŶe și ŵai
puterŶiĐă îŶ luŵea siŵulată, aĐestea perŵițâŶd iŶteraĐțiuŶea Đu ŵediul.
2.1.1 Hardware
În continuare vom prezenta stuctura hardware a unui echipament VR din ziua de azi. Un
astfel de echipament are în construc ția sa un HMD, care în general are atât func ții de output cât și de
input. Un HMD are îŶ ĐoŵpoŶeța lui două leŶtile asferiĐe priŶse într-un suport din carton sau plastic
care se ŵoŶtează ergoŶoŵiĐ pe Đap. Poziț ia lentil elor este de ŵulte ori reglaďilă atâ t din punctul de
vedere al distaŶț ei dintre el e Đât ș i al di staŶței diŶtre oĐhi ș i acestea.
1https://www.oculus.com/rift/
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
3
Figura 1 [ϰ]. Poziția oĐhilor relativă la leŶtile.
O prim ă clasificare poate împ ărți dispozitiǀele de output îŶ două Đategorii, ŵoďile , care
iŶĐorporează un procesor destinat să genereze ĐoŶțiŶutul VR sau care folosesc telefoane mobile
pentru aceste sarcini,sau fixe, care sunt conectate prin fir la un calculator.
HMD- urile ŵoďile au porŶit de la Google, Đare a adus peŶtru priŵa oară uŶ di spozitiǀ
destiŶat redării ĐoŶț inutului VR folosind un telefon mobil. Acesta e construit doar dintr-un simplu
ĐartoŶ Đu două leŶtile asferice și un suport destiŶat iŶserării telefonului inteligent și poartă Ŷuŵele
sugestiv de Google Cardboard2(figura 2). Pentru input se folose ște un jeton magnetic, a Đărui ŵiș care
este deteĐtată de telefoŶ. Pe Đât de siŵplu, pe atât de efiĐieŶt, Google a dat startul uŶui Ŷou treŶd
ce a captat aten ția ŵultor produĐători.
Figura 2. Google Cardboard
În scurt timp produse similare au fost laŶsate Đare aǀeau să aduĐă îŶ plus față de Google
Cardďoard o ergoŶoŵie sporită, fiiŶd ĐoŶstruite diŶ ŵateriale ŵai Đalitatiǀe ș i lentile mai
performante. Sisteme de input au fost de asemenea implementate mai eficient pe unele produse, fie
folosind butoane direct pe HMD, fie telecomenzi Bluetooth3. De asemenea, eliminarea magnetului a
făĐut posiďilă folosirea ďusolei telefo nului pentru detectarea orient ării in apliĐații .
2https://vr.google.com/cardboard/
3https://www.bluetooth.com/
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
4
Creatorii de dispozitive VR mobile nu s-au rezumat doar la puterea de procesare a unui
telefon și astfel, companii precum Gameface4, au construit prototipuri ce promiteau proiectarea
unei lumi virtuale într- uŶ HMD folosiŶd o proĐesare iŶterŶă, ŶefiiŶ d astfel nevoie de un telefon.
Cea de-a doua Đategorie de dispozitiǀe VR este reprezeŶtată de eĐhipaŵeŶtele fixe, cu fir.
Acestea sunt conectate la o sta ție de ĐalĐul, Đapaďilă să dezǀolte o putere de proĐesare Ŷet
superioar ă uŶui telefoŶ, îŶsă, are dezavantajul ŶeĐesității ĐoŶeĐtării p rin fir.
Trei mari colo și se luptă peŶtru titlul de dețiŶător al Đelui ŵai ďuŶ eĐhipaŵeŶt VR ș i fiecare
vine cu lucruri inovative. În figura 3 sunt prezentate Oculus Rift, HTC Vive5și Playstation VR6. Primele
două ŵeŶț ionate folosesc lentile Fresnel pentru a beneficia de o lentila îŶgustă , dar îŶ aĐelași timp
cu o distaŶța foĐală ŵiĐă, îŶ tiŵp Đe PlaLJstatioŶ VR îŶĐorporează îŶ HMD -ul lor lentile asferice cu
sĐopul de a reduĐe distorsiuŶea ĐeŶtrală a iŵagiŶii [3]. HTV Vive, fa ță de OĐulus Rift este proieĐtat să
ruleze într-un spa țiu edžtiŶs aǀâŶd o zoŶă ŵare îŶ Đare poate capta mi șcarea utilizatorului.
Figura 3 [3]. Echipamente VR cu fir, Oculus Rift(stanga),
HTC Vive(mijloc) si PlayStation VR(dreapta).
Dispozitivele de input fac parte din categoria joystick-urilor. Acestea au d iferite forme
ergonomice (figura 4) , ŵeŶite să aduĐă o edžperieŶță Đât ŵai apropiată de realitate. SuŶt folosite îŶ
ŵediul ǀirtual atât suď forŵă uŶor deĐlaŶș atoare de comenzi cât și pentru a recunoa ște mi șĐările
descrise de corpul uman folosind senzori de proximitate sau de ŵișĐare .
Figura 4[10]. Dispozitive de input pentru echipamentele VR.
4http://www.gamefacelabs.com/
5https://www.vive.com/eu/
6https://www.playstation.com/ro-ro/explore/playstation-vr/
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
5
2.1.2 Software
EdžisteŶța apliĐațiilor peŶtru realitatea ǀirtuală repreziŶtă ș i cheia succesului celor care
ĐoŵerĐializează eĐhipaŵaŶete VR . Astfel, m ajoritatea produĐători lor de HMD-uri pun la dispozi ție
un SDK (Standard Development Kit) prin inte rŵediul Đăruia se poate proieĐta pe afi șajul
dispozitivului con ținutul do rit, ușurâŶd astfel munca dezvoltatorului . OĐulus Rift asigură
dezvoltatorilor de aplica ții un SDK actualizat frecvent. Valve sus ține, de asemenea, crearea
conținutului VR prin OpenVR, un SDK desti Ŷat produĐției de con ținut pentru HTC Vive, asigurând în
acela și timp suport pentru platforma SteamVR.
Motoarele grafice existente puŶ la dispoziție API-uri (Aplication Public Interface) ce permit
dezvoltarea con ținutului pentru diverse HMD-uri. Unity7, Unreal Engine 48 și CryEngine9 oferă suport
pentru Oculus Rift sau HTC Vive, punând la dispozi ție uŶ API Đoŵpledž Đare să asigure uŶ ŵediu
complet pentru dezvoltarea con ținutului VR.
Pentru a putea evita folosirea unui astfel de motor grafic, Google pune la di spozi ție un SDK
pentru dezvoltarea aplica țiilor VR pe telefoane mobile, aplica ții Đare să fie Đoŵpatiďile ș i
configurabile pentru orice tip de HMD de tip mobil, Google VR10 (GVR).
2.2 Camere video 360
Realitatea ǀirtuală oferă posiďilități de edžploatare folosiŶd ĐoŶțiŶutul VR geŶerat de o plaĐă
grafic ă, fie pe uŶ telefoŶ ŵoďil, fie pe uŶ ĐalĐulator perforŵaŶt. AĐeastă îŶsă, Ŷu i ŵpliĐă
posibilitatea de creare a unui ĐoŶțiŶut Đare să iŵite perfeĐt realitatea. ÎŶ ultiŵa deĐadă, aparatele
foto și Đaŵerele telefoaŶelor mobile au îŶĐeput să iŶĐorporez e softwa re destiŶat Đreării iŵagiŶilor
paŶoraŵiĐe, proĐes realizat priŶ ĐoŵďiŶarea uŶui Ŷuŵăr ŵai ŵare de poze făĐute diŶ aĐelași puŶĐt
într- uŶa siŶgură.
Tehnicile prezentate mai sus au inovat, de și au avut lipsuri, și au dus spre apari ția
camerelor 360, camere ce folosesc una sau mai multe lentile și suŶt Đapaďile să produĐă ĐoŶț inut
360 printr- o siŶgură apăsare de ďutoŶ. Odată Đu apariț ia acestora, p roduĐătorii au adus
consumatorilor camere din ce în ce mai performante: rezolu ții mai mari, timpi de procesare mai mici
și metode de lipire a pozelor primite de la senzori din ce în ce mai bune.
2.2.1 Hardware
Caŵerele ϯϲϬ respeĐtă struĐtura unei camere obi șŶuite, fiiŶd alĐătuite diŶ uŶul sau ŵai
multe module de c aptură. FieĐare astfel de ŵodul con ține o l eŶtilă sau u n set de lentile și un senzor
care Đaptează lumina. În func ție de Ŷuŵărul de ŵodule ș i de pozi ționarea acestora în Đaŵeră ,
leŶtilele au ĐoŶǀedžităț i diverite, câmpul vizual pentru un singur modul variind de la 60° la 240°.
Fiecare modul de Đaptură geŶerează o iŵagiŶe, toate imaginile aǀâŶd aĐeeași expunere .
Pentru a ob ține un con ținut 360 este nevoie de un modul hardware special conceput pentru a realiza
7https://unity3d.com/
8https://www.unrealengine.com/
9https://www.cryengine.com/
10https://github.com/googlevr/gvr-unity-sdk
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
6
lipirea pozelor rezultate în momentul capturii, opera ție ĐuŶosĐută suď Ŷuŵele de ͞ stitching ͟.
Tehnologia a evoluat și performan țele ajuŶg pâŶă îŶ puŶĐtul îŶ Đare este aproape iŵposiďil să
sesizezi trecerea de la o poză la alta în imaginea 360.
DiŶ puŶĐtul de ǀedere al Ŷuŵărului de ŵodule, Đaŵerele ϯϲϬ se pot îŵpar ți în 2 categori:
cele c are Ŷu ŶeĐesită ͞ stitching ͟(în principal cele care con țiŶ uŶ siŶgur ŵodul de ĐapturăͿ ș i cele care
depind de realizarea procesului de lipire a capturilor.
ÎŶ priŵa Đategorie se reŵarĐă , din punctul de vedere al performan țelor și al
caracteristicilor de care dispun , două Đaŵere. Kodak PIXPRO SPϯϲϬ11 aduĐe puďliĐului larg o Đaŵeră
cu performan țe ridicate, un senzor cu o rezolu ție de 4k pixeli și un unghi de vizualizare de 235°. Un
competitor al companiei Kodak este 360Fly12, care, de asemenea, are aceea și rezo luție de 4k pixeli
îŶsă lentila are un unghi de vizualizare de 240°.
Caŵerele ϯϲϬ Đu ŵai ŵulte ŵodule au aǀaŶtajele lor, îŶsă aduĐ ș i necesitatea unui modul
iŶtegrat Đare să se oĐupe Đu ͞ stitching ͟-ul imaginilor capturate. Performan țele acestui modul din
punctul de vedere al vitezei de procesare și al Đalităț ii imaginilor rezultate vor fi discutate în
secțiuŶea urŵătoare a aĐestui suďĐapitol.
2.2.2 Software
Hardware- ul de Đalitate Đare să asigure perforŵaŶț e sporite devine foarte scump raportat
la cerin țe, așa Đă produĐătorii de Đaŵere ϯϲϬ ǀiŶ Đu idei softǁare Đare îŵďuŶătăț esc performan țele
uŶor siŵple ŵodule de Đaŵeră.
͞Stitching ͟-ul a fost și o să fie ĐaraĐteristiĐă Đare deterŵiŶă Đalitatea uŶei Đaŵere ϯϲϬ Đu
ŵai ŵulte ŵodule de Đaptură. Algoritmii de st itĐhiŶg fuŶĐțioŶeaza siŵilar ș i cuprind etapele
necesare fiŶaliză rii procesului de lipire. Priŵa etapă reprezinta detectarea zonelor ce definesc
trăsă turi ale imaginilor.
În cea de- a doua etapă se realizează coresponden ța între trăsăturile desĐoperite î n
imaginile disponibile. În figura 5 se poate observa cum se realizeaz ăacest proces.
Figura 5 [ϱ]. Realizarea ĐorespoŶdeŶțelor î ntre imagini.
11https://kodakpixpro.com/
12https://www.360fly.co m/
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
7
Urŵătoarea etapă foloseș te corespo ndețele găsite aŶterior și presupuŶe Đă iŵagiŶile Đele
ŵai aseŵăŶătoare suŶt iŵagiŶi ǀeĐiŶe. Astfel , se fiŶalizează proĐesul de deteĐț ie a imaginilor și a
pozițiilor acestora rezultând o imagine precum figura 6.
Figura 6 [ϱ]. IŵagiŶea Đoŵpusă dupa deteĐția zoŶelor ĐorespoŶdeŶte.
Ultiŵa etapă presupuŶe retuș area imaginii finale, precum uniformizarea culorilor și
decuparea zonelor irelevante din imagine.
2.2.3 Live Streaming
Triŵiterea uŶui fludž de date îŶ tiŵp real Đătre o uŶitate de proĐesare sau Đătre uŶ serǀer
poartă deŶuŵirea de L ive Streaming. În cazul camerelor 360 fluxul de date este reprezentat de
imagini în forma lor ŶeĐoŵpresată sau Đoŵpresată folosind un procedeu de compresie (ex: H.26413).
Capacitatea de Live Streaming a unei camere este influen țată atât de elŵeŶte hardǁare Đât ș i
software.
O Đaŵeră ϯϲϬ Đapaďilă să Đreeze uŶ streaŵ liǀe de date , este 360Fly 4K, aceasta folosind
standardul H.264 pentru compresia cadrelor. Camera iŶĐorporează un modul Đapaďil să triŵită cadre
îŶ tiŵp real Đătre uŶ alt dispozitiǀ, păstrâŶd îŶ aĐelaș i timp o rezolu ție înalt ă.
Live Streaming- ul a deǀeŶit foarte ĐuŶosĐut îŶ ultiŵii aŶi, drept urŵare, produĐătorii îŶĐep
să se orieŶteze diŶ Đe îŶ Đe ŵai ŵult spre aĐeastă piață. PagiŶi ǁeď preĐuŵ, Youtuďe14, Facebook15
sau Twitch16 proŵoǀează ĐoŶț inutul live, oferind posibilitatea distribuiri live a unui flux de dat e
proǀeŶit de la o Đaŵeră.
2.2.4 Neajunsuri ale camerelor 360
Camerele 360 nu sunt perfecte și nici nu vor fi peŶtru o perioadă. AĐestea, îŶtradeǀăr, aduĐ
un plus de imersivitate , îŶsă edžpuŶerea uŶei iŵagiŶi Đhiar ș i la o rezolu ție îŶaltă ;ϰK pidželiͿ pe o sferă
aduce o rezolu ție destul de sĐăzută peŶ tru a imita perfect realitatea.
13https://ro.wikipedia.org/wiki/H.264
14https://www.youtube.com/
15https://www.facebook.com/
16https://www.twitch.tv/
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
8
2.3 Face Beautification
Procesul de înfrumuse țare a unei fețe este cunoscut sub numele de Face Beautification.
AĐesta iŵpliĐă îŵďuŶătăț irea fețelor diŶ iŵagiŶi din punctul de vedere al culorilor, al zgomotului sau
Đhiar al ŵodifiĐării ĐaraĐteristiĐilor acestora. De și este un proces complex ce cuprinde multe etape
de preluĐrare a iŵagiŶii, ǀoŵ îŶĐerĐa îŶ ĐoŶtiŶuare să prezeŶtăŵ Đât ŵai pe îŶț eles acest concept.
2.3.1 Efecte de înfrumuse țare ale feței
EfeĐtele Đe ǀor fi prezeŶtate îŶ ĐoŶtiŶuare se pot apliĐa pe fețele deteĐtate îŶ iŵag iŶi și pot
fi reglate din punctul de ǀedere al iŶteŶsității efeĐtului. De aseŵeŶea, îŶfruŵusețarea poate faĐe
distiŶĐție îŶtre ǀârsta și sedžul persoaŶelor ale Đăror fețe apar îŶ iŵagiŶi, apliĐâŶd efeĐte diferiŶte.
2.3.1.1 Smoothing (netezire)
EfeĐtul de Ŷetezire are Đa țiŶtă eliŵiŶarea iŵperfeĐțiuŶilor de pe fețe, preĐuŵ aĐŶee,
riduri, ĐiĐatriĐi. Algoritŵul de sŵoothiŶg ĐupriŶde două etape, geŶerarea uŶei hărți Đe repreziŶtă
zoŶele Đu piele și apliĐarea efeĐtului pe aĐeastă hartă.
Priŵa etapă este redusă la apliĐarea uŶui algoritŵ de deteĐție a pielii porŶiŶd de la fieĐare
față diŶ iŵagiŶe și folosiŶd Principle Component Analysis17 (PCA Ϳ. O ŵetodă care rezolv ă separarea
presupune îŵpărțirea iŵagiŶii îŶ Ϯϰ de ĐoŵpoŶeŶte de Đuloare diferite [ϭϭ]. AĐeste Đoŵpo ŶeŶte
suŶt reduse la Ŷuŵai ϯ folosiŶd PCA. PeŶtru a deterŵiŶa Đare pidželi ĐorespuŶd piel ii se folosește
distaŶța MahalaŶoďis apliĐată peŶtru fieĐare pidžel față de ĐeŶtroidul diŶ care face parte. Acest
proĐedeu duĐe la oďțiŶerea uŶei hărți de piele pe Đare îŶ ĐoŶtiŶua re este aplicat un filtru trece-jos,
peŶtru ĐoreĐtarea pidželilor ĐlasifiĐați greșit.
AǀâŶd la dispoziția harta de piele se poate treĐe la etapa de apliĐare a efeĐtu lui de
Ŷetezire. Algoritŵul folosește harta geŶerată aŶterior și iŵpliĐă apliĐarea pe zo Ŷele Đe ĐupriŶd piele ,
a unor algoritmi de blur. Pe lumina Ŷță se folosește Guided Filtering18peŶtru păstrarea ŵuĐhiilor iar
pe ĐroŵiŶaŶțe se apliĐă u n algoritm de tip Box-blur19.
17http://setosa.io/ev/principal-component-analysis/
18 http://kaiminghe.com/eccv10/
19 http://amritamaz.net/blog/understanding-box-blur
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
9
Figura 7. Exemplu pentru efectul de netezire (Smoothing).
2.3.1.2 Toning ;ŶuaŶțareͿ
EfeĐtul de ŶuaŶțare ajută la traŶ sformea tenului într- uŶ teŶ alď, ďroŶzat sau roșiatiĐ, îŶ
fuŶĐție de paraŵetrii setați. AseŵăŶător Đu efeĐtul de Ŷetezire suŶt prezeŶte două etape, et apa de
geŶerare a hărții pielii fiiŶd la fel Đa Đea prezeŶtată îŶ Đapitolul Ϯ.ϯ.ϭ.ϭ.
Cea de- a doua etapă, ĐoŶstâŶd îŶ apliĐarea efeĐtului de toŶiŶg, iŵpliĐă apliĐarea uŶui
Lookup Table20 (LUT) pe toată iŵagiŶea folosiŶd Đa ŵasĐă harta pielii geŶerată aŶterior. LUT -ul
utilizat diferă îŶ fuŶĐție tipul de ŶuaŶțare dorit, preĐuŵ se poate oďserǀa îŶ figura ϴ.
Figura 8. LUT- uri peŶtru diferite efeĐte de ŶuaŶțare ;ToŶiŶgͿ.
20 https://en.wikipedia.org/wiki/Lookup_table
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
10
Figura 9 . Edžeŵplu peŶtru efeĐtul de ŶuaŶțare.
2.3.1.3 Face Slimming ;suďțierea fețeiͿ
Algoritŵul de suďțiere a feței presupuŶe ajustarea poziției puŶĐtelor Đe îŶĐadrează fața.
PuŶĐtele suŶt iŶițial geŶerate îŶ afara feței, urŵâŶd Đa apoi, Đele aflate îŶ partea iŶferioară a feței, să
fie apropiate de ĐeŶtru. AĐest proĐedeu se poate îŶțelege diŶ figura ϭϬ.
Figura 10. Modi fiĐare puŶĐtelor de ĐoŶtrol la suďțiere feței.
Figura 11. Edžeŵplu peŶtru efeĐtul de suďțiere a feței.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
11
2.3.1.4 Nose Slimming ;suďț ierea nasului)
Algoritŵul de suďțiere a Ŷasului fuŶĐțioŶează siŵilar Đu Đel de suďțiere a feței prezentat în
Đapitolul Ϯ.ϯ.ϭ.ϯ, apliĐâŶd aĐeeași repozițioŶare a uŶor puŶĐte de ĐoŶtrol, îŶsă de aĐeastă dată
puŶĐtele iŶițiale fiiŶd pozițioŶate îŶ jurul Ŷasului. UŶ edžeŵplu se poate oďserǀa îŶ figu ra ϭϮ.
Figura 12. Exemplu pent ru efeĐtul de suďțiere a Ŷasului.
2.3.1.5 Eye Enlargement (marirea ochilor)
O iŵpleŵeŶtare a uŶui algoritŵ de ŵărire a oĐhilor iŵpliĐă folosirea a patru puŶĐte de
control pozițioŶate îŶ Đolțurile uŶui pătrat Đe îŶĐadrează fieĐare oĐhi. PeŶtru apliĐarea efeĐtului
aĐeste puŶĐte se depărtează de ĐeŶtrul oĐhiului.
Figura 13. Exemplu pentru efectul de marire a ochilor.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
12
2.3.2 Etapele procesului
Înfrumuse țarea unei iŵagiŶi poate fi îŵpărțită îŶ trei ŵari etape: deteĐț ia fe țelor, ajustare
a parametrilor și procesare conform parametrilor stabili ți. Aceste etape sunt dependente una de alta
dar și de calitatea imaginii pe care se vor aplica efecte le de înfrumuse țare.
2.3.2.1 Detec ția
ProĐesul de deteĐție a fețelor are Đă sĐop reĐuŶoaștere a fețelor uŵaŶe diŶ iŵagiŶi folosiŶd
tehŶiĐi aǀaŶsate de reĐuŶoaștere a trăsăturilor.
UŶ edžeŵplu de algoritŵ [ϭϮ] folosește, peŶtru ĐlasifiĐare, trăsături siŵple forŵate diŶ
două, trei sau patru pătrate. AĐeste trăsături ajută la ǀiteză de ĐalĐul deoareĐe pot fi reprezeŶtate
sub forma unor imagini integrale.
Figura 14. Edžeŵple de trăsături siŵple.
Algoritŵul fuŶĐțioŶează priŶ folosirea uŶei ͞ cascade ͟ de clasificatori în care fiecare
ĐlasifiĐator Đare are uŶ răspuŶs pozitiǀ deĐlaŶșează aĐtiǀarea urŵătorului ĐlasifiĐator. ÎŶ Đazu l uŶui
răspuŶs Ŷegatiǀ pe uŶ Ŷiǀel a l cascadei, procesul se încheie prin rejectarea datelor primite la intrare.
2.3.2.2 Reglarea parametrilor
AĐeastă etapă este uŶa iŵportaŶtă întrucât influen țează rezultatele oďț inute în urma
rulării algoritŵului de îŶfruŵuseț are. Parametrii trebuie regla ți astfel îŶĐât să țiŶă ĐoŶt de edžpuŶerea
imaginii, de culorile din ea și Đhiar de sĐopul preluĐrării.
2.3.2.3 Procesarea
ProĐesarea repreziŶtă o etapă Đare geŶerează iŵagiŶea preluĐrată ș i care este influen țată
de func țioŶarea ĐoreĐtă a deteĐț iei și de reglarea efiĐieŶtă a paraŵetrilor. ÎŶ fuŶĐț ie de fe țele
detectate în imagine și de efeĐtele Đare urŵează să fie apliĐate, etapa de proĐesare rulează algoritŵi
speĐifiĐi fieĐărui efeĐt ș i obțiŶe îŶ fiŶal o iŵagiŶe proĐesată.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
13
3. Arhitectura proiectului
Proie Đtul porŶește de la ideea implem entării uŶei apliĐații peŶtru uŶ telefoŶ Đe rulează
sisteŵul de operare AŶdroid, apliĐație Đe treďuie să iŶĐludă ĐoŵuŶiĐarea Đu o Đ aŵeră sferiĐă
Đapaďilă să produĐă ĐoŶțiŶut ϯϲϬ, o iŶterfață peŶtru SDK -ul oferit de Google pentru redarea
conținutu lui VR și iŶtegrarea ŵotorului de înfrumus țare Đare realizează proĐesarea Đadrelor
proǀeŶite de la Đaŵeră. Tot aĐest sisteŵ îl ǀoŵ rezuŵa la sĐheŵa prezeŶtată ŵai jos îŶ fi gura 17 și
ǀoŵ detalia toți pașii îŶ Đele Đe urŵează.
3.1 Descriere workflow
Caŵera sferiĐă pe care o vom folosi va fi 360Fly 4k (figura ϭϲͿ deoareĐe se doǀedeș te a fi
un dispozitiv ce dispune de toate c araĐteristiĐile ŶeĐesare realiză rii prototipului prezentat.
Figura 16 [6]. Camre 360Fly 4k.
DiŶ puŶĐt de ǀedere hardǁare, Đaŵera este alĐătuită diŶtr -uŶ siŶgur seŶzor de Đaptură a
iŵagiŶii Đu rezoluția ϮϴϴϬdžϮϴϴϬ pidželi la ŵadžiŵ ϯϬ de Đadre pe seĐuŶd ă. SeŶzorul Đaptează luŵiŶa
ajutat de o leŶtilă Đe este alĐătuită diŶ ϴ eleŵeŶte diŶ stiĐlă Đare faĐ parte diŶ Đatego ria leŶtilelor
Figura 15. Schema arhitecturii.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
14
Ultra Fisheye, perŵițâŶd crearea unui unghi de vizualizare de 240ș pe ver tiĐală și ϯϲϬș pe orizoŶtală.
Apertura camerei este F2.5 iar distan ța foĐală efeĐtiǀă este de Ϭ.ϴϴŵŵ.
Voŵ folosi Đaŵera ϯϲϬFlLJ ϰk peŶtru geŶerarea ĐoŶțiŶutul ϯϲϬ. SDK -ul oferit de
produĐători perŵite Đrearea uŶei apliĐații ŵoďile pe sisteŵul de operare AŶdroi d Đare să se
ĐoŶeĐteze la Đaŵeră priŶ rețeaua ǁireless și să preia fludžul de date de la Đaŵeră îŶ ti ŵp real.
Protocoul de transmitere a fluxului este RTSP (Real-time Streaming Protocol), datel e fiind
compresate prin codec- ul H.Ϯϲϰ. După desĐoperirea Đaŵerei îŶ rețea și ĐoŶeĐtarea la aĐeasta,
apliĐația ǀa prelua Đadre le de la adresa rtsp://192.168.2.1/live1.sd .
Fludžul de date urŵează să fie deĐodat îŶtr -un format raw folosind procesarea pe telefonul
iŶteligeŶt. Tedžtura oďțiŶută ǀa fi traŶsferată diŶ ĐoordoŶate plaŶare îŶ ĐoordoŶate sferiĐe peŶtru a
elimina distorsiun ea Đauzată de uŶghiul ŵare de ǀizualizare al Đaŵerei. ÎŶ fuŶĐție de direĐția îŶ Đare
este orieŶtat telefoŶul, direĐție dată de seŶzorii aĐestuia, diŶ iŵagiŶea origiŶală priŵită de la Đ aŵeră
se ǀa păstra zoŶa ĐorespuŶzătoare direĐției de orieŶtare a telefoŶului atât pe orizoŶtală Đât și pe
ǀertiĐală.
AĐeastă iŵagiŶe ǀa fi triŵisă Đătre ŵotorul de îŶfruŵusețare faĐială, proĐes Đe urŵează să
fie edžpliĐat îŶ seĐțiuŶea tehŶologiilor folosite.
ProĐesarea iŵagiŶii ǀa geŶera o Ŷouă tedžtură Đare treďuie triŵisă Đătre displaLJ -ul
telefoŶului pe Đare rulează apliĐația. ÎŶaiŶte de a fi afișată asupra tedžturii treďuie apl iĐată o
distorsiuŶe de tip perŶă peŶtru ĐoŶtraĐararea distorsiuŶii de tip ďutoi Đauzată de leŶ tilele oĐhelarilor
de realitate ǀirtuală.
Ultimul p as îl repreziŶtă ŵoŶtarea telefoŶului îŶ eĐhipaŵeŶtul de realitate ǀirtuală și
atașarea aĐestuia îŶ dreptul oĐhilor.
3.2 Tehnologii folosite
Proďleŵa iŶițială a iŵpliĐat studiul îŶ detaliu a posiďilităților de dezvoltare a apliĐației.
Ideea propusă astfe l este folosirea IDE- ului AŶdroid Studio peŶtru Đrearea uŶei apliĐații aŶdroid Đare
să respeĐte pașii de rulare ŵeŶțioŶați îŶ Đapitolul ϯ.ϭ.
IŵpleŵeŶtarea apliĐației îŶsuŵează folosirea a ŵultor tehŶologii iar ŵotiǀul alegerii
acestora a fost unul înteme iat. PriŶtre aĐestea se Ŷuŵără AŶdroid Studio, SDK -ul Android, SDK-ul
camerei sferice 360Fly, OpenGL, Jaǀa Natiǀe IŶterfaĐe ;JNIͿ și SDK -ul GoogleVR. Tehnologiile
ŵeŶțioŶate ǀor fi detaliate îŶ suďĐapitolele Đe urŵează, preĐuŵ și ŵotiǀul alegerii aĐestora.
ϯ.Ϯ.ϭ AŶdroid Studio și SDK -ul Android
AŶdroid Studio este uŶ IDE Đe perŵite dezǀoltarea apliĐații lor dedicate dispozitivelor ce
rulează sisteŵul de operare AŶdroid și este dispoŶiďil pe ŵai ŵulte sisteŵe d e operare: WiŶdoǁs,
uŶele distriďuții LiŶudž și MaĐ OS X. PeŶtru iŵpleŵeŶtare aŵ ales AŶdroid Studio peŶtru platforŵă
Windows deoarece este IDE-ul o fiĐial deĐlarat de Google. Dezǀoltarea apliĐației a iŵpliĐat sĐrierea
codului în limbajul de programare Java, ajutat de SDK- ul oferit de Google peŶtru apliĐații AŶdroid,
acesta oferind suport pentru comunicarea cu driverele telefonului.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
15
3.2.2 360Fly 4K SDK
Diǀersitatea pe piață a Đaŵerelor ϯϲϬ a făĐut Đa aĐeastă deĐizie să fie uŶa difiĐilă , îŶsă
ŵotiǀele alegerii Đaŵerei ϯϲϬFlLJ ϰK suŶt Đlare. Prototipul dorit a ǀrut să fie u Ŷul Đare să iŶĐludă o
Đaŵera de rezoluție îŶaltă, peŶtru a aǀea o Đalitate ďuŶă a iŵagiŶii îŶ oriĐe Đo Ŷdiții de iluŵiŶare.
Astfel folosirea uŶei Đaŵere Đu uŶ seŶzor de rezoluție îŶaltă a fost priŵul Đriteriu de alegere. UŶ alt
aǀaŶtaj al aĐestei Đaŵere este aĐela Đă este uŶ dispozitiǀ Đapaďil să triŵită uŶ fludž de date îŶ tiŵp
real, folosind protocolul RTSP, subiect discutat mai în detaliu în subcapitolul 3. 1.
ProduĐătorii Đaŵerei ϯϲϬFlLJ ϰK puŶ la dispoziție dezǀoltatorilor uŶ SDK21 ce cuprinde o
iŶterfață ușor de utilizat atât peŶtru ĐoŶeĐtarea la Đaŵeră Đât și peŶtru utilizarea aĐesteia.
3.2.3 OpenGL
OpeŶGL ;OpeŶ GraphiĐs LiďrarLJͿ este uŶ API ŵultiplatforŵă peŶtru deseŶarea ϮD sau ϯD
folosind puterea de procesare a unui GPU (Graphics Processing Unit). Astfel, s-a ales fo losirea
OpeŶGL datorită faptului Đă perŵite ŵodelarea ǀeĐtorială a spațiului, ĐreâŶd uŶ ŵediu ďuŶ p eŶtru
apliĐarea traŶsforŵărilor și tedžturărilor ŶeĐesare îŶ ǁorkfloǁ -ul ales. În subcapitolul 4.2 se vor
discuta în detaliu atât etapele folosirii acestui API, Đât și proďleŵele îŶtâŵpiŶate.
Programarea în OpenGL presupune urŵărirea pipeline- ului plăĐii grafiĐe ;figura ϭϬͿ și
sĐrierea prograŵelor ;deŶuŵite shadereͿ Đe urŵează să ruleze pe GPU îŶtr -unul dintre limbajele
disponibile pentru acestea . ÎŶ apliĐația ĐureŶtă s -a folosit GLSL22, un limbaj de shadere de nivel înalt
Đare are o siŶtadžă ďazată pe limbajul de programare C.
21 https://support.360fly.com/hc/is/categories/203989808-360fly-DEVELOPERS
22 https://www.khronos.org/opengl/wiki/OpenGL_Shading_Language
Figura 17. 360Fly 4k Android SDK.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
16
Figura 18 [7]. OpenGL pipeline.
3.2.4 Java Native Interface (JNI)
JNI repreziŶtă un framework folosit pentru a chema î n JVM23 (Java Virtual Machine), î n
codul java, fuŶĐț ii native ale platformei, scrise în alte limbaje de programare, precum C, C++ sau
Assembly.
Figura 19 [8]. Rolul JNI.
Motorul de îŶfruŵuseț are faĐială pe care s-a dorit să il integreze aplica ția cuprinde cod
Ŷatiǀ, aǀâŶd o iŶterfață sĐrisă î n C. JNI a facilitat astfel utilizarea acestei biblioteci prin posibilitatea
de a rula Đod Ŷatiǀ îŶ apliĐația aŶdroid Đreată, apliĐație Đe rulează îŶ ŵediul JVM.
3.2.5 GoogleVR SDK
ÎŶ Đapitolul ϯ.ϭ aŵ ŵeŶțioŶat despre deforŵarea de tip ďutoi Đauzată de leŶtilele Đu uŶ
uŶghi ŵare de ǀizualizare al oĐhelarilor peŶtru realitate ǀirtuală. AĐeastă deforŵare ǀ ariază în
fuŶĐție de leŶtile , de așezarea aĐestora îŶ HMD și de distaŶța dintre ele. Astfel, pentru a crea o
23 https://www.javatpoint.com/internal-details- of-jvm
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
17
iŵagiŶe plăĐută îŶ ŵoŵeŶtul utilizării oĐhelarilor este Ŷeǀoie de posiďil itatea de persoŶalizare a
ŵodului îŶ Đare este realizată distorsiunea de tip perŶă, ŶeĐesară peŶtru a ĐoŶtraĐara efeĐtul Ŷegatiǀ
cauzat de lentile.
GoogleVR este uŶ SDK destiŶat să reuŶeasĐă toate apliĐațiile de realitate ǀirtuală Đe
rulează pe uŶ telefoŶ, asigurâŶd posiďil itatea utilizatorului de a crea seturi de parametri folosiți
gloďal îŶ toate apliĐațiile îŶ fuŶĐție de ĐaraĐteristiĐile HMD -ului utilizat . AĐĐesul faĐil la aĐeastă
iŶterfață ĐoŵuŶă se realizează priŶ apliĐația Cardboard24.
Crearea unui set de parametrii p resupuŶe desĐărĐarea apliĐației VR Calibration for
Cardboard25și rularea aĐesteia Đu telefoŶul fidžat îŶ HMD peŶtru Đare se dorește Đ alibrarea.
Paraŵetrii se ǀor seta ŵaŶual astfel îŶĐât distorsiuŶea de tip ďutoi a leŶtilei să fie Đoŵplet at eŶuată.
Figura 20. Aplicatia VR Calibration for Cardboard.
Inregistrarea unui set de parametri pentru un HMD se realizeaz ă prin scanarea unui cod
QR26 generat cu ajutorul apliĐaț iei Viewer Profile Generator27 în care se introduc parametrii anterior
desĐoperiț i.
24 https://play.google.com/store/apps/details?id=com.google.samples.apps.car dboarddemo
25 https://play.google.com/store/apps/details?id=com.anrael.vrcc
26 https://en.wikipedia.org/wiki/QR_code
27 https://wwgc.firebaseapp.com/
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
18
4. Implementare
Workflow- ul ales și prezeŶtat îŶ Đapitolul ϯ.ϭ a fost iŵpleŵeŶtat îŶ apliĐație suď fo rŵă
ŵodulară, fieĐare etapă fiiŶd realizată iŶdepeŶdeŶt de Đelelalte. Astfel, îŶ ĐoŶtiŶuare, ǀor fi
prezeŶtate stagiile apliĐației îŶ tiŵpul dezǀoltării.
4.1 Utilizarea S DK-ului GoogleVR
Priŵa etapă a proĐesului de iŵpleŵeŶtare a iŵpliĐat iŶtegrarea SDK -ului GoogleVR valabil
în format .AAR (Android Archive), într-un proiect android nou creat. Bibliotecil e AAR au fost
iŶtroduse îŶ proieĐt suď forŵă de ŵodule edžterŶe de tip .AAR și Đoŵpilate îŶ gradle.
BiďlioteĐa GoogleVR ĐupriŶde iŶterfața peŶtru realizarea uŶei apliĐații Đoŵpatiďile Đu uŶ
HMD de tip Cardboard. Astfel, implementarea unei clase extinse din clasa GvrActivit y28faĐe posiďilă
folosirea unui set de parametri conf igurați aŶterior peŶtru HMD -ul folosit.
IŶterfața GvrView.StereoRenderer29ajută la proieĐtarea pe eĐraŶ a ĐoŶțiŶutului dorit
peŶtru fieĐare juŵătate de eĐraŶ îŶ parte. La fieĐare Đadru, ŵetoda oŶDraǁELJe;ELJe eͿ se apelează
de două ori, Đâte o data peŶtru fieĐare oĐhi. ÎŶ fuŶĐție de paraŵetrul ELJe a fos t setat Vieǁport -ul
ĐorespuŶzător și s -au apliĐat traŶsforŵările ĐorespuŶzătoare direĐției de orieŶtare a telefoŶului și a
poziției oĐhiului luâŶd îŶ ĐalĐul răspuŶsul seŶzorului de aĐĐelerație și al giros Đopul ui telefonului.
Astfel, matricea de trans forŵare oďțiŶută a fost triŵisă Đătre placa grafic ă unde s-a realizat randarea
îŶ fraŵeďufferul aŶterior setat. AĐest proĐes se poate urŵări îŶ figură Ϯ 1.
28 https://developers.google.com/vr/android/reference/com/google/vr/sdk/base/GvrActiv ity
29 https://developers.google.com/vr/android/reference/com/google/vr/sdk/base/GvrVie w.StereoRenderer
Figura 21. Etape le raŶdării folosind GVR.
Rosu – realizate în biblioteca GVR.
Verde – realizate în codul implementat.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
19
4.2 Conectarea la camera 360Fly 4K
ÎŶ aĐest suďĐapitol ǀoŵ prezeŶta etapele iŶtegrării SDK -ului Đaŵerei ϯϲϬFlLJ ϰK și ŵodul de
ĐoŶeĐtarea la aĐeasta îŶ apliĐația iŵpleŵeŶtată.
Similar cu GoogleVR, biblioteca în format .AAR a SDK- ului Đaŵerei a fost îŶĐărĐat suď
forŵa uŶui ŵodul edžterŶ și Đoŵpilată Đu gradle, perŵițâŶd astfel utilizarea API -ului framework-ului
de dezǀoltare pus la dispoziție.
Primul pas l-a reprezentat descoperirea camerelor aflate în proximitatea telefonului .
Folosind metoda de callback FLY360SDK.DiscoverCallback() am ob țiŶut lista dispozitiǀelor
dispoŶiďile, diŶtre aĐestea seleĐtâŶd Đaŵera pe Đare se dorește rularea apliĐației.
Setarea ĐredeŶțialelor de auteŶtifiĐare a fost urŵătorul pas ŶeĐesar îŶaiŶte a apelării
metodei de callback FLY360SDK.ConnectionCallback(), met odă Đare soliĐită ĐoŶedžiuŶea la Đaŵeră.
AĐest proĐes a fost iŵpleŵeŶtat îŶ așa ŵaŶieră îŶĐât să se realizeze traŶspareŶt față de utilizator îŶ
ŵoŵeŶtul rulării apliĐației.
Figura 22. Etapele ĐoŶeĐtării la Đaŵera ϯϲϬFlLJ ϰk.
4.3 Preluarea cadrelor de la camer ă
Dupa cum s-a specificat în capitolul 3.1 , Đaŵera ϯϲϬFlLJ ϰK este Đapaďilă să triŵită uŶ fludž
de cadre în timp real folosind protocolul RTSP. Astfel, în aplica ție, a fost ŶeĐesară implementarea
uŶui sisteŵ Đare să rezolǀe proďleŵa propusă .
Soluția ĐureŶtă iŵpliĐă utilizarea clasei MediaPlayer30 din SDK-ul Android sub forma unui
obiect a Đărui sursă de date a fost setată la adresa rtsp://192.168.2.1/live1.sd . Întrucât decodarea
cadrelor H.264 se realizează î n hardware, player-ul tre ďuie sa ruleze asiŶĐroŶ, aĐeastă setare fiiŶd
realizată prin apelarea metodei MediaPlayer.prepareAsync().
Pentru captarea fluxului de cadre, player- ul are Ŷeǀoie de o suprafața Đoŵpatiďilă î n care
se va stoca ultimul cadru decodat. Necesitatea de a avea datele în format crud (cunoscut sub numel e
de format RAW), sub forma unei texturi compatibile cu OpenGL, a dus la folosirea uŶei suprafeț e
SurfaceTexture31. AĐeastă suprafață are ca tampon de date o textura OpenGL de tipul
GL_TEXTURE_EXTERNAL_OES32. Astfel, cadrele dec odate suŶt traŶsferate direĐt Đă tre memoria
procesorulu i grafiĐ al telefoŶului și pot fi folosite iŶ ĐoŶtiŶuare peŶtru urŵă torul pas din pipeline-ul
apliĐaț iei.Procesul explicat in acest paragraf este schematizat în figura 23.
30 https://developer.android.com/reference/android/media/MediaPlayer.ht ml
31 https://developer.android.com/reference/android/graphics/SurfaceTexture.html
32 https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
20
ÎŶ paragraful aŶterior aŵ ŵeŶțioŶat despre taŵpoŶul care stocheaza cadrele decodate. În
ĐoŶtiŶuare urŵează să edžpliĐăŵ Đuŵ se realizează iŶteraĐțiuŶea îŶtre hardǁare -ul responsabil de
deĐodarea asiŶĐroŶă a Đadrelor și ŵeĐaŶisŵul de stoĐare a aĐestora îŶ tedžtura OpeŶGL.
DeĐodarea hardǁare a Đadrelor proǀeŶite de la Đaŵeră rezultă îŶtr -uŶ ďuffer Đe ĐoŶțiŶe
iŵagiŶea îŶ forŵat RAW. PeŶtru a putea utiliza aĐeste date este ŶeĐesară transferarea lor în
ŵeŵoria plăĐii grafiĐe și ĐoŶtrolate priŶ iŶterŵediul tedžturi de tipul GL_TEXTURE_EXTE RNAL_OES.
PeŶtru a realiza proĐesul ŵeŶțioŶat îŶ paragraful aŶterior, îŶ apliĐație s -a implementat un
ŵodul destiŶat realizării operației de siŶĐroŶizare a datelor deĐodate și sto Đate îŶ ďuffer Đu Đele diŶ
tedžtură. AĐest ŵodul asĐultă la o îŶtrerupere Đe aŶuŶță apariția uŶui Ŷou Đadru deĐodat îŶ taŵpoŶ.
În pipeline- ul priŶĐipal al apliĐației se ǀerifiĐă uŶ flag Đe ŵarĐhează edžisteŶța uŶei astfel de
îŶtreruperi îŶtre ultiŵele două Đadre. DaĐă flag -ul este setat se soliĐită suprafeței să preia diŶ ďuffer
ultimul cadru prin apelarea metodei SurfaceTexture.updateTexImage33 (figura 24).
4.4 Transformarea planar-sferic
ProĐesul prezeŶtat îŶ Đapitolul ϰ.ϯ se fiŶalizează priŶ aduĐerea îŶ ŵeŵoria plăĐii grafiĐe a
uŶei tedžturi ĐorespuŶzătoare Đadrului Đapturat de Đaŵeră. AĐeastă iŵagiŶe se preziŶtă suď forŵ ă
uŶui ŵodel plaŶar al spațiului puterŶiĐ deforŵat. ÎŶ figură Ϯϱ se poate ǀedea Đuŵ arată aĐeastă
33 https://developer.android.com/reference/android/graphics/SurfaceTexture.html #updateTexImage()
Figura 23. StruĐtura sisteŵului ŶeĐesar deĐodării Đadrelor.
Figura 24. Sistemul de transferare a datelor diŶ taŵpoŶ iŶ tedžtură.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
21
tedžtură, iar îŶ aĐest Đapitol ǀoŵ prezeŶta Đuŵ se realizează eliŵiŶarea distorsiuŶi lor peŶtru Đă
iŵagiŶea să poate fi utilizată îŶ urŵătoarele etape diŶ pipeliŶe .
Figura 25. IŵagiŶea Đapturată de Đaŵera sferiĐă.
Cadrul oďțiŶut ĐoŶțiŶe toată iŶforŵația ŶeĐesară Đreări i ĐoŶțiŶutului Đoŵpatiďil Đu
realitatea ǀirtuală. Proďleŵa se reduĐe la a ŵapa aĐeastă tedžtură pe o sferă ;figură ϮϲͿ astfe l încât
ĐeŶtrul iŵagiŶii să ĐorespuŶdă polului Ŷord al sferei, iar soluția a fost iŵpl eŵeŶtată folosind
OpenGL.
Figura 26[13]. Maparea texturii pe o sfer ă.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
22
Etapa de oďțiŶere a uŶei iŵagiŶi Ŷedeforŵate se realizează folosiŶd proĐesorul plăĐii
grafiĐe. AĐesta priŵește Đa date de iŶtrare tedžtura, ŵesha Đe ĐupriŶde puŶĐtele de pe o sferă și
ĐoordoŶatele de tedžtură peŶtru aĐeste puŶĐte peŶtru a putea realiza ĐorespoŶdeŶța în momentul
traŶspuŶerii iŵagiŶii pe sferă. Matricea de trans forŵare este alĐătuită diŶ datele priŵite de la
seŶzorii de orieŶtare ai telefoŶului și ajută la deterŵiŶarea zoŶei diŶ iŵagi Ŷe Đare treďuie afișată pe
eĐraŶul telefoŶului. Rezultatul este o iŵagiŶe stoĐată îŶtr -o tedžtură de tipul GL_TEXTURE_ϮD și
reprezin tă o fraĐțiuŶe diŶ toată iŵagiŶea priŵită la iŶtrare.
Rezultatul traŶsforŵării ŶeĐesită preluĐrări ulterioare, deĐi ŵodulul ĐureŶt treďuie să
produĐă o altă tedžtură. Soluția a fost folosirea uŶui FrameBuffer34 în care se vor salva calculele
realizate pe G PU îŶ tiŵpul rulării prograŵelor shader. Asftel, Ŷoua tedžtură ǀa ĐoŶțiŶe o i ŵagiŶe
nedeformat ă și îŶ coresponde Ŷța Đu direĐția de orieŶtare a telefoŶului.
Figura 27. Procesul de transformare planar-sferic.
4.5 Utilizarea motorul ui de îŶfruŵuseț are facial ă
Motorul de îŶfruŵusețare faĐială este iŵpleŵeŶtat îŶ Đod Ŷatiǀ C. După Đuŵ s -a explicat în
Đapitolul ϰ.ϰ, peŶtru utilizarea ďiďlioteĐii este Ŷeǀoie de JNI. Astfel, iŶterfață a fost adăugată îŶ
proieĐtul apliĐației iar ďiďlioteĐă .SO ;Shared OďjeĐtͿ a fost îŶĐărĐată statiĐ îŶ tiŵpul rulării apliĐației
prin apelarea metodei System.loadLibrary35.
Revenind la pipeline- ul propus, ǀoŵ aŵiŶti Đă îŶ Đapitolul ϰ.ϰ s -a oďțiŶut o iŵagiŶe
nedeformat ă ĐorespuŶzătoare direĐției de orieŶtare a t elefonului. În acest capitol vom prezenta
iŶtegrarea ŵotorului de îŶfruŵusețare îŶ apliĐație preĐuŵ și Đuŵ a fost utili zat peŶtru a oďțiŶe
rezultatul dorit.
Priŵul pas îl repreziŶtă Đrearea uŶui profil de ĐoŶfigurare a ŵotorului. PriŶ aĐest profil se
speĐifiĐă ce efecte vor fi aplicate si Đe iŶteŶsitate să aiďă aĐestea. ÎŶfruŵusețarea fețelor perŵite
seleĐtarea efeĐtelor îŶ fuŶĐție de ǀârstă și îŶ fuŶĐție de sedž. Astfel îŶ tiŵpul rulăr ii apliĐației Ŷu toate
persoaŶele ale Đăror fețe suŶt ǀiziďile ǀor aǀea apliĐate aĐeleași efeĐte.
34 https://open.gl/framebuffers
35 https://developer.android.com/reference/java/lang/System.html#loadLibrary(java. lang.String)
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
23
Urŵătorul pas îl repreziŶtă apliĐarea efeĐtelor ĐoŶforŵ profilului Đreat. Tedžtura ĐureŶtă
este triŵisă ca paraŵetru ŵotorului de îŶfruŵusețare priŶ iŶterŵediul fuŶĐțiilor Ŷatiǀe diŶ i Ŷterfaț a
jaǀa. De aseŵeŶea, este Ŷeǀoie de o tedžtură Ŷouă Đare să respeĐ te dimensiunea celei trimise ca
iŶtrare. AĐeastă ultiŵă tedžtură este folosită Đa uŶ taŵpoŶ îŶ Đare se ǀa stoĐa rezultatul proĐe sării,
aǀâŶd rol de ieșire.
ProĐesul are Đa rezultat oďțiŶerea uŶei tedžturi Đe ĐoŶțiŶe iŵagiŶea proĐesată îŶ fu ŶĐție de
configu rarea realizată aŶterior.
ϰ.ϲ Optiŵizarea ŵotorului de îŶfruŵusețare
FiŶalizarea etapelor prezeŶtate îŶ Đapitolul ϰ a ĐoŶdus la oďțiŶerea uŶui prototip
fuŶĐțioŶal, îŶsă Ŷuŵărul de Đadre pe seĐuŶdă Ŷu era uŶul satisfăĐător, apliĐația rulâŶd la o rată de
aprodžiŵatiǀ ϯϬ de Đadre pe seĐuŶdă.
ÎŶ Đapitolul ϰ.ϭ aŵ ŵeŶțioŶat Đuŵ iŵagiŶile Đelor doi oĐhi diferă priŶ faptul Đă îŶ pipeliŶe
este nevoie de o tranformare a iŵagiŶii Đe depiŶde de oĐhiul peŶtru Đare se proĐesează iŵagiŶea.
Astfel, procesarea imaginii t reďuia rulată de două ori, Đâte o data peŶtru fieĐare oĐhi. De aiĐi s -a
găsit o soluție peŶtru optiŵizare, ideea fiiŶd apliĐarea efeĐtelor pe o siŶgură iŵ agiŶe Đare Ŷu are
îŶĐă apliĐată o traŶsforŵare depeŶdeŶtă de faptul Đă oĐhiul ĐureŶt este Đel drept sa u cel stâng.
AĐesta ŵetodă a fuŶĐțioŶat îŶtruĐât iŵagiŶea Đe proǀiŶe de la camera sferiĐă este
ďidiŵeŶsioŶală, ŶeaǀâŶd ĐoŵpoŶeŶța de adâŶĐiŵe. Astfel, tiŵpul de rulare al ŵotorulu i de
înfrumumuse țare a fost aproape îŶjuŵătățit, oďțiŶâŶdu -se rezultate de peste 40 de cadre pe
seĐuŶdă îŶ tiŵpul fuŶĐțioŶării apliĐației.
ϰ.ϳ IŶteraĐțiuŶea Đu apliĐația
După fiŶalizarea etapelor prezeŶtate pâŶă aĐuŵ îŶ Đapitolul ϰ , s-a oďserǀat Đă
iŶteraĐțiuŶea Đu apliĐația era iŶedžisteŶtă Đu edžĐepția ĐoŶtrolului geŶerat priŶ sĐhiŵďarea orieŶtării
telefonului.
Soluția propusă peŶtru iŵpleŵeŶtarea uŶui ŵodul de iŶterfațare ŵiŶiŵală Đu apliĐația a
fost folosirea ca iŶtrare a ďutoŶului de tip ŵedia prezeŶt pe firul uŶei pereĐhi de Đăști audio. S -a
Đreat uŶ ŵodul Đare reaĐțioŶează la îŶtreruperile Đauzate de apăsarea aĐestui ďutoŶ setâŶd uŶ fl ag
îŶ firul priŶĐipal de rulare al apliĐației. La fieĐare Đadru, flagul este ǀerifiĐat și, îŶ Đazul îŶ Đare aĐesta
este setat, se aĐtiǀează sau se dezaĐtiǀează apliĐarea efeĐtelor de îŶfruŵusețare pe fețe. Astfel,
ďutoŶul fuŶĐțioŶează preĐuŵ uŶ îŶtrerupător și poate fi utilizat îŶ tiŵp Đe tel efoŶul se află îŶ
iŶteriorul uŶui HMD și rulează apliĐația.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
24
5. Testarea apliĐației și interpretarea rezultatelor
Etapele de implementare descrise în capitolul 4.2 au dat ca rezultat uŶ prototip Đapaďil să
realizeze toate fuŶĐțiile propuse iŶițial. AĐest Đapitol ǀa ĐupriŶde o desĐriere a proĐesulu i de testare
ŶeĐesar eǀaluării apliĐației diŶ ŵai ŵulte puŶĐte de ǀedere.
Testarea prototipului a fost gândi tă îŶ așa fel îŶĐât să aĐopere ŵai ŵulte arii Đe deterŵiŶă
perforŵațele de fuŶĐțioŶare a apliĐației. Astfel, s -a optat peŶtru realizarea uŶor sĐeŶarii îŶ Đare să se
urŵăreasĐă Đalitatea iŵagiŶii oďțiŶute, ǀiteză de rulare ;ŵăsurată îŶ Đadre pe seĐuŶdăͿ și utilitatea
apliĐației. Mediile de testare ǀor ǀaria ;de edžeŵplu tipul luŵiŶii fol osite, Ŷuŵărul de fețe diŶ Đadru,
etĐ.Ϳ astfel îŶĐât să perŵită atât eǀaluarea situațiilor ĐoŵuŶe de utilizare Đât și a Đelor edžtre ŵe.
5.1 Scenarii de testare în diverse cond iții de iluŵiŶare
În continuare vor fi prezentate pe rând scenariile de testare luate în calcul, rezu ltatele
preĐoŶizate, rezultatele oďțiŶute și iŶterpretarea aĐestora. PeŶtru realizarea testelor am folosit un
trepied pentru fixarea camerei în diverse poziții, telefonul conectat la camera , sisteŵul de Đăști
peŶtru iŶteraĐțiuŶea Đu apliĐația ;aĐtiǀarea/dezaĐtiǀarea efeĐtelor de îŶfruŵusețareͿ și
fuŶĐțioŶalitatea de Đaptură a eĐraŶului telefoŶului peŶtru salǀarea rezultatelor.
De ŵeŶțioŶat este faptul Đă iŵagiŶile Ŷu îŶtruĐhipează realitatea uŶui sĐeŶariu Ŷ orŵal de
utilizare îŶtruĐât aĐestea urŵează să fie treĐute priŶ leŶtilele HMD -ului folosit înainte de a ajunge la
oĐhii utilizatorului. AĐest luĐru duĐe la prezeŶța îŶ iŵagiŶi le de mai jos a un or deforŵări de tip perŶă
necesare pentru contracar area distorsiunilor de tip butoi cauzate de leŶtile, suďieĐt dezďătut îŶ
capitolul 4.1.5.
ϱ.ϭ.ϭ LuŵiŶă Ŷaturală îŶtr -un mediu umbrit exterior
SĐeŶariul a fost realizat priŶ așezarea Đaŵerei îŶtr -un mediu exterior pentru a beneficia de
luŵiŶă Ŷaturală. SuďieĐtul a fost așezat îŶtr -o zoŶă uŵďrită peŶtru a evita prezeŶța direĐtă a razelor
soarelui pe fața acestuia sau pe lentila camerei.
AĐest sĐeŶariu se îŶĐadrează îŶ Đategoria sĐeŶariilor uzuale ŶefiiŶd testată o situație
edžtreŵă de utilizare. Drept rezultate, se preĐoŶizează oďțiŶerea uŶei Đalități ďuŶe a iŵagiŶii.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
25
Figura 28. Rezultate oďțiŶute îŶ luŵiŶă Ŷaturală la uŵďră.
(stânga – iŵagiŶe Ŷorŵală, dreapta – iŵagiŶe îŶfruŵusețatăͿ .
Rezultatele oďțiŶute ;figură ϮϴͿ au fost ĐoŶforŵ așteptărilor, îŶtruĐât deteĐția a fost
realizată Đu suĐĐes și apliĐarea efeĐtelor de îŶfruŵusețare a Đreat uŶ rezultat plăĐut diŶ puŶĐt de
vedere vizual. Testul se poate declara ca fiind trecut.
5.1.2 LuŵiŶă Ŷaturală diŶ spate îŶtr -un mediu exterior
SĐeŶariul de testare a fost alĐătuit siŵilar Đu Đel prezeŶtat îŶ Đapitolul ϱ.ϭ.ϭ Đu edžĐepția
faptului Đă aĐuŵ s -a dorit Đa suďieĐtul să fie așezat Đu spatele la Đer, astfel ĐreâŶdu -se efectul de
backlight ( luŵiŶă puterŶiĐă îŶ spatele suďieĐtuluiͿ.
Situația testată faĐe parte diŶ Đategoria sĐeŶariilor edžtreŵe, rezultatul așteptat ŶefiiŶd
uŶul proŵițător îŶtruĐât luŵiŶa puterŶiĐă diŶ spatele suďieĐtului ǀa redu Đe drastiĐ luŵiŶozitate pe
față duĐâŶd la pierderea trăsăturilor. Astfel se preĐoŶizează deteĐția Đu suĐĐes a suďieĐtului, î Ŷsă o
Đalitate slaďă a iŵagiŶii îŶ zoŶa feței după apliĐarea efeĐtelor de îŶfruŵusețare.
Figura 29. Rezultate oďțiŶute îŶ luŵiŶă Ŷaturală Đu efeĐtul de ďa cklight.
(stânga – iŵagiŶe Ŷorŵală, dreapta – iŵagiŶe îŶfruŵusețatăͿ .
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
26
În figura 29 suŶt prezeŶtate rezultatele oďțiŶute îŶ sĐeŶariul ĐureŶt testat. AĐestea suŶt
ĐoŶforŵ așteptărilor, deteĐția realizâŶdu -se Đu suĐĐes, îŶsă Đalitatea iŵagiŶii ŶefiiŶd uŶa ridiĐată. De
rețiŶut este faptul Đă luŵiŶa puterŶiĐă aflată îŶ spatele suďieĐtului ǀa aǀea îŶtotdeauŶa efeĐte
Ŷegatiǀe asuprea Đalității imaginii.
ϱ.ϭ.ϯ LuŵiŶă natural ă de intensitate medie într-un mediu interior
PeŶtru realizarea aĐestui sĐeŶariu atât Đaŵeră Đât și suďieĐtul au fost aŵplasați îŶtr -un
ŵediu iŶterior luŵiŶat iŶdireĐt de luŵiŶa Ŷaturală. SuďieĐtul a fost pozițio Ŷat îŶ așa fel îŶĐât aĐesta
să fie luŵiŶat diŶ față.
Scenariul de testare este unul comun, suprinzând modul preconizat ca fiind cel mai
freĐǀeŶt de utilizare al apliĐației. Se urŵărește oďțiŶerea uŶor rezultate faǀoraďile, o deteĐție preĐisă
a Đadrului feței și o Đalitate ďuŶă a iŵagiŶii rezultate diŶ proĐesul de îŶfruŵusețare .
Figura 30.Rezultate oďțiŶute îŶtr -uŶ ŵediu iŶterior Đu luŵiŶă Ŷaturală de iŶteŶsitate ŵedie.
(stânga – iŵagiŶe Ŷorŵală, dreapta – iŵagiŶe îŶfruŵusețatăͿ .
Rezultatele oďțiŶute s -au doǀedit ĐoŶforŵ așteptărilor, iŵagiŶea aǀâŶd uŶ aspeĐt plăĐut.
DeteĐția este realizată Đu suĐĐes, iar apliĐarea efeĐtelor de îŶfruŵusețare Đreează o iŵagiŶ e Đu
aspeĐt Ŷatural. Astfel, testul ale Đărui rezultate se pot oďserǀa îŶ figura ϯϬ ǀa fi d eĐlarat ca fiind
trecut.
ϱ.ϭ.ϰ LuŵiŶă Ŷaturală de iŶteŶsitate slaďă îŶtr -un mediu interior
SĐeŶariul de testare sugerat îŶ aĐest Đapitol este aseŵăŶător atât ca ŵediu Đât și ca
rezultate așteptate Đu Đel prezeŶtat îŶ Đapitolul ϱ.ϭ.ϯ. Astfel se urŵărește oďțiŶerea unei imagini de
Đalitate ridiĐată deoareĐe Đaŵera se ǀa oĐupă de oďțiŶerea uŶei edžpu neri bune a imaginii prin
intermediul unui aŵplifiĐări a seŵŶalului îŶaiŶte de ĐoŶǀersia îŶ digital ;proĐedeu ĐuŶosĐut îŶ
fotografie sub numele de ISO – International Standards Organisation). Astfel, se oďțiŶe o poză
luŵiŶoasă, dar Đu puțiŶ ŵai ŵult zgoŵot decât în scenariul din capitolul 5.1.3.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
27
Figura 31. Rezultate oďțiŶute îŶtr -uŶ ŵediu iŶterior Đu luŵiŶă Ŷaturală de iŶteŶsitate slaďă .
(stânga – iŵagiŶe Ŷorŵală, dreapta – iŵagiŶe îŶfruŵusețatăͿ .
Rezultatele au fost aproape de Đele așteptate, iŵagiŶe rezultată fiiŶd uŶa ďuŶă diŶ pu ŶĐtul
de ǀedere al efeĐtelor de îŶfruŵusețare.
ϱ.ϭ.ϱ LuŵiŶă artifiĐială apliĐată de sus îŶtr -un mediu închis
Scenariul de testare prezentat în acest capitol a fost realizat într- o Đaŵeră îŶĐhisă luŵiŶată
folosiŶd uŶ ďeĐ iŶĐadesĐeŶt așezat îŶ taǀaŶ. SuďieĐtul a fost pozițioŶat astfel suď sursa de luŵiŶă.
Rezultatul preconizat este unul mai slab decât testele anterior detaliate, întrucât l umina
artifiĐială așezată deasup ra subiectului produce umbre dure la nivelul ochilor, al gurii și a l gâtului. De
aseŵeŶea folosirea uŶei ďeĐ iŶĐaŶdesĐeŶt iŵpliĐă Đaptur area unei imagini mult mai calde .
Figura 32. Rezultate o ďțiŶute îŶtr -un mediu interior închi s Đu luŵiŶă artifiĐială asezata deasupra subiectului.
(stânga – iŵagiŶe Ŷorŵală, dreapta – iŵagiŶe îŶfruŵusețatăͿ .
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
28
Rezultatul se poate oďserǀa îŶ figura ϯϮ. Spre surpriŶderea Ŷoastră, iŵagiŶea oďțiŶu tă
după apliĐarea efeĐtelor de îŶfruŵusețare este ŵai ďuŶă deĐât Ŷe așteptaŵ. Deși lipsa detaliilor de
la Ŷiǀelul oĐhilor Ŷu a putut fi ĐoreĐtată îŶ totalitate, aspeĐtul geŶeral al iŵagiŶii este ŵult
îŵďuŶătățit.
5.1.6 Mediu foarte slab iluminat
Ultiŵul sĐeŶariu de testare realizat îŶ ǀederea staďilirii perforŵaŶțelor prototipului din
puŶĐtul de ǀedere al ĐoŵportaŵeŶtului îŶ situații de iluŵiŶare diferite , a implicat testarea unui
mediu foarte slab luminat. Astfel, s- a ales o Đaŵeră îŶĐhisă îŶ Đare luŵiŶa edžisteŶtă iŶtra îŶ îŶĐăpere
printr- uŶ geaŵ de stiĐlă ŵată. SuďieĐtul a fost așezat Đu fața orieŶtată Đătre sursa de luŵiŶă.
Rezultatele așteptate suŶt sĐăzute îŶtruĐât lipsa luŵiŶii ǀa forța Đaŵera să foloseasĐă o
amplifiĐare ŵadžiŵă a seŵŶalului priŶ iŶterŵediul ISO. AĐest fapt ǀa duĐe la oďțiŶerea uŶ ei iŵagiŶi
cu mult zgomot.
Figura 33.. Rezultate oďțiŶute îŶtr -un mediu interior inchis foarte slab iluminat.
(stânga – iŵagiŶe Ŷorŵală, dreapta – iŵagiŶe îŶfruŵusețatăͿ .
CoŶforŵ așteptărilor, rezultatul a fost uŶul slaď datorită zgoŵotului puterŶiĐ și a
iŶteŶsității sĐăzute a luŵiŶii diŶ iŵagiŶea Đapturată de Đaŵeră. EfeĐtele de îŶfruŵusețar e au
îŶrăutățit situația eliŵiŶâŶd trăsăturile faĐiale diŶ iŵagiŶe.
5.2 Testarea vitezei de rulare îŶ fuŶĐție de Ŷuŵărul de fețe diŶ iŵagiŶe
UŶul diŶtre Đriteriile de testare sugerate a fost Đel al ǀitezei de rulare a apliĐației. Voŵ
ŵăsura aĐeastă ǀiteză îŶ Ŷuŵărul de Đadre pe seĐuŶdă pe Đare apliĐația le poate proĐesa. ÎŶ aĐest
capitol vom prezenta câteva sĐeŶarii de testare Đare să perŵită eǀaluarea perforŵaŶțelor diŶ
puŶĐtul de ǀedere al ǀitezei de rulare îŶ fuŶĐție de Ŷuŵărul de fețe deteĐtate îŶ iŵagiŶe.
Ne așteptăŵ ca pe ŵăsură Đe Đoŵpledžitatea iŵagiŶilor Đrește să sĐadă și Ŷuŵărul de Đadre
pe seĐuŶdă proĐesate de telefoŶ. Pragul pe Đare l -aŵ staďilit peŶtru a treĐe aĐest test a fost aĐela Đă
într- o iŵagiŶe Đu Đel ŵult două fețe deteĐtate să oďțiŶeŵ Đel puțiŶ ϯϬ de Đadre pe seĐuŶdă.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
29
Figura 34. FPS pentru imagini iŶ Đare variază Ŷuŵarul fețelor .
PeŶtru rularea pe iŵagiŶi îŶ Đare fețele suŶt aďseŶte aŵ oďțiŶut o ŵedie de ϱϴ de Đadre pe
seĐuŶdă. Rezultatul este de așteptat, îŶtruĐât aďseŶța fețelor eliŵiŶă ŶeĐesitatea rulării ŵotorul ui
de înfrumu sețare.
UŶ sĐeŶariu Ŷorŵal de utilizare ar ĐupriŶde, îŶ opiŶia Ŷoastră, ŵadžiŵ ϲ fețe. P eŶtru astfel
de teste apliĐația s -a doǀedit ďiŶe optiŵizată rulâŶd la o ŵedie de Ϯϲ de Đadre pe seĐuŶdă.
PeŶtru a aĐoperi și Đazurile edžtreŵe s -au realizat teste în Đare Ŷuŵărul de fețe diŶ iŵagiŶe
să fie foarte ŵare. ÎŶ figura ϯϱ se pot oďserǀa rezultatele oďțiŶute peŶtru aĐeste sĐeŶarii. Nuŵărul
ŵiĐ de Đadre pe seĐuŶdă este de așteptat, îŶsă apliĐația s -a doǀedit a rula deĐeŶt Đhiar și îŶ situații
suprasolicitante.
Figura 35. FPS pentru cazuri extreme.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
30
5.3 Evaluarea efiĐieŶței ĐoŵuŶiĐării diŶtre Đaŵeră și telefoŶ
UŶ aspeĐt eseŶțial îŶ fuŶĐțioŶarea flueŶtă a apliĐației, ŶeŵeŶțioŶat pâŶă aĐuŵ, îl
repreziŶtă efiĐieŶța ĐoŵuŶiĐării diŶtre Đaŵeră și telefoŶ. O ĐoŵuŶiĐare efiĐieŶtă ar iŵp liĐa Đa
telefoŶul să fie Đapaďil să oďțiŶă Đadre de la Đaŵeră îŶ tiŵp real. Astfel, rezultatele așteptate ale
iŵpleŵeŶtării ŵodului de ĐoŵuŶiĐare diŶtre telefoŶ și Đaŵeră iŵpliĐau o Đoŵu ŶiĐare fără îŶtârziere
între acestea.
Rezultatele oďțiŶute Ŷu au fost Đele așteptate, preluarea uŶui Đadru de la Đaŵeră aǀâŶd o
întârziere de aproximativ 3- ϰ seĐuŶde. Așteptările Ŷoastre Ŷu au fost susțiŶute de uŶ studiu îŶ
detaliu al ŵodului îŶ Đare fuŶĐțioŶează traŶsŵiterea fludž lui de date în timp real, fapt a dus la crearea
uŶor ĐoŶĐepții greșite. Astfel, îŶ ĐoŶtiŶuare ǀoŵ prezeŶta sursa aĐestei proďleŵe și ŵotiǀul peŶtru
Đare Ŷu edžistă o rezolǀare la aĐeasta.
Figura 36. Traseul datelor de la senzorul Đaŵerei Đătre apliĐație.
Traseul imaginii de la ca ŵera ϯϲϬ la apliĐație ;figura ϯϲ ) nu s-a dovedit a fi atât de simplu
pe cât pare, datele Đapturate de seŶzor treĐâŶd priŶ ŵai ŵulte etape. Odată Đapturată iŵagiŶea pe
seŶzor, aĐeasta treďuie desĐărĐată îŶ ŵeŵoria Đaŵerei. A două etapă iŵpliĐă aĐtualizarea datelor
diŶ taŵpoŶul destiŶat triŵiterii fludžului de date îŶ tiŵp real. Ultiŵa etapă o repreziŶtă desĐărĐarea
Đadrelor diŶ taŵpoŶ îŶ ŵeŵoria telefoŶului de uŶde apliĐația poate aǀea aĐĐes la dat e.
Proce sul Đoŵpus diŶ ultiŵele două etape Ŷu se realizează iŶstaŶtaŶeu datorită tiŵpul ui
ŶeĐesar Đopierii datelor îŶ și diŶ taŵpoŶ. ÎŶ fuŶĐție de ǀiteza de Đopiere tiŵp ul poate ǀaria, îŶsă, Đu
tehŶologia ĐureŶtă, Ŷu poate ajuŶge la o ǀaloare neglijabil ă.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
31
6. Concluzie
Realizarea prototipului prezeŶtat îŶ luĐrarea știiŶțifiĐă a iŵpliĐat atât ďuŶa îŶțelegere a
tehŶologiilor folosite Đât și ŵodul îŶ Đare aĐestea operează și Đuŵ pot fi el e utilizate îŶ sĐopul dorit.
Astfel acest capitol va rezuma rezultatele favorabil e oďțiŶute, preĐuŵ și ĐoŶĐluziile referitoare la
utilitatea ansamblului implementat.
Testarea prototipului și eǀaluarea rezultatelor oďțiŶute prezeŶtată îŶ Đapitolul ϱ perŵit
edžtragerea de iŶforŵații referitoare la perforŵaŶțele oďțiŶute. ÎŶ ĐoŶtiŶuare ǀ om prezenta aceste
rezultate puŶâŶd aĐĐeŶtul pe puŶĐtele forte ale iŵpleŵeŶtării.
6.1 Workflow- ul urŵărit
Modulele iŵpleŵeŶtate și ĐoŵuŶiĐarea diŶtre aĐestea au dat rezultate apropiate de Đele
urŵărite. S -a oďțiŶut fuŶĐțioŶalitatea dorită desĐrisă îŶ Đapitolul ϯ, apliĐația rulâŶd flueŶt la peste ϯϬ
de Đadre pe seĐuŶdă îŶ situații Ŷorŵale de utilizare ;Đapitolul ϱ.ϮͿ. Voŵ considera acest rezultat ca
fiiŶd uŶ suĐĐes îŶtruĐât aĐesta satisfaĐe ĐeriŶțele iŶițiale ale proieĐtului.
6.2 Calitatea imaginii
În implementarea prototipului s- a urŵărit oďțiŶerea uŶei Đalități ridiĐate a iŵagiŶii
proĐesate folosiŶd ŵotorul de îŶfruŵusețare. Rezultatele oďțiŶute, prezeŶtate î Ŷ Đapitolul ϱ.ϭ, Ŷu s –
au ridiĐat la Ŷiǀelul așteptărilor îŶtruĐât rezoluția iŵagiŶii iŶițiale proǀeŶită d e la Đaŵera Ŷu s -a
doǀedit sufiĐieŶt de ŵare. Deși Đaŵera este Đapaďilă să îŶregistreze la rezoluția de ϮϴϴϬdž ϮϴϴϬ,
aĐesta perŵite folosirea protoĐolului RTSP Đu iŵagiŶi de rezoluție ŵadžiŵă ϭϰϰϬdžϭϰ ϰϬ, adiĐă o
pătriŵe diŶ ĐapaĐitatea ei ŵadžiŵă.
CoŶĐluzioŶâŶd aĐest Đapitol puteŵ spuŶe Đă rezultatul ŶesatisfăĐător adus de Đalitatea
iŵagiŶii Ŷu proǀiŶe diŶ ǀiteza de rulare a apliĐației sau diŶ perforŵaŶ țele ŵotorului de
îŶfruŵusețare, Đi diŶ lipsa tehŶologiei adeĐǀate.
6.3 Utilitatea proiectului
După Đuŵ aŵ ĐoŶĐluzioŶat și îŶ Đapitolul ϲ.ϭ, fuŶĐțioŶalitățile dorite au fo st atiŶse.
Workflow- ul Đoŵplet Đe ĐupriŶde ĐoŵuŶiĐarea îŶtre Đaŵeră, telefoŶ și SDK -urile integrate a rezultat
îŶ oďțiŶerea uŶei apliĐații Đe satfisfaĐe ĐeriŶțele propuse, aŶsaŵďlu l creat dovedindu- se flueŶt și
iŶtuitiǀ de utilizat. Lipsa perforŵaŶțelor la Ŷiǀelul Đalității iŵagiŶii, aďseŶța uŶor ŵodule Đare să
îŵďuŶătățeasĐă prototipul precum și ideile de soluțioŶare a aĐestor proďleŵe ǀor fi prezentate sub
numele de ͞îŵďuŶătăț iri ulterioare ͟ în capitolul 7.
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
32
7. ÎŵďuŶătățiri ulterioare
SĐopul aĐestui Đapitol este aĐela de a prezeŶta îŵďuŶătățirile Đe pot fi aduse prototipu lui
iŵpleŵeŶtat și desĐris îŶ aĐeastă luĐrare.
7.1 Î ŵďuŶătătirea Đalitătii iŵagiŶii
ÎŶ ǀiitor Ŷe propuŶeŵ să soluțioŶaŵ problema rezoluției sĐăzute a iŵagiŶii dispoŶiďilă
utilizatorului. Astfel, s-a sugerat utilizarea unor tehnologii mai performante d in punctul de vedere al
Đaŵerei sferiĐe folosite, tehŶologie Đare să perŵită rezoluții ŵai ridiĐate și o Đo ŶedžiuŶe ŵai rapidă.
Astfel, ǀoŵ îŵďuŶătății edžperieŶța utilizării , ĐreâŶd o apliĐație Đare să ĐoŵuŶiĐe ŵai ďiŶe Đu Đaŵera.
Urŵăriŵ aĐĐesul la tiŵpi ŵai ŵiĐi îŶ ŵoŵeŶtul utilizării taŵpoŶului peŶtru flu džul de date îŶ tiŵp
real, proďleŵă prezeŶtată îŶ Đapitolul ϱ.ϯ, și o iŵagiŶe ŵai Đlară iŶdifereŶt de il uŵiŶarea diŶ ŵediu l
de referiŶță.
ϳ.Ϯ IŶteraĐțiuŶea ĐoŶsisteŶtă Đu apliĐația
ÎŶ Đapitolul ϰ.Ϯ.ϳ aŵ prezeŶtat iŵpleŵeŶtarea uŶui ŵodul ŶeĐesar peŶtru iŶteraĐțiuŶea
ŵiŶiŵală Đu apliĐația. ÎŶ ǀiitor, Ŷe propuŶeŵ să aduĐeŵ o iŶteraĐțiuŶe ŵai ďo gată îŶtre utilizator și
apliĐație priŶ utilizarea uŶei teleĐoŵeŶzi Đare să ĐoŵuŶiĐe priŶ Bluetooth Đu telefo Ŷul. AĐeasta ar
putea perŵite seleĐtarea efeĐtelor de îŶfruŵusețare aĐtiǀe îŶ tiŵpul rulării. De aseŵeŶ ea, priŶ
iŶterŵediul uŶor ďutoaŶe de ĐoŶtrol al direĐției sau folosiŶd uŶ jo ystick, utilizatorul ar putea simula
diŶ teleĐoŵaŶdă ŵișĐarea Đapului peŶtru a aǀea aĐĐes la o altă zoŶă diŶ iŵag iŶea ϯϲϬ fără a -și
ŵodifiĐa poziția Đorpului.
ϳ.Ϯ MeŶiu de start al apliĐației
ÎŶ ŵoŵeŶtul aĐtual prototipul realizează, traŶspareŶt față de utilizator, conectarea la
Đaŵera sferiĐă. Drept rezultat, folosirea altei Đaŵere ϯϲϬFlLJ ϰk Ŷu este dispoŶiďilă.
O îŵďuŶătățire ǀiitoare pe Đare o luăŵ îŶ ĐoŶsiderare este iŵpleŵeŶtarea uŶui ŵeŶiu
ǀiziďil îŶ ŵoŵeŶtul îŶ Đare apliĐația îŶĐepe rularea. AĐest ŵeŶiu ar treďui să poată o feri posiďilitatea
utilizatorului să seleĐteze Đaŵera dorită, să iŶtroduĐă ĐredeŶtialele de auteŶtifiĐare și să r ealizeze
alte setări legate de ŵodul de rulare. PriŶtre aĐeste setări se Ŷuŵără efeĐtele apliĐate, iŶteŶ sitatea
acestora și Đare sedže și ǀârste ǀor fi luate îŶ ĐoŶsiderare îŶ proĐesul de îŶfruŵusețare .
IŶfruŵusețarea faĐială îŶ Realitatea Virtuală
33
B I B L I O G R A P H Y
[1] I. E. Sutherland, ͞The ultimate display, ͟ in International Federation of Information Processing
IFIPS Congress ,vol. 2, New York, NY, USA, May 1965, pp. 506 –508.
[2] H. Rheingold, ͞Virtual Reality ͟. Summit Books , 1991.
[3] C. Anthes, R. J. G. Hernandez, M. Wiedemann, D. Kranzlmüllerz, ͞State of the Art of Virtual
Reality Technologies ͟, Bavarian Academy of Sciences , 2016
[4] LiŶk Đă tre imagine:
https://davidonthings.files.wordpress.com/2014/03/interpupilary-distance.jpg
[5] Brown, M.; Lowe, D. G. (2006). ͞Automatic Panoramic Image Stitching using Invariant
Features ͟ in International Journal of Computer Vision , 2006.
[6] Link catre
imagine:http://media.bestofmicro.com/Y/D/593509/gallery/360fly_4K_g01_w_ 755.jpg
[7] Graham Sellers, Richard S Wright, Nicholas Haemel, ͞OpenGL SuperBible: Comprehensive
Tutorial and Reference, 6th Edition ”, 2013
[8] Sheng Liang, ͞The Jaǀa™ Natiǀe IŶterfaĐe Prograŵŵer’ s Guide and Specification ”, 1999
[9] LiŶk Đă tre imagine:
https://play.google.com/store/apps/details?id=com.anrael.vrcc
[10] Link c ătre imagine:
http://www.roadtovr.com/wp-content/uploads/2016/02/oculus- rift-htc-vive-motion-
controllers2.jpg
[11] K. Chenaoua, A. Bouridane, ͞PCA Based Choice of Representative Colors for Skin Detection ”, in
Signal Processing Conference, 2005 13th European, 2005
[12] P. Viola, M. Jones, ͞Rapid Object Detection using a Boosted Cascade of Simple Features ͟, 2001
[13] LiŶk Đă tre imagine:
http://universesandbox.com/forum/index.php?action=dlattach;topic=4397.0;attach =12099
[14] G. Sellers, R. S. Wright Jr., N. Haemel, ͞OpenGL SuperBible: Comprehensive Tutorial and
Reference (6th Edition) ͟, 2013
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: IŶfruŵusețarea faĐială îŶ Realitatea Virtuală [616149] (ID: 616149)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
