33
Univerzita Pavla Jozefa Šafárika v Košiciach Prírodovedecká fakulta 3D REKONŠTRUKCIA INTERIÉROV BAKALÁRSKA PRÁCA Študijný odbor: Informatika Školiace pracovisko: Ústav informatiky Vedúci záverečnej práce: Mgr. Matej Nikorovič Košice 2016 Marián Opiela

3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Embed Size (px)

Citation preview

Page 1: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Univerzita Pavla Jozefa Šafárika v KošiciachPrírodovedecká fakulta

3D REKONŠTRUKCIA INTERIÉROVBAKALÁRSKA PRÁCA

Študijný odbor: InformatikaŠkoliace pracovisko: Ústav informatikyVedúci záverečnej práce: Mgr. Matej Nikorovič

Košice 2016Marián Opiela

Page 2: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Poďakovanie

Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičoviza vedenie, nápady, jeho ochotu, čas a pomoc pri tvorbe tejto práce.

Page 3: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

36080443232775940

Univerzita P. J. Šafárika v KošiciachPrírodovedecká fakulta

ZADANIE ZÁVEREČNEJ PRÁCE

Meno a priezvisko študenta: Marián OpielaŠtudijný program: Informatika (Jednoodborové štúdium, bakalársky I. st.,

denná forma)Študijný odbor: 9.2.1. informatikaTyp záverečnej práce: Bakalárska prácaJazyk záverečnej práce: slovenskýSekundárny jazyk: anglický

Názov: 3D rekonštrukcia interiérov

Názov EN: 3D interior reconstruction

Cieľ: - analyzovať princípy a porovnať metódy 3D rekonštrukcie,- navrhnúť a implementovať nástroj na 3D rekonštrukciu.

Literatúra: 1. As' ari, M. A., Sheikh, U. U., & Supriyanto, E. 3D shape descriptor for objectrecognition based on Kinect-like depth image. Image and Vision Computing32(4), 20014, str. 260-269.2. Dupuis, J., Paulus, S., Behmann, J., Plümer, L., & Kuhlmann, H. A Multi-Resolution Approach for an Automated Fusion of Different Low-Cost 3DSensors. Sensors 14(4), 2014, str. 7563-7579.3. Mura, C., Mattausch, O., Villanueva, A. J., Gobbetti, E., & Pajarola, R.Automatic room detection and reconstruction in cluttered indoor environmentswith complex room layouts. Computers & Graphics 44, 2014, str. 20-32.4. Rusu, R. B., & Cousins, S. 3d is here: Point cloud library (pcl). In Roboticsand Automation (ICRA), 2011 IEEE International Conference on. IEEE, 2011,str. 1-4.5. Tangelder, J. W., & Veltkamp, R. C. A survey of content based 3D shaperetrieval methods. Multimedia tools and applications 39(3), 2008, str. 441-471.

Kľúčovéslová:

3D rekonštrukcia, analýza hlavných komponentov, iterative closest point,detekcia podlahy, detekcia stien

Vedúci: Mgr. Matej NikorovičÚstav : ÚINF - Ústav informatikyRiaditeľ ústavu: prof. RNDr. Viliam Geffert, DrSc.Spôsob sprístupnenia elektronickej verzie práce: prípustná pre vlastnú VŠ

Dátum schválenia: 12.04.2016 prof. RNDr. Viliam Geffert, DrSc.riaditeľ ústavu

Page 4: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Abstrakt

Cieľom tejto práce je navrhnúť a implementovať nástroj na 3Drekonštrukciu interiéru. Súčasťou práce je analýza problematikya popísanie jednotlivých krokov procesu 3D rekonštrukcie. Vstupnédáta pre našu prácu predstavujú mračná bodov. Kvôli veľkému po-čtu bodov je potrebné najprv zredukovať počet bodov v mračnetak, aby ostala zachovaná geometria bodov. To nám zaručí algorit-mus Voxel Grid Filter. Následne si zvolíme kľúčové body a okoliekaždého kľúčového bodu popíšeme deskriptorom. V práci porov-návame niekoľko spôsobov výberu kľúčových bodov, výpočtu des-kriptorov a hľadania zhodných párov medzi dvoma mračnami bo-dov. Pomocou nájdených párov a algoritmu RANSAC vypočítametransformáciu, ktorá zarovná vstupné mračná bodov.

Kľúčové slová: 3D rekonštrukcia, analýza hlavných kompo-nentov, RANSAC, Shell histogram deskriptor, Voxel Grid Filter

Abstract

The aim of this work is to propose and implement a tool for 3Dinterior reconstruction. We analyze and describe every step of 3Dreconstruction process as a part of the work. Point clouds are inputdata for our work. Because of large amount of the points there is ne-cessary to reduce number of points in the cloud in the way of pre-serving the points geometry. The way is guaranteed by the VoxelGrid Filter algorithm. Then we choose keypoints and describe one’sneighborhood using Shell descriptor. We compare some methodsfor keypoints choosing, descriptor calculation and searching for cor-responding pairs between two point clouds in the work. The resul-ting transformation is estimated by using the corresponding pairsand RANSAC algorithm, that aligns the input point clouds.

Keywords: 3D reconstruction, principal component analysis,RANSAC, Shell histogram descriptor, Voxel Grid Filter

Page 5: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Obsah

Úvod 5

1 3D rekonštrukcia 61.1 Bežný postup 3D rekonštrukcie . . . . . . . . . . . . . . . . . . . . . 61.2 Prehľad súčasného stavu . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Návrh riešenia 102.1 Neštandardné postupy . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2 Bežný postup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1 Redukcia počtu bodov . . . . . . . . . . . . . . . . . . . . . . 132.2.2 Výpočet deskriptorov . . . . . . . . . . . . . . . . . . . . . . . 152.2.3 Hľadanie najbližšieho suseda . . . . . . . . . . . . . . . . . . . 172.2.4 Výpočet transformácie . . . . . . . . . . . . . . . . . . . . . . 182.2.5 RANSAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3 Vizualizácia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Výsledky 23

Záver 29

Príloha A 32

4

Page 6: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Úvod

Už v roku 2011 vyšiel článok s názvom ”3D is here: Point cloud library (pcl)“ [1],teda ”3D je tu“. Autori v článku píšu o tom, že na trh sa dostali 3D senzory,ako napr. Kinect senzor, ktoré sú bežne dostupné kvôli svojej cene (pod $150). Mô-žeme teda očakávať, že v robotike, ale aj v iných oblastiach sa rozšíri pozorovaniesveta v 3D. V roku 2014 spustila spoločnosť Google projekt Tango [2], ktorý pri-náša 3D senzory aj do mobilných zariadení ako sú smartfóny a tablety. Vďaka týmtosenzorom je možné vytvoriť 3D snímky, ktoré poslúžia pri tvorbe 3D modelu celejmiestnosti.

Existuje niekoľko oblastí, kde sa dá využiť 3D model interiéru. Môže byť použitýna digitalizáciu dokumentácie historických budov, ale aj na vytvorenie dokumentáciek budovám, ktoré ju nemajú. Tiež môže poslúžiť interiérovým dizajnérom pri ich práci.Svoje uplatnenie nájde aj v zábavnom priemysle (obzvlášť v hernom a filmovom).V neposlednom rade sa dá využiť detekcia stien v 3D modeli pri tvorbe máp pre in-door navigácie. Manuálne vytváranie 3D modelu je pracné a vyžaduje si veľa časua úsilia. Pri budovách s veľkým počtom miestností vytváranie modelu by mohlo tr-vať aj niekoľko mesiacov. Je preto rozumné zvažovať otázku automatizácie vytvárania3D modelu.

V tejto práci sa venujeme tvorbe nástroja, ktorý dokáže automatizovane vytvoriť3D model interiéru miestnosti.

Ciele tejto práce preto môžeme zhrnúť do nasledujúcich bodov:

• analyzovať princípy a porovnať metódy 3D rekonštrukcie,

• navrhnúť a implementovať nástroj na 3D rekonštrukciu.

V prvej kapitole sa zaoberáme tým, čo je 3D rekonštrukcia a ako sa k nej dá pri-stúpiť. Nami navrhnuté riešenie je popísané v druhej kapitole. V tretej kapitole popi-sujeme dosiahnuté výsledky.

5

Page 7: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Kapitola 1

3D rekonštrukcia

1.1 Bežný postup 3D rekonštrukcie

3D rekonštrukcia je proces vytvárania 3D modelu nasnímanej scény alebo objektuna základe fotografií alebo videa. Pre tento proces je potrebné získať aspoň 2 snímkyobjektu alebo scény z rôznych uhlov. Tieto snímky však musia obsahovať nejakúspoločnú prekrývajúcu sa časť, podľa ktorej ich bude možné zarovnať.

V našej práci riešime 3D rekonštrukciu interiéru. Ako vstupné dáta pre rekon-štrukciu používame mračná bodov. Mračno bodov je množina bodov, ktoré nesúgeometrickú informáciu o svojej polohe v 3-rozmernej súradnicovej sústave a infor-máciu o farbe. Mračno bodov možno získať pomocou niekoľkých zariadení. Jednýmz nich je napr. Microsoft Kinect [3]. Toto zariadenie používa klasickú RGB kameruna snímanie farby a hĺbkový senzor, ktorý pridáva informáciu o vzdialenosti sníma-ného bodu od senzoru. Podobným zariadením je Creative Senz3D, ktoré je presnejšieako Microsoft Kinect, ale má menší hĺbkový rozsah. Vďaka tomu je vhodné na sle-dovanie gest rúk. V zariadeniach projektu Tango [2] sa tiež nachádza hĺbkový sen-zor. Jeho spolupráca s ďalšími senzormi mobilného zariadenia (kompas, gyroskop,akcelerometer) uľahčuje 3D rekonštrukciu. Zariadenie David Laserscanner [4] využívainý prístup, vďaka ktorému dokáže zhotoviť presnejšie mračno bodov. Nevýhodou za-riadenia David Laserscanner oproti iným spomínaným zariadeniam je, že nedokáževytvoriť mračno bodov v reálnom čase. Keďže v našej práci využívame mračná bodov,nie sme závislí na žiadnom konkrétnom zariadení.

Cieľom 3D rekonštrukcie je nájsť správnu transformáciu bodov jedného mračnado súradnicovej sústavy druhého mračna. Ak vieme popísať pohyb snímacieho zaria-denia medzi snímaním dvoch mračien bodov, tak výpočet transformácie nie je ťažký

6

Page 8: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

problém. Takáto situácia môže nastať napríklad pri použití statívu a odmeraní veľ-kosti uhla, o ktorý sa snímacie zariadenie otočilo. Podobne jednoducho vieme vyrá-tať transformáciu, ak použijeme otočný stolík pre snímanie nejakého objektu. Podľauhla, o ktorý sa stolík s objektom otočil, vieme určiť parametre transformácie. V praxivšak takéto situácie nenastávajú často, práve naopak, pri snímaní objektu alebo scényzväčša nepoznáme zmenu polohy snímacieho zariadenia. Preto sa v našej práci venu-jeme 3D rekonštrukcii mračien bodov, ktoré boli vytvorené voľným pohybom sníma-cieho zariadenia.

Bežný postup pri 3D rekonštrukcii na výpočet výslednej transformácie využívavýpočet predbežnej transformácie pomocou spárovania kľúčových bodov a následnéodstránenie nepresností. Tento postup bol použitý v prácach [5] a [6]. Výpočet správnejtransformácie závisí od výberu vhodných kľúčových bodov. Tie je možné zvoliť manu-álne pri zobrazení vstupných mračien bodov, čo ale odporuje myšlienke automatizo-vať proces 3D rekonštrukcie. Taktiež existuje možnosť využiť markery pre označenieniekoľkých miest snímanej scény alebo objektu. Pri použití markerov môže dochádzaťk problémom s ich identifikáciou na zhotovenej snímke. Rozmiestnenie markerov si vy-žaduje navýšenie času prípravy scény alebo objektu pred snímaním, čo v niektorýchprípadoch nie je prípustné. V našej práci sa vyhýbame použitiu markerov.

K správnemu spárovaniu kľúčových bodov dôjde iba vtedy, ak sú zvolené vhodnébody a pre každý zvolený bod je vypočítaný deskriptor, ktorý dostatočne popisujevlastnosti jeho okolia.

Bežný postup 3D rekonštrukcie pozostáva z niekoľkých krokov. Na obrázku 1.1sú znázornené tieto kroky v chronologickom poradí. Po získaní dát je dôležité zvoliťsi kľúčové body. Môže ísť o body, ktoré sú v niečom charakteristické, napr. rohy ob-jektov. Za kľúčové body je možné zvoliť aj všetky body mračna. Následne sa počítajúdeskriptory pre všetky kľúčové body a dochádza k spárovaniu týchto bodov. Kľúčovébody sú vhodne zvolené, ak v nich deskriptor nadobúda extrémne hodnoty. Na zá-klade podobnosti deskriptorov každému kľúčovému bodu jedného mračna priradímejeden alebo viacero kľúčových bodov druhého mračna. Nie všetky takto vzniknutépáry sú správne a je nutné zamietnuť nesprávne spárovania. Ak časť scény alebo ob-jektu sa nachádza na oboch snímkach, tak aj po zamietnutí nesprávnych spárovanísa dá vyrátať predbežná transformácia. Tá ešte nemusí byť úplne presná, a pretoje potrebné odstrániť nepresnosti, čo dovolí výpočet výslednej transformácie. Ostávaaplikovať túto transformáciu na vstupné dáta. Vstupné dáta obsahujú veľa bodov,a preto sa využíva redukcia počtu bodov. Vďaka redukcii počtu bodov môže dôjsť

7

Page 9: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Obr. 1.1: Bežný postup pri 3D rekonštrukcii.

k zníženiu šumu, ktorý vzniká pri získavaní dát a je zapríčinený nepresnosťou sníma-cieho zariadenia.

1.2 Prehľad súčasného stavu

Problému 3D rekonštrukcie sa už venovalo viacero prác. Veľký význam majú práceautora Radu B. Rusu, ktorý sa vo svojej dizertačnej práci [5] venoval okrem iného aj 3Drekonštrukcii a je autorom projektu Point Cloud Library [1], open source knižnice,ktorá poskytuje viacero nástrojov pre prácu s mračnami bodov.

Tieto práce boli inšpiráciou pre prácu 3D rekonštrukcia interiérov s využitím zaria-dení pre prirodzenú interakciu [6], ktorá je v mnohom podobná našej práci. Na rozdielod našej práce, deskriptory počíta pomocou metódy FPFH - Fast Point Feature His-togram. Následne zarovná mračná bodov pomocou ICP algoritmu (Iterative ClosestPoint).

Táto práca nepriamo nadväzuje na prácu s názvom Využitie zariadení pre priro-dzenú interakciu v oblasti počítačového videnia [7]. Tá je však silno spojená so za-riadením Microsoft Kinect, pretože jej vstupné údaje nie sú mračná bodov, ale RGBsnímky spolu s hĺbkovou mapou. Vďaka tomu môže využívať SURF metódu pre vý-počet deskriptorov a výpočet predbežného zarovnania.

3D rekonštrukcii sa venuje ešte niekoľko ďalších prác a projektov. Spoločnosť Mic-

8

Page 10: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

rosoft pracuje na projekte Kinect Fusion [8], ktorý poskytuje 3D rekonštrukciu v re-álnom čase s použitím ich zariadenia Kinect.

Ďalšou zaujímavou prácou je A Multi-Resolution Approach for an Automated Fu-sion of Different Low-Cost 3D Sensors [9]. Táto práca sa zaoberá 3D rekonštrukciou,avšak jej vstupom sú snímky z dvoch rôznych zariadení. Jednu snímku zhotovili po-mocou zariadenia Microsoft Kinect a druhú pomocou zariadenia David laserscanner.Tieto zariadenia sa nelíšia len svojou cenou, ale aj rozsahom snímanej oblasti a svojoupresnosťou.

9

Page 11: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Kapitola 2

Návrh riešenia

Prvá časť tejto kapitoly je venovaná neštandardným postupom 3D rekonštrukcie. Po-pisujeme v nej transformáciu mračna bodov založenú na výpočte vektorov hlavnýchkomponentov, ktoré tvoria bázu trojrozmerného priestoru a snahu využiť detekciu ro-vín pre určenie kľúčových bodov. Ďalej detailne popisujeme jednotlivé kroky bežnéhopostupu 3D rekonštrukcie. Zameriavame sa na redukciu počtu bodov v mračne pou-žitím algoritmu Voxel Grid Filter, hľadanie kľúčových bodov, výpočet deskriptorov,spárovanie kľúčových bodov a výpočet transformácie pomocou algoritmu RANSAC.

2.1 Neštandardné postupy

Keďže sa často pri 3D rekonštrukcii pracuje s desiatkami až stovkami tisíc bodov v jed-nom mračne, prvoplánovou myšlienkou našej práce bolo nájsť spôsob, ako riešiť tentoproblém efektívnejšie než bežným postupom. Najviac výpočtového času si pri bežnompostupe vyžaduje výpočet deskriptorov pre všetky kľúčové body a následné spárova-nie kľúčových bodov. Snažili sme sa preto o postup, ktorý by túto časť vynechala predbežnú transformáciu by vyrátal na základe niečoho iného.

Inšpiráciou bola práca A Multi-Resolution Approach for an Automated Fusionof Different Low-Cost 3D Sensors [9], ktorá sa zaoberá 3D rekonštrukciou snímokz dvoch rôznych zariadení. V práci využili na výpočet predbežnej transformácie šta-tistickú metódu Analýza hlavných komponentov, ktorá má anglický názov PrincipalComponent Analysis (PCA). Metóda PCA určí vektory hlavných komponentov. Tietovektory tvoria bázu priestoru. V našom prípade by išlo o bázu trojrozmerného pries-toru. Pre snímky toho istého objektu, ale z iného uhla pohľadu, vektory hlavnýchkomponentov mali by smerovať približne rovnakým smerom. Vďaka tejto vlastnosti

10

Page 12: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

vypočítanie predbežnej transformácie celého mračna bolo by totožné s vypočítanímtransformácie bázy trojrozmerného priestoru.

Obr. 2.2: Vektory hlavných komponentov smerujú približne rovnakým smerom.

Obr. 2.3: Vektory hlavných komponentov smerujú rôznymi smermi.

Vyskúšali sme zrealizovať tento nápad. Pri implementácii sme použili open sourceknižnicu Accord.net [10], ktorá poskytuje výpočet vektorov hlavných komponentov.Na obrázku 2.2 môžeme vidieť znázornené vektory hlavných komponentov pre dverôzne snímky, ktoré sa čiastočne prekrývajú. Tieto vektory majú približne rovnakýsmer. Predbežná transformácia vypočítaná podľa týchto vektorov sa nelíši od vý-slednej transformácie. Ale na obrázku 2.3 vidíme, že vektory hlavných komponentovpre ďalšiu dvojicu prekrývajúcich sa snímok smerujú rôznymi smermi. Výsledná trans-formácia sa líši od predbežnej transformácie vyrátanej podľa týchto vektorov. Z tohovyplýva niekoľko otázok. ”Mýlili sa autori článku [9]?“ ”Ako to, že v ich práci táto

11

Page 13: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

metóda fungovala a v našej nie?“ ”Dá sa vôbec využiť metóda PCA pre výpočetpredbežnej transformácie pri 3D rekonštrukcii?“

Odpoveď na tieto otázky nájdeme, ak si detailne porovnáme situáciu v oboch prá-cach. Hlavným rozdielom je to, že v práci [9] využívajú metódu PCA na výpočet pred-bežnej transformácie jednotlivých objektov. V našej práci sa snažíme o rekonštrukciucelej scény. Keďže PCA je štatistická metóda, tak jej použitie na jednom objektevyráta vektory hlavných komponentov jedného objektu. Tie by mali skutočne byť pri-bližne rovnaké z každého uhla snímania daného objektu. Ale použitie tejto metódyna rekonštrukciu celej scény nebude vždy fungovať. Pri snímaní z rôznych uhlov totižzachytíme aj časť scény, ktorá sa nenachádza na oboch snímkach. Táto časť výrazneovplyvní vyrátané vektory hlavných komponentov. Preto ak sa nechceme obmedziťiba na špecifické prípady a chceme riešiť 3D rekonštrukciu celej scény, nemôžemepoužiť tento prístup.

Ďalší nápad na iný postup je založený na tom, že okrem 3D rekonštrukcie sme chcelidetegovať steny, strop a podlahu. Detegovať steny sme plánovali až vo výslednom 3Dmodeli. Čo ak by sme využili zmenu poradia vykonávaných operácií?

Pokúsili sme sa detegovať steny v každej snímke pomocou algoritmu RANSACna hľadanie rovín. Následne sme chceli použiť rohy miestnosti alebo objektov ako kľú-čové body pre výpočet transformácie. Rohy sme chceli hľadať ako priesečník niekoľ-kých rovín. Ale na snímkach strop a podlaha tvorili málo výraznú časť. To spôsobilo,že algoritmus uprednostnil roviny odpovedajúce stenám miestnosti a bokom rôznychobjektov. Detegované roviny teda boli takmer rovnobežné a ich priesečník ležal mimomračna. Po zvážení situácie sme sa rozhodli zamietnuť aj tento nápad a vrátiť sak bežnému postupu 3D rekonštrukcie.

2.2 Bežný postup

Bežný postup 3D rekonštrukcie sa dá rozdeliť do viacerých krokov. Pre správny vý-počet výslednej transformácie je potrebné vhodne implementovať jednotlivé krokypopísané na obrázku 1.1.

• Získanie dát. V prvom rade je potrebné nasnímať požadovanú scénu vhodnýmzariadením. Následne uložiť mračno bodov v dohodnutom formáte. V našej prácivyužívame (C)OFF formát súboru, ktorý reprezentuje 3D telesá v súbore. V pr-vom riadku OFF súboru sa nachádza počet bodov, počet hrán a počet stien

12

Page 14: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

v súbore. Počet hrán a počet stien je v našom prípade 0. Nasledujúce riadkytvoria zoznam bodov. V každom riadku sú tri čísla, označujúce x, y a z súradnicudaného bodu a ešte 3 čísla z intervalu 0 až 255, ktoré určujú jednotlivé zložkyfarebného modelu RGB. Načítavanie takého súboru je jednoduché a keďže ideo štandardizovaný formát, otvorí ho aj softvér, ktorý pracuje s 3D geometriou,napr. MeshLab.

Keďže pôvodne nasnímané dáta, získané pomocou zariadenia Microsoft Kinectfor Windows v2, obsahovali približne 170000 bodov, pre urýchlenie výpočtua zníženie pamäťovej záťaže je vhodné najprv zredukovať počet bodov v mračne.

2.2.1 Redukcia počtu bodov

Redukcia počtu bodov zjednoduší a urýchli ďalšiu prácu s mračnom bodov,ale nemali by sme zmeniť charakteristické črty snímky. Využijeme metódu,ktorá sa nazýva Voxel Grid Filter a je popísaná v práci [11].

Input: 3D mračno bodov pointsIn,veľkosť voxelu v

Output: redukované 3D mračno bodov pointsOut

n← 4-rozmerné pole bodov, ktoré vytvorí pravidelnú mriežku

foreach p in pointsIn dom [ (p.x - minX) / v ][ (p.y - minY) / v ][ (p.z - minZ) / v ].add(p)

endfor i← 1 to m.length do

for j ← 1 to m[i].length dofor k ← 1 to m[i][j].length do

pointsOut.add(massCenter(m[i][j][k]))end

endendreturn pointsOut

Algoritmus 1: Pseudokód algoritmu Voxel Grid Filter.Tento algoritmus najprv vytvorí pravidelnú mriežku, do ktorej rozdelí všetkybody. Mriežka sa skladá z kociek, ktoré predstavujú jednotlivé voxely. Následnepre každý voxel sa vypočíta jeho ťažisko a to sa pridá do výstupu. V závislosti

13

Page 15: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

od zvolenej veľkosti voxelu sa mení počet bodov vo výslednom mračne. Táto me-tóda zachováva charakteristické črty snímky. Pri zobrazení redukovaného mra-čna je stále možné rozoznať jednotlivé objekty nasnímanej scény. Vďaka použitiuvýpočtu ťažiska dosiahneme aj redukciu šumu spôsobeného nepresnosťami sní-macieho zariadenia. Mriežku voxelov, ktorá vznikla v priebehu algoritmu VoxelGrid Filter ešte využijeme pri ďalšej práci s mračnom bodov.

Časová zložitosť tohto algoritmu je O(n +m), kde n je počet bodov v mračnea m počet voxelov v mriežke. Počet voxelov závisí od zvolenej veľkosti voxelua tiež od rozsahu súradníc bodov v mračne.

• Nájdenie kľúčových bodov. Za kľúčové body sme najprv zvolili všetky body mra-čna. Neskôr bolo potrebné znížiť počet kľúčových bodov, preto sme vybrali bodyz okolia hrán objektov nasnímanej scény. Inšpirovali sme sa prácou [12]. Na hľa-danie týchto bodov sme využili výpočet normálových vektorov pre dve rôzneveľké okolia bodu. Na obrázku 2.4 vidíme, že body z okolia hrán majú iný odhadnormálového vektora pre rôzne veľké okolia bodov, zatiaľ čo odhad normálovéhovektora ostatných bodov je približne rovnaký pre rôzne veľké okolia. Na výpočetnormálových vektorov sme použili metódu PCA, ako je to popísané v práci [13].

Obr. 2.4: Normálové vektory pre menšie a väčšie okolie. Obrázok bol prevzatý z [14].

Všetky body, kde normálové vektory pre okolie 15 cm a 30 cm zvierajú uhol väčšíako 15◦ sme označili za kľúčové body. Na obrázku 2.5 sú zvýraznené červenoufarbou.

• Výpočet deskriptorov. Úlohou lokálneho deskriptora je popísať charakteristickévlastnosti okolia zvoleného bodu. Je dôležité zvoliť deskriptor tak, aby bol inva-riantný voči otočeniu, posunutiu a škálovaniu, pretože výsledná transformáciaje zložením týchto troch transformácií.

Podľa [15] deskriptor by mal spĺňať nasledujúce kritériá:

14

Page 16: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Obr. 2.5: Kľúčové body z okolia hrán objektov.

1. popisne silný - diskriminovať podobnosť rôznych geometrických tvarov,

2. robustný - byť odolný voči šumu a strate informácie,

3. invariantný - poskytovať stabilnú informáciu aj po zmene škály, posunutiaalebo rotácie,

4. stručný a jednoduchý - reprezentovať zložité tvary pomocou jednoduchýchčŕt a ľahko vypočítateľný,

5. a mohol by byť schopný hľadať aspoň čiastočnú zhodu.

2.2.2 Výpočet deskriptorov

Pre výpočet deskriptorov sme zvolili Shell model popísaný v prácach [15] [16].

Obr. 2.6: Shell model. Obrázok bol prevzatý z [17].

V okolí bodu vytvoríme niekoľko sústredných gulí, ako môžeme vidieť na obrázku2.6. Tieto gule rozdelia vzdialenosť od zvoleného bodu do niekoľkých intervalov.

15

Page 17: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Následne spočítame počet bodov, ktoré sa nachádzajú v jednotlivých interva-loch (shelloch). Deskriptor je histogram, zoznam čísel. Takto zvolený deskriptorje invariantný voči otočeniu, pretože využíva guľové okolie. Je tiež invariantnývoči posunutiu, pretože za stred považuje zvolený bod. Ak polomer jednotlivýchgulí nebude považovaný za konštantu, ale vypočíta sa napr. pomocou niekoľ-kých susedných bodov, tak dosiahneme aj to, že deskriptor bude invariantnývoči škálovaniu. Taktiež pomôže normalizácia histogramu na jednotkovú dĺžku.

Pri výpočte deskriptorov je dôležité myslieť na efektívnu implementáciu. Najjed-noduchší spôsob na výpočet deskriptora jedného bodu je určiť vzdialenosť boduod ostatných bodov mračna a podľa nej určiť, do ktorej gule patrí. Pre výpočetdeskriptorov všetkých bodov dosiahneme kvadratickú časovú zložitosť v závis-losti od počtu bodov v mračne. Väčšina bodov pritom nepatrí do lokálnehookolia bodu, preto mnoho operácií vykonáme zbytočne. Ak využijeme mriežku,ktorá vznikla pri Voxel Grid Filtri, dokážeme prehľadávať len lokálne okoliebodu a ignorovať body, ktoré deskriptor nijako neovplyvnia. Vhodnou voľbouveľkosti voxelu, veľkosti a počtu shellov dokážeme výpočet výrazne urýchliť.

Deskriptor nemusí popisovať len geometrické vlastnosti okolia bodu. Môže ob-sahovať aj ďalšie informácie ako histogram farieb susedných bodov. Na výpočettohto histogramu prevedieme farbu bodu z RGB farebného modelu do HSL mo-delu. Následne body rozdelíme podľa odtieňa (hue) vypočítaného v tomto modelido niekoľkých intervalov. Rozdelenie bodov podľa odtieňa farby zabezpečí väčšiupresnosť pri porovnávaní dvoch bodov ako pri použití RGB farebného modelu.

Okrem Shell histogramu spojeného s histogramom farieb susedných bodov smeako deskriptor v našej práci použili aj samotnú farbu zvoleného bodu a tiež zakri-venosť povrchu v danom bode. Zakrivenosť povrchu sme počítali pomocou me-tódy PCA pre lokálne okolie bodu, ako je to popísané v práci [18]. Metóda PCAurčí vlastné čísla λi kovariančnej matice. Zakrivenosť povrchu v bode p pre oko-lie veľkosti n je určená vzorcom:

σn(p) =λ0

λ0 + λ1 + λ2

,

pričom predpokladámeλ0 ≤ λ1 ≤ λ2.

• Spárovanie kľúčových bodov. Môžeme spárovať každý kľúčový bod jedného mra-čna s každým kľúčovým bodom z druhého mračna. Tým však dostaneme príliš

16

Page 18: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

veľa párov a to aj v prípade, ak za kľúčové body zvolíme len body z okolia hránobjektov nasnímanej scény. Preto pri vyberaní párov využijeme deskriptory kľú-čových bodov.

Ak používame ako deskriptor iba samotnú farbu zvoleného bodu, tak páry bu-deme vytvárať iba medzi bodmi, ktoré majú podobnú farbu. Môžeme napr.vypočítať vzdialenosť farieb definovaných pomocou RGB farebného modelu vy-užitím súčtovej (Manhattanskej) metriky. Do ďalších úvah zahrnieme len páry,kde táto vzdialenosť bude menšia ako nejaká prahová hodnota.

Podobne pri použití zakrivenia povrchu si zvolíme prahovú hodnotu. Keď abso-lútna hodnota rozdielu zakrivenosti povrchu dvoch kľúčových bodov bude men-šia ako zvolený prah, tieto kľúčové body utvoria pár.

Ak použijeme Shell histogram ako deskriptor bodu, tak pre zvolený kľúčový bodz jedného mračna hľadáme kľúčový bod v druhom mračne, ktorého deskriptorje najviac podobný deskriptoru zvoleného bodu. Ak za mieru podobnosti dvochdeskriptorov zvolíme Euklidovskú metriku, tak je tento problém problémomhľadania najbližšieho suseda v n-rozmernom priestore.

2.2.3 Hľadanie najbližšieho suseda

Pri hľadaní najbližšieho suseda môžeme zvoliť lineárny prechod zoznamu bodova vybrať odtiaľ bod s minimálnou vzdialenosťou od požadovaného bodu. V prí-pade spárovania kľúčových bodov je potrebné tento krok opakovať pre každýkľúčový bod, čo znamená kvadratickú časovú zložitosť. Ak navyše požadujeme,aby vhodný pár tvorili iba body, pre ktoré platí, že deskriptor jedného boduje najviac podobný deskriptoru druhého bodu a opačne, tak pre toto spárovaniepotrebujeme dvakrát viac času.

Na riešenie tohto problému využívame kd-strom (k-dimenzionálny strom). Ideo dátovú štruktúru, ktorá pripomína klasický binárny vyhľadávací strom. Na roz-diel od neho však ukladá niekoľko rozmernú informáciu. Jeden jej prvok (vrchol)je reprezentovaný niekoľkými vzájomne nezávislými hodnotami. Myšlienka kd-stromu spočíva v delení priestoru nadrovinou v každom jeho vrchole na dva pod-priestory. Do dvoch podstromov pridávame vrcholy na základe toho, na ktorejstrane oddeľujúcej nadroviny sa nachádzajú. Pre dosiahnutie vyváženého kd-stromu je potrebné do koreňa každého podstromu zvoliť medián.

17

Page 19: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Časová zložitosť vytvorenia vyváženého kd-stromu závisí od spôsobu hľadaniamediánu. Nie je však horšia ako O(n log2 n). Vyhľadávanie najbližšieho susedav kd-strome má v najhoršom prípade zložitosť O(n), ale v priemernom prípadeiba O(logn). Použitím kd-stromov docielime rýchlejší výpočet, ako použitím na-ivného algoritmu. Pre naše potreby sme využili open source knižnicu Accord.net[10], ktorá poskytuje implementáciu kd-stromov v jazyku C#.

Táto knižnica okrem iných poskytuje metódy pre presné nájdenie najbližšiehosuseda, aproximačný algoritmus pre nájdenie najbližšieho suseda a hľadanie k-najbližších susedov. Vyskúšali sme použiť všetky tri spomínané metódy pre spá-rovanie kľúčových bodov. Použili sme aj postup, v ktorom bol vytvorený pármedzi dvojicou kľúčových bodov len vtedy, keď vzájomne platilo, že jeden bodje najbližším susedom druhého.

• Zamietnutie nesprávnych spárovaní. Metóda, ktorú sme použili pre výpočettransformácie si poradí aj s nesprávnymi pármi. Využívame však navyše aj to,že pre každý nájdený pár kľúčových bodov vyrátame ich zhodu. Ide o Euklidov-skú vzdialenosť ich deskriptorov. Všetky páry usporiadame podľa tejto zhodya pre ďalšie výpočty použijeme len časť všetkých párov s najlepšou zhodou, napr.štvrtinu.

• Výpočet predbežnej transformácie. Požadovaná transformácia je zložením otoče-nia, posunutia a škálovania. Vyjadríme ju pomocou matice zobrazenia.

2.2.4 Výpočet transformácie

Maticu zobrazenia vypočítame pomocou transformačnej rovnice:

T · A = A′,

kde T je matica zobrazenia, A je zvolený bod a A′ je transformovaný bod A.Použitím homogénnych súradníc dostávame rovnicu:

r1,1 r1,2 r1,3 t1

r2,1 r2,2 r2,3 t2

r3,1 r3,2 r3,3 t3

0 0 0 1

·x

y

z

1

=

x′

y′

z′

1

18

Page 20: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Potrebujeme vypočítať transformačnú maticu, teda jej 12 neznámych koeficien-tov. Prepísaním transformačnej rovnice z maticového tvaru dostávame sústavurovníc:

r1,1 · x+ r1,2 · y + r1,3 · z + 1 · t1 = x′

r2,1 · x+ r2,2 · y + r2,3 · z + 1 · t2 = y′

r3,1 · x+ r3,2 · y + r3,3 · z + 1 · t3 = z′

V tejto sústave sú iba 3 rovnice, ale až 12 neznámych. Keď však vytvorímetakúto sústavu pre 4 body, dostaneme 12 rovníc s 12 neznámymi. Maticovýzápis tejto sústavy vyzerá takto:

x1 y1 z1 1 0 0 0 0 0 0 0 0

0 0 0 0 x1 y1 z1 1 0 0 0 0

0 0 0 0 0 0 0 0 x1 y1 z1 1

x2 y2 z2 1 0 0 0 0 0 0 0 0

0 0 0 0 x2 y2 z2 1 0 0 0 0

0 0 0 0 0 0 0 0 x2 y2 z2 1

x3 y3 z3 1 0 0 0 0 0 0 0 0

0 0 0 0 x3 y3 z3 1 0 0 0 0

0 0 0 0 0 0 0 0 x3 y3 z3 1

x4 y4 z4 1 0 0 0 0 0 0 0 0

0 0 0 0 x4 y4 z4 1 0 0 0 0

0 0 0 0 0 0 0 0 x4 y4 z4 1

·

r1,1

r1,2

r1,3

t1

r2,1

r2,2

r2,3

t2

r3,1

r3,2

r3,3

t3

=

x′1

y′1

z′1

x′2

y′2

z′2

x′3

y′3

z′3

x′4

y′4

z′4

Táto sústava už je v tvare A · x = B, čo je štandardný tvar pre riešenie ta-kýchto úloh. Túto sústavu môžeme riešiť pomocou Gaussovej eliminačnej me-tódy alebo iným spôsobom, napr. pomocou QR rozkladu. V našej práci smepre porovnanie použili Gaussovu eliminačnú metódu aj QR rozklad, pričom smepridali ešte niekoľko ďalších bodov, teda niekoľko riadkov do sústavy rovníc.

Môže nastať prípad, že sústava nemá riešenie v obore reálnych čísel. Použitáknižnica Accord.net [10] v tom prípade aplikuje metódu najmenších štvorcova vráti približné riešenie.

• Odstránenie nepresností. Výpočet predbežnej transformácie ešte nemusí viesťk výslednej transformácii. Preto je potrebné odstrániť nepresnosti a vyrátať novútransformáciu. V našej práci využívame algoritmus RANSAC, ktorý zabezpečíodstránenie nepresností a výpočet správnej výslednej transformácie.

19

Page 21: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

2.2.5 RANSAC

Názov tohto algoritmu je skratka slov RANdom SAmple Consensus. Je to itera-tívna metóda na odhad parametrov matematického modelu. Môžeme ním určiťparametre priamky alebo roviny v trojrozmernom priestore, ale aj parametretransformácie.

Algoritmus k krát opakuje tieto kroky:

– vyber náhodnú minimálnu vzorku, z ktorej sa dá vytvoriť model,

– vypočítaj parametre modelu,

– spočítaj počet bodov vo vzdialenosti menšej ako ε od modelu,

– porovnaj tento počet bodov s doteraz najlepším modelom.

Výsledný model je ten, ktorý má najväčší počet bodov vo vzdialenosti men-šej ako ε. V našom prípade je modelom transformácia. Minimálna náhodnávzorka sú 4 páry bodov. Pre výpočet transformácie použitím QR rozkladu mô-žeme za náhodnú vzorku zvoliť aj väčší počet bodov. Následne vyrátame pa-rametre transformačnej matice a transformujeme všetky kľúčové body jednéhomračna. Zistíme ako ďaleko je transformovaný bod od spárovaného kľúčovéhobodu. Ak je to menej ako ε, tak tento bod pripočítame. Po dostatočnom počteiterácií algoritmus skonverguje k transformácii, ktorá najlepšie vystihuje spá-rovanie kľúčových bodov. Algoritmus je schopný určiť správnu transformáciuaj napriek mnohým nesprávnym párom kľúčových bodov.

Pre zvýšenie presnosti a zníženie počtu potrebných iterácií sme pridali kontrolukolinearity bodov. Upravený algoritmus počíta parametre transformácie iba prebody, ktoré neležia v jednej rovine. Ďalšia úprava zahŕňa počet bodov vo vzdia-lenosti menšej ako ε od modelu. Tieto body sa nazývajú inliery. Ak spárujemejeden bod s viacerými bodmi druhého mračna, môže nastať prípad viacnásob-ného započítania toho istého bodu medzi inliery. Tento prípad môže zapríčiniťkonvergenciu k nesprávnej transformácii, preto sme zabezpečili, aby bol každýbod započítaný najviac raz.

• Výpočet výslednej transformácie. Výslednú transformáciu získame z algoritmuRANSAC opakovaním výpočtu predbežnej transformácie a odstraňovaním ne-presností.

20

Page 22: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Dôležitou súčasťou nástroja na 3D rekonštrukciu je vizualizácia vstupných mračienbodov a výsledného mračna.

2.3 Vizualizácia

Vďaka tomu, že pre ukladanie mračna bodov sme zvolili formát súboru (C)OFF,môžeme mračná zobrazovať pomocou programu MeshLab. Túto vizualizáciu môžemevidieť na obrázku 2.7. V niektorých krokoch práce sme však potrebovali niečo zvýraz-niť, označiť, alebo len sledovať, ako sa zmení situácia. Preto bolo nevyhnutné vytvoriťsi aj vlastnú vizualizáciu, ktorú vidíme na obrázku 2.8. Využili sme pritom knižnicuOpenTK, ktorá je obaľovač knižnice OpenGL pre programovací jazyk C#. Zobrazenémračno si môžeme približovať, odďaľovať, ale aj presúvať sa pomedzi body a sledovaťmračno z rôznych uhlov.

21

Page 23: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Obr. 2.7: Vizualizácia mračna bodov pomocou softvéru MeshLab.

Obr. 2.8: Vlastná vizualizácia mračna bodov pomocou knižnice OpenTK.

22

Page 24: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Kapitola 3

Výsledky

Všetky testy sme vykonali na notebooku Asus TP300LD s parametrami:

• Hardvér - Procesor Intel i7 4510U 2,0 GHz, 8 GB RAM DDR3 1600 MHz, …

• Operačný systém - Ubuntu 15.10 64-bit.

• .NET platforma - Mono verzia 3.2.8.

Nami navrhnutá aplikácia pracuje s dvoma mračnami bodov. Načíta prvé mračnobodov, zredukuje počet bodov v tomto mračne pomocou algoritmu Voxel Grid Filtera pre každý bod vypočíta Shell deskriptor. Tento proces zopakuje pre druhé mračnobodov. Potom pomocou zakrivenosti povrchu nájde kľúčové body. Spárovanie kľúčo-vých bodov vykonáva pomocou kd-stromu, kde pre každý kľúčový bod jedného mračnanájde 3 najbližšie body z druhého mračna. Následne algoritmus RANSAC vypočítatransformáciu a zobrazí sa okno s výsledným mračnom bodov.

V testoch popísaných v tejto kapitole sme zvolili 10000 iterácii algoritmu RAN-SAC. Shell histogram obsahuje 20 hodnôt popisujúcich geometriu okolia bodu a 20

hodnôt popisujúcich farby bodov okolia. Veľkosť okolia sme zvolili 30 cm.Na obrázku 3.9 je výsledná transformácia, ktorá podľa algoritmu RANSAC obsa-

huje 108 inlierov. Pozornejším sledovaním odhalíme, že spoj v rohu miestnosti nie jedokonalý, ale túto transformáciu môžeme považovať za dobrý výsledok. Pri opakova-nom spustení aplikácie s tými istými parametrami nedostaneme vždy dobrý výsledok.Pri jednom z opakovaní algoritmus RANSAC našiel transformáciu so 100 inliermia výsledok môžeme vidieť na obrázku 3.10.

Úspešnosť aplikácie nájsť dobrý výsledok je nízka. Dôvodom sú slabé popisné vlast-nosti Shell histogramu ako lokálneho deskriptora okolia bodu pre 3D rekonštrukciu

23

Page 25: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

a mnoho nesprávnych spárovaní kľúčových bodov. Iba malá časť zo všetkých štvor-prvkových kombinácií párov kľúčových bodov dáva dobré výsledky. Preto sa znižujepravdepodobnosť úspešnosti pri vysokom počte nesprávnych párov. Nesprávna trans-formácia môže pri veľkom množstve zlých párov obsahovať viac inlierov ako správna.Navýšenie počtu iterácii algoritmu RANSAC nezaručí dobrý výsledok.

Obr. 3.9: Dobrý výsledok 3D rekonštrukcie.

Obr. 3.10: Zlá výsledná transformácia.

Výpočet transformácii na obrázkoch 3.9 a 3.10 sme realizovali paralelne. Parale-lizovali sme načítanie oboch mračien, spárovanie kľúčových bodov a výpočet trans-formácie pomocou algoritmu RANSAC. Na obrázkoch 3.11 a 3.12 sú transformácievypočítané s rovnakými parametrami avšak bez využitia paralelizácie. Transformáciuna obrázku 3.11 hodnotíme vizuálne lepšie ako transformáciu na obrázku 3.12, ale ne-môžeme ich považovať za dobré výsledky. Obe transformácie obsahujú 97 inlierov.

24

Page 26: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

V tabuľke 3.1 vidíme porovnanie času paralelizovaných a jednovláknovch výpoč-tov. V jednotlivých stĺpcoch sú postupne namerané časy pre výpočet transformáciezobrazenej na obrázkoch 3.9 až 3.12. Prvé dva stĺpce obsahujú hodnoty pre paralelizo-vané výpočty a ďalšie dva stĺpce hodnoty pre jednovláknové výpočty. Pri načítavanímračna bodov nie je veľký rozdiel v dosiahnutých výsledkoch. Je to spôsobené tým,že paralelizované je len parsovanie dát. Otvorenie súboru a načítanie jeho obsahudo pamäte vykonáva jedno vlákno. Pri párovaní kľúčových bodov je výrazný rozdielmedzi použitím jedného vlákna a štyroch vlákien. Paralelizovaný výpočet trvá takmero polovicu kratšie. Algoritmus RANSAC vstupuje do kritickej sekcie pri porovnávanípočtu inlierov aktuálnej iterácie s doteraz najvyšším dosiahnutým počtom inlierov.Stráženie zámkom spomaľuje vykonávanie výpočtu viacerými vláknami, ale aj na-priek tomu zabezpečí omnoho lepší výsledný čas.

Obr. 3.11: Výsledná transformácia vypočítaná s rovnakými parametrami, ale bez po-užitia paralelizácie výpočtov.

Obr. 3.12: Zlá výsledná transformácia vypočítaná jednovláknovo.

25

Page 27: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Využitím štyroch vlákien sme dosiahli celkový čas výpočtu približne o 15 s lepší.Paralelizovaný výpočet je o pätinu rýchlejší ako jednovláknový.

Je tu priestor paralelizovať aj výpočet deskriptorov a hľadanie kľúčových bo-dov. Pri implementácii je potrebné myslieť na vláknovú bezpečnosť a synchronizáciu,čo komplikuje realizáciu tohto nápadu.

Obr. 3.13: Dobrý výsledok, transformácia s vysokým počtom inlierov.

Obr. 3.14: Výsledná transformácia využívajúca ako deskriptor hodnotu zakriveniapovrchu v okolí bodu.

Pri práci sme mali k dispozícii 5 testovacích mračien bodov jednej miestnosti.Aplikácia dala dobrý výsledok po niekoľkých opakovaniach len pre niektoré dvojicesusedných mračien. Časy výpočtov závisia od veľkosti vstupných mračien, ale výraznesa medzi sebou nelíšia. Počet inlierov sa pri väčšine dvojíc susedných bodov pohybuje

26

Page 28: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

okolo hodnoty 100. Pri jednej dvojici algoritmus RANSAC našiel transformáciu s 318inliermi. Výsledok vidíme na obrázku 3.13. Na obrázku je možné rozoznať, ktoré bodypatrili jednému vstupnému mračnu bodov a ktoré druhému. Ale pri detailnom priblí-žení mračna v okne aplikácie sme mohli pozorovať správne zarovnanie rohu miestnosti.Jedinou nepresnosťou pozorovateľnou v tomto mračne boli mierne vychýlené policeskrinky v rohu miestnosti.

Okrem párovania kľúčových bodov pomocou kd-stromu sme testovali párovaniekľúčových bodov s podobným zakrivením povrchu v okolí bodu. Toto párovanie smeparalelizovali. Shell histogram je zbytočný, pretože deskriptorom bodu je hodnota za-krivenia povrchu v okolí bodu. Počas výpočtu Shell histogramu sme každému bodupriradili zoznam bodov, ktoré sú v jeho okolí. Zoznam bodov z okolia využívame naviacerých miestach v programe, preto nemôžeme úplne vynechať výpočet Shell histo-gramu. Shell histogram sme zmenili tak, aby obsahoval len jednu hodnotu popisujúcugeometriu okolia bodu a jednu hodnotu popisujúcu farby bodov okolia.

Aplikovaním zmeny kritéria pre výber kľúčových bodov sme nedosiahli vyššiuúspešnosť nájdenia dobrého výsledku. Na obrázku 3.14 vidíme výslednú transformá-ciu, ktorá má len 44 inlierov. Tabuľka 3.2 porovnáva časy namerané pri výpočte trans-formácie použitím kd-stromu a párovaním kľúčových bodov s podobným zakrivenímpovrchu. Namerané hodnoty sa odlišujú pri spárovaní kľúčových bodov, algoritmeRANSAC a celkovom čase výpočtu. Spárovanie bodov využitím zakrivenia povrchuv okolí bodu je niekoľkonásobne rýchlejšie. Ale vygeneruje mnoho nesprávnych spáro-vaní, čo spôsobí, že vykonávanie upravenej verzie algoritmu RANSAC, ktorý vyberábody, ktoré neležia v jednej rovine, potrvá približne dvakrát dlhšie. Celkový čas vý-počtu sa predĺži o vyše 30 sekúnd, čo je polovica celkového času výpočtu transformácies využitím Shell histogramu.

27

Page 29: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Tabuľka 3.1: Porovnanie času paralelizovaných a jednovláknových výpočtov transfor-mácií zobrazených na obrázkoch 3.9 - 3.12.

Časy výpočtov v ms Obr. 3.9 Obr. 3.10 Obr. 3.11 Obr. 3.124 vlákna 4 vlákna 1 vlákno 1 vlákno

Načítanie prvého mračna 1141 1179 1478 1507Voxel Grid Filter - prvé mračno 962 982 987 984Výpočet deskriptorov 1. mračna 4982 4997 4936 4954

Načítanie druhého mračna 1185 1207 1501 1501Voxel Grid Filter - druhé mračno 245 249 251 241Výpočet deskriptorov 2. mračna 6206 6057 6168 5987

Nájdenie kľúč. bodov - 1. mračno 3474 3372 3465 3355Nájdenie kľúč. bodov - 2. mračno 4278 4271 4598 4247

Spárovanie kľúčových bodov 3157 3161 6220 5443RANSAC 34854 34834 47499 47421

Celkový čas výpočtu 60506 60333 77123 75661

Tabuľka 3.2: Porovnanie času výpočtov transformácií zobrazených na obrázkoch 3.9a 3.14. Prvá transformácia využíva Shell deskriptor a kd-strom, druhá zakrivenie po-vrchu v okolí bodu.

Časy výpočtov v ms Obr. 3.9 Obr. 3.14kd-strom zakrivenie

Načítanie prvého mračna 1141 1198Voxel Grid Filter - prvé mračno 962 977Výpočet deskriptorov 1. mračna 4982 5079

Načítanie druhého mračna 1185 1252Voxel Grid Filter - druhé mračno 245 256Výpočet deskriptorov 2. mračna 6206 6321

Nájdenie kľúč. bodov - 1. mračno 3474 3414Nájdenie kľúč. bodov - 2. mračno 4278 4774

Spárovanie kľúčových bodov 3157 401RANSAC 34854 70768

Celkový čas výpočtu 60506 94468

28

Page 30: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Záver

V práci sme predstavili komplexný proces 3D rekonštrukcie. Popísali sme bežný postuppri 3D rekonštrukcii aj navrhli dva neštandardné spôsoby, ktoré však neboli úspešné.Jeden z nich bol postavený na výpočte predbežnej transformácie za pomoci analýzyhlavných komponentov. Druhý využíval detekciu rovín na určenie rohov objektov,ktoré by boli považované za kľúčové body.

Detailne sme popísali jednotlivé kroky využívané v bežnom postupe 3D rekon-štrukcie, pričom sme sa špeciálne venovali tým metódam, ktoré sme aj implementovali.Popísali sme algoritmus Voxel Grid Filter, ktorý sme použili na redukciu počtu bodovv mračne. Venovali sme sa výpočtu deskriptorov, kde sme si pri implementácii zvoliliShell model. Pri hľadaní spárovania kľúčových bodov sme využili hľadanie najbliž-šieho suseda pomocou kd-stromov. Na ich implementáciu sme využili voľne dostupnúknižnicu Accord.net. Taktiež sme popísali maticu zobrazenia aj to, ako vyrátať všetkyjej koeficienty. Následne sme sa venovali výpočtu výslednej transformácie pomocoualgoritmu RANSAC.

Naprogramovali sme celý proces rekonštrukcie. Správne výsledky pri transformáciidostávame s malou pravdepodobnosťou. Dôvodom sú slabé popisné vlastnosti Shellhistogramu ako lokálneho deskriptora okolia bodu. Mnoho nesprávnych spárovaníkľúčových bodov takisto znižuje šancu na úspech. Viacero použitých metód závisíod vhodnej voľby konštánt a nájdenie správnych hodnôt nie je triviálna úloha.

Stále ostáva priestor pre ďalšie úpravy a vylepšenia. Jednou z možností je nájsťspôsob výpočtu deskriptora, ktorý zvýši úspešnosť navrhnutého riešenia a zabezpečídobré výsledky aj pri málo kvalitných vstupných dátach. Okrem toho je možné hľadaťneštandardný spôsob 3D rekonštrukcie, ktorý dosiahne dobré výsledky s dostatočneveľkou pravdepodobnosťou a zároveň urýchli čas potrebný pre výpočet transformácie.

29

Page 31: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Zoznam použitej literatúry

[1] RUSU, Radu Bogdan - COUSINS, Steve, “3d is here: point cloud library (pcl)”,in Robotics and Automation (ICRA), 2011 IEEE International Conference on,IEEE : 2011. S. 1–4.

[2] Google’s Project Tango. [online]. [cit. 2016-04-17], Dostupné na internete: https:

//www.google.com/atap/project-tango/.

[3] Kinect - Windows app development. [online]. [cit. 2016-05-15], Dostupné na in-ternete: https://developer.microsoft.com/en-us/windows/kinect.

[4] DAVID 3D Scanner. [online]. [cit. 2016-04-17], Dostupné na internete: http:

//www.david-3d.com/en.

[5] RUSU, Radu Bogdan, “Semantic 3D Object Maps for Everyday Manipulationin Human Living Environments”, PhD thesis, Technische Universität München,2009.

[6] BUZGA, Lukáš, “3d rekonštrukcia interiérov s využitím zariadení pre priro-dzenú interakciu”, Bakalárska práca, UPJŠ, 2013.

[7] KOPERNICKÝ, Matej, “Využitie zariadení pre prirodzenú interakciu v oblastipočítačového videnia”, Bakalárska práca, UPJŠ, 2012.

[8] IZADI, Shahram - KIM, David - HILLIGES, Otmar - MOLYNEAUX, David -NEWCOMBE, Richard - KOHLI, Pushmeet - SHOTTON, Jamie - HODGES,Steve - FREEMAN, Dustin - DAVISON, Andrew - FITZGIBBON, Andrew,“Kinectfusion: real-time 3d reconstruction and interaction using a moving depthcamera” : ACM Symposium on User Interface Software and Technology, Oct.2011. Dostupné na internete: http://research.microsoft.com/apps/pubs/

default.aspx?id=155416.

30

Page 32: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

[9] DUPUIS, Jan - PAULUS, Stefan - BEHMANN, Jan - PLÜMER, Lutz - KUHL-MANN, Heiner, “A multi-resolution approach for an automated fusion of diffe-rent low-cost 3d sensors”, Sensors, vol. 14, no. 4, p. 7563, 2014, issn: 1424-8220.Dostupné na internete: http://www.mdpi.com/1424-8220/14/4/7563.

[10] Accord.net. [online]. [cit. 2016-04-17], Dostupné na internete: http://accord-

framework.net/.

[11] MUNARO, Matteo - BASSO, Filippo - MENEGATTI, Emanuele, “Tracking pe-ople within groups with rgb-d data”, in Intelligent Robots and Systems (IROS),2012 IEEE/RSJ International Conference on, IEEE : 2012. S. 2101–2107.

[12] IOANNOU, Yani - TAATI, Babak - HARRAP, Robin - GREENSPAN, Mars-hall, “Difference of normals as a multi-scale operator in unorganized pointclouds”, in 3D Imaging, Modeling, Processing, Visualization and Transmission(3DIMPVT), 2012 Second International Conference on, IEEE : 2012. S. 501–508.

[13] KLASING, Klaas - ALTHOFF, Daniel - WOLLHERR, Dirk - BUSS, Martin,“Comparison of surface normal estimation methods for range sensing applicati-ons”, in Robotics and Automation, 2009. ICRA’09. IEEE International Confe-rence on, IEEE : 2009. S. 3206–3211.

[14] Surface normals different radii. [online]. [cit. 2016-05-14], Dostupné na internete:http://pointclouds.org/documentation/tutorials/_images/normals_

different_radii.jpg.

[15] AS’ ARI, MA - SHEIKH, Usman Ullah - SUPRIYANTO, Eko, “3d shape desc-riptor for object recognition based on kinect-like depth image”, Image and VisionComputing, vol. 32, no. 4, s. 260–269, 2014.

[16] ANKERST, Mihael - KASTENMÜLLER, Gabi - KRIEGEL, Hans-Peter - SE-IDL, Thomas, “3d shape histograms for similarity search and classification inspatial databases”, in Advances in Spatial Databases, Springer : 1999. S. 207–226.

[17] Shell model. [online]. [cit. 2016-04-13], Dostupné na internete: http://www.

osdata.com/programming/shell/pict/shell01.jpg.

[18] PAULY, Mark - GROSS, Markus - KOBBELT, Leif P, “Efficient simplificationof point-sampled surfaces”, in Proceedings of the conference on Visualization’02,IEEE Computer Society : 2002. S. 163–170.

31

Page 33: 3D REKONŠTRUKCIA INTERIÉROV - …maopiela/bakalarska-praca/... · Marián Opiela. Poďakovanie Rád by som poďakoval vedúcemu práce Mgr. Matejovi Nikorovičovi za vedenie, nápady,

Príloha A

Obsah CD

• PDF súbor tejto práce

• zdrojové kódy aplikácie

• vstupné mračná bodov

32