Josef Průša

Fotogrammetrie – 3D skenování s použitím fotoaparátu či mobilu

23. 03. 2018 | by Mikolas Zuza

Toužili jste někdy po tom, že byste mohli jednoduše přenést reálný předmět do počítače? Technologie, která toto umožňuje, už nějakou dobu existuje. Je však stále velmi drahá a málo dostupná. Většina z nás zkrátka nemá přístup ke špičkovým 3D skenerům, které jsou schopné vytvořit trojrozměrný model naskenováním reálného předmětu. Nehledě na to, že některé objekty mohou být příliš velké na to, aby je vůbec bylo možno jednoduše naskenovat. Naštěstí existuje jiná cesta, jak vytvořit digitální model na základě skutečného, fyzického předmětu. A zvládnete to i vy.

Co je to fotogrammetrie

Fotogrammetrie (někdy též SFM – Structure From Motion) je proces, který vypočítává umístění bodu v trojrozměrném prostoru použitím fotografií objektu zachyceného z více úhlů pomocí fotoaparátu či videokamery. To je alespoň velmi zjednodušené vysvětlení. V podstatě jde o to, že ze všech možných úhlů pořídíte sadu fotografií konkrétního objektu, které následně nahrajete do specializovaného programu. Program následně hledá společné prvky na všech fotografiích, a snaží se s pomocí nich vypočítat, z jakého úhlu byl na dané fotografii předmět vyfotografován. S informací o pozici a úhlu kamery pak dokáže software vytvořit bod ve 3D prostoru, který odpovídá prvku na 2D fotografii. V ideálním případě by měl být výsledkem bezchybný trojrozměrný model. Abyste však dosáhli nejlepších výsledků, bez ručního doladění se neobejdete.

Software

Seznam použitelného fotogrammetrického softwaru je pěkně dlouhý. Problém je pochopitelně v tom, že většina programů je buď velmi drahá, nebo (co se týče schopností bezplatné verze) silně limitovaná. Pokročilejší programy dokonce nabízejí i užitečné cloudové výpočty, což se ale samozřejmě podepisuje na jejich ceně.

Pokusili jsme se najít ten nejlepší bezplatný software:

  • Colmap (Win/Mac/Linux) – používáme jej v rámci tohoto článku
  • 3DF Zephyr (Win) – Zdarma s limitem 50 fotografií
  • Visual SFM (Win/Mac/Linux)

Navíc ještě budeme potřebovat software pro dodatečné zpracování výstupních dat. Tady je rozhodování jednoduché – bereme Meshlab.

Je potřeba zmínit, že výpočty jsou poměrně náročné na hardware. Pokud vlastníte jen starý notebook či levný netbook, počítejte s tím, že kalkulace bude trvat celou věčnost. Mnoho aplikací navíc využívá pokročilé GPU výpočty, například pomocí technologie NVIDIA CUDA (například Colmap), což mimo jiné znamená, že majitelé karet od AMD mají v tomto případě smůlu.

Pořizování fotografií pro fotogrammetrii

V první řadě budete samozřejmě potřebovat fotoaparát. Foťák v moderním smartphonu je dostačující, ovšem pokud máte k dispozici digitální zrcadlovku, budou výsledky mnohem lepší. Pokud se rozhodnete pro zrcadlovku, nezapomeňte vyšponovat clonu na hodnotu 7-8, abyste mohli pořídit co nejostřejší obrázky a vyvarovali se mělké hloubky ostrosti.

Bude potřeba, abyste pořídili alespoň 20 fotografií zvoleného objektu. Během našeho testování se ukázalo, že se vyplatí pořídit mezi 50 až 80 obrázky, abychom zachytili každý detail. Mějte na paměti, že některé obrázky při zpětné kontrole vymažete nebo je program odmítne zpracovat, pokud nenajde dostatek společných prvků.

    1. Pohybujte se kolem objektu v kruzích. Během fotografování nepohybujte objektem ani okolními předměty či pozadím.
    2. Pořizujte překrývající se fotografie. Vaším cílem je mít každou část objektu zachycenou alespoň na dvou fotkách. Ideálně by se po sobě jdoucí fotografie měly překrývat ze zhruba 60-80 %.
    3. Vyvarujte se ostrých a vysoce kontrastních stínů. Využívejte rozptýlené světlo nebo pořizujte fotky za oblačného dne.
    4. Cílový objekt by měl tvořit převážnou část každé fotografie.
    5. Nesnažte se zachytit pohybující se objekty (třeba vaše domácí mazlíčky, tedy pokud zrovna nespí).
    6. Vyvarujte se fotografování lesklých nebo průhledných předmětů (o nich později).

Ideálními objekty pro fotogrammetrii jsou předměty s hrubším povrchem, který má jasně rozpoznatelnou strukturu (například sochy). Pokud je to možné, můžete lesklé či průhledné plochy pokrýt práškem (například moukou), abyste se zbavili odrazů. Případně lze předměty polepit malířskou páskou.

Pokročilí uživatelé mohou natočit i videozáznam zvoleného objektu a následně jej konvertovat na jednotlivé snímky. V takovém případě doporučujeme nastavit vyšší rychlost závěrky (např. 1/80), čímž by se měly eliminovat rozostřené snímky.

Rekonstrukce geometrie z fotografií

Doporučujeme vytvořit novou složku, která bude obsahovat všechny soubory pro daný projekt. Uvnitř této složky vytvořte podsložku nazvanou “Photos” a všechny pořízené obrázky nakopírujte do ní. Projděte pořízené fotografie a všechny rozmazané smažte. Pro rekonstrukci budeme používat program Colmap na operačním systému Windows 10.

  1. Spusťte Colmap pomocí souboru Colmap.bat
  2. V horním menu vyberte Reconstruction – Automatic Reconstruction
  3. Nastavte si pracovní adresář (Workspace folder – Select File), tento adresář bude sloužit k uložení výpočtů a výsledného 3D objektu
    1. Pro tento účel si vedle složky Photos vytvořte další adresář, pojmenujte ho Workspace a vyberte následně jej vyberte v Colmap
  4. Nastavte složku s obrázky (Image folder – Select File) a pro tento účel vyberte složku Photos
  5. Položku Vocabulary tree můžete nechat prázdnou, případně můžete stáhnout a použít následující soubor
  6. Datový typ (Date type) nechte na hodnotě Individuální obrázky (Individual images)
  7. Kvalitu nastavte na Medium
    1. Můžete vyzkoušet i vysokou (High) kvalitu, ovšem během našeho testování způsobovalo toto nastavení časté pády aplikace
  8. Všechny ostatní parametry nechte na výchozích hodnotách a klikněte na Run
  9. Následující proces trvá něco mezi pěti minutami a (zdánlivým) nekonečnem, vše záleží na výpočetním výkonu vašeho počítače a počtu fotografií

Až Colmap dokončí kalkulaci, zobrazí se rekonstruovaný pohled na scénu s dopočítanými úhly kamery.

Nastavení programu Colmap a výsledná rekonstruovaná scéna

Colmap a výstupní data

Po skončení kalkulace nám Colmap vygeneruje dva soubory, které nás budou zajímat. Jedná se o fused.ply a meshed.ply. Najdete je v podsložce Workspace/dense/0. Meshed.ply je, jak jméno naznačuje, polygonový objekt. Colmap není zrovna přeborníkem, co se týče vytváření 3D objektů z poskytnutých dat, ale jestli si chcete ušetřit čas, pak můžete vygenerovaný objekt v podstatě ihned použít. PLY lze jednoduše zkonvertovat do formátu STL, například v programech Meshmixer nebo Meshlab. Rozhodně ale není dobrý nápad začít 3D model okamžitě tisknout. Všechny objekty vytvořené 3D skenováním nebo fotogrammetrií totiž obsahují řadu chyb, plus jim chybí plochá základna, kterou by bylo možno umístit na tiskovou podložku. Projděte si naše návody Jak opravit poškozené 3D modely a Řezání modelů, kde vysvětlujeme, jak tyto problémy odstranit.

Mějte na paměti i to, že rozměry vygenerovaného předmětu jsou víceméně náhodné, tudíž jej pak nezapomeňte zvětšit či zmenšit.

Druhý vygenerovaný soubor je pak o dost zajímavější. Nazývá se fused.ply a obsahuje takzvané “mračno bodů” (point cloud). Jedná se o shluk bodů v prostoru, nejsou tu žádné polygony, tudíž ani žádný objekt. Právě onen objekt si budeme muset sami vytvořit. Je to práce navíc, ale výsledek stojí za to.

Vytvoření objektu z mračna bodů

  1. Otevřete Meshlab, vyberte nejprve File – Import Mesh a následně soubor fused.ply
  2. Zobrazí se scéna vytvořená z bodů v trojrozměrném prostoru
  3. Vyberte nástroj Select vertexes z hlavní nástrojové lišty (nahoře) a použijete jej k vybrání všech bodů, které si přejete smazat
    1. Nástroj funguje i pro hromadné označování. Stiskněte levé tlačítko na myši a tahem vytvoříte obdélník kolem bodů, které si přejete vybrat
    2. Můžete podržet CTRL, abyste k již existujícímu výběru přidali další body
  4. Klikněte na tlačítko pro smazání vertexů (Delete vertices). Vybrané vertexy zmizí
  5. Opakujte kroky 3 a 4, dokud vám nezůstanou jen ty body, které si přejete zachovat. Z nich bude vytvořen 3D objekt.
  6. Následně projděte menu Filters – Remeshing, Simplification and Reconstruction a vyberte Screened Poisson Surface Reconstruction
    1. Hloubka rekonstrukce (Reconstruction Depth) má zásadní vliv na finální výsledek. Hodnoty mezi 13 a 15 jsou ve většině případů ideální, a představují vhodný kompromis mezi kvalitou a časem zpracování
    2. Ostatní nastavení většinou fungují nejlépe s výchozími hodnotami, ovšem experimentování se meze nekladou
  7. Stiskněte tlačítko Apply, čímž vytvoříte 3D objekt
  8. Hrany výsledného modelu budou často rozházené, zdeformované, nebo se dokonce celé zakřiví a zkroutí, případně dojde k vytvoření nejrůznějších anomálií. To je součástí procesu, model můžete dále editovat, abyste dosáhli lepšího výsledku.
    1. Pro výběr polygonů můžete postupovat podobným stylem jako při výběru vertexů. K tomu slouží nástroje Select in triangular region (pro výběr) a Delete faces (pro smazání).
  9. Pro uložení objektu vyberte File – Export Mesh
    1. Pokud chcete výsledný 3D model dále sdílet včetně textury, vybírejte formáty PLY, 3DS nebo OBJ
    2. Pro 3D tisk vyberte formát STL

Tipy pro vylepšení vašeho 3D modelu

Sepsali jsme pro vás ještě několik dalších tipů, které by vám měly usnadnit dokončování a ladění výsledného modelu v programu Meshlab.

  1. Povrch objektu můžete vyhladit pomocí filtru Smooth, najdete jej ve Filters – Smoothing, Fairing and Deformation – Laplacian Smooth
    1. Zkuste zvýšit parametr Smoothing steps na hodnoty 8-15
    2. Tento proces můžete libovolně opakovat pro dosažení lepších výsledků. Přehnané vyhlazování může ale vést ke ztrátě důležitých detailů
  2. Abyste se automaticky zbavili všech nadbytečných polygonů, které vznikly během generování 3D objektu, můžete zkusit další filtr: Filters – Selection – Select Faces with edges longer than…
    1. Zaškrtněte volbu Preview
    2. Vylaďte parametr Edge threshold tak, aby všechny polygony, které chcete smazat, byly označeny. Pokud jste s výsledkem spokojeni, můžete použít Delete faces pro smazání vybraných polygonů
  3. Pokud má váš model vysoký počet polygonů a vertexů, může být práce s ním velmi náročná. Navíc by následné slicování trvalo nesmírně dlouho. Počet polygonů můžete snížit pomocí dalšího filtru: Filters – Smoothing, Fairing and Dedformation – Quadric Edge Collapse Decimation
    1. Nastavte požadovaný počet polygonů
    2. Nemá smysl vytvářet objekt s více než jedním milionem polygonů, dokonce i sto tisíc polygonů je více než dostatečných

Příklady

Sochy

Sochy jsou pro fotogrammetrii perfektním objektem. Mají hrubý povrch, který nevrhá odlesky. Mají však dostatek geometrických prvků a detailů, kterých se může počítačový software chytit. Navíc jsou sochy většinou příliš velké pro tradiční 3D skenery, o celkovém nepohodlí spojeném s používáním 3D skeneru na veřejných prostranstvích nemluvě. Ale s fotogrammetrií je to výrazně jednoduší. Zkrátka jen vezmete fotoaparát a začnete pořizovat snímky ze všech úhlů. Vzhledem k tomu, že se budete pohybovat venku, často mezi lidmi, mějte na paměti několik důležitých věcí. Snažte se vyvarovat toho, aby na vašich snímcích byly zachycené pohybující se objekty. Pokud kolem procházejí lidé, počkejte, až opustí záběr. Čekání můžete vyplnit tím, že budete mezitím fotit jiné části objektu bez rušivých elementů. Ideálně počkejte, až slunce zajde za mrak, abyste se vyvarovali ostrých a kontrastních stínů.

Socha Sedící ženy od Václava Bejčka z roku 1967, rekonstruovaný 3D model (podívejte se na 3D zobrazení na webu Sketchfab), a vytištěná verze

Baby Groot

Možná si říkáte, jaký má význam skenovat vytištěný model, když je přece původní STL model mnohem lepší. Přinejmenším se jedná o ideální způsob, jak zhodnotit kvalitu této technologie, protože můžeme snadno porovnat rozdíly mezi původním STL modelem a námi vygenerovaným 3D objektem. Další, o něco praktičtější využití je pak možnost naskenovat si vytištěný objekt, který jste ručně nabarvili, a dál jej sdílet.

Jak se můžete přesvědčit na 3D zobrazení níže, došlo ke zjevnému zhoršení kvality, co se týče geometrických dat. Na druhou stranu drtivá většina prvků byla rekonstruována úspěšně, tudíž by stačilo několik manuálních úprav a model by vypadal velmi dobře. Navíc je tu i příjemný doplněk v podobě plnobarevné textury. V domácích podmínkách a s bezplatným softwarem to vůbec není špatný výsledek.

Pro porovnání geometrie obou objektů stiskněte klávesu I a vyberte položku Matcap

Pálka na stolní tenis, aneb Jak na lesklé povrchy

Skenování pálky na stolní tenis nebylo nijak obtížné, tedy až na jednu výjimku: velké dřevěné hrací plochy pokryté gumovým potahem. Nemají žádnou výraznou strukturu ani detaily, kterých by se mohl software chytit. A co hůře – jsou lesklé. Když pak s fotoaparátem kroužíte kolem pálky, můžete se všimnout, jak se neustále mění odrazy světel. Tím pádem počítačový program nedokáže v těchto částech správně vytvořit polygonovou síť, což vede k jedinému výsledku: zcela nahodilému tvaru objektu. Abyste těmto problémům předešli, je potřeba tento typ povrchů upravit a přidat jim detaily. Toho můžete dosáhnout například jednoduchým použitím malířské lepící pásky. Pár kousků pásky nalepte na problematická místa, čímž zakryjete odrazy a vytvoříte záchytné body pro fotogrammetrický software. Ve 3D zobrazení pak můžete vidět, jak tento jednoduchý trik dokáže ovlivnit výsledek.

Sklo a průhledné materiály

Průhledné či poloprůhledné objekty taktéž představují problém. S ostrými a výraznými rohy si fotogrammetrický software možná poradí, ovšem hladké průhledné plochy budou během generování zcela ignorovány a výsledek zůstane daleko za očekáváním. Stejně jako u lesklých povrchů můžete i v tomto případě použít lepící pásku, případně vodou ředitelné barvy ve spreji.

Slovo závěrem

Trojrozměrné objekty vytvořené pomocí fotogrammetrie mohou být natolik kvalitní, že překonají výsledky z laciných 3D skenerů. Navíc vám fotogrammetrie umožňuje zachytit rozměrné objekty, které byste standardním skenerem neměli šanci zachytit. Vaše pokusy totiž nemusí končit jen u soch a digitálních zrcadlovek. Reálně je možné si s pomocí dronu vytvořit například 3D model vašeho domu. Fotogrammetrie je navíc velmi dostupná technologie, přičemž existuje vysoká pravděpodobnost, že veškeré vybavení již vlastníte. Stačí vám solidní fotoaparát (i v mobilu) a alespoň trochu výkonný počítač.

Je fotogrammetrie skutečně funkčním nástrojem pro 3D skenování? Určitě ano. Je rozumné ihned začít tisknout naskenované objekty bez dodatečných úprav? Raději ne.

Jako u jakékoliv jiné technologie pro 3D skenování i zde platí, že výsledný trojrozměrný objekt nebude zcela bezchybný. V některých oblastech budou chybět detaily, rovné plochy nebudou úplně rovné, polygonová síť může obsahovat díry či tvary, které v reálném světě nelze replikovat ani s pomocí 3D tiskárny. Pokud si však dokážete s 3D modelem trochu pohrát a tyto chyby odstranit, bude výsledek stát za to.

Zdroje

Schonberger, Johannes Lutz and Frahm, Jan-Michael, Structure-from-Motion Revisited. University of North Carolina at Chapel Hill, Eidgenossische Technische Hochschule Zurich.

All3DP – Autodesk 123D Catch Review

 


Originální 3D tiskárna Prusa i3

Podívejte se na originální Prusa i3 MK3 3D tiskárnu!
Nejlevnější je už od 19 990 Kč

Průša 3D tiskárny na faceboku