Meshroom - jednoduchý 3D scan objektu pomocí fotogrammetrie

Meshroom - jednoduchý 3D scan objektu pomocí fotogrammetrie
on

Potřebujete převést reálné těleso do 3D digitálního modelu a nevíte si s tím rady? Možností je vícero. Můžete si nainstalovat některý z 3D designerských programů a začít modelovat. Línější (a chytřejší) napadne použít 3d skener, avšak brzy zjistí, že cena takovýchto skenů není zrovna levnou záležitostí a především, že jejich těleso může být pro takovýto sken příliš rozměrné / těžko přepravitelné. Naštěstí existuje snadná a levná cesta tvorby 3D digitálních modelů skutečných těles - fotogrammetrie.

Co je fotogrammetrie?

Fotogrammetrie je vědní obor zabývající se rekonstrukcí tvarů, měřením rozměrů a určováním polohy předmětů z fotografických snímků. V rámci 3D scanu těles se využívá vícesnímkové fotogrammetrie. Její podstatou je modelace digitálního tělesa na základě série fotografií zachycujících dané reálné těleso.

Fotogrammetrii lze provádět s použitím celé řady softwarů, a to placených i bezplatných. Zvolený software je přitom rozhodujícím pro časovou náročnost a kvalitu výsledného 3d modelu získaného fotogrammetrii. Dříve se pro běžné použití nejčastěji využívaly bezplatné programy jako Colmap, 3DF Zephyr (limit na 50 zdrojových fotek v bezplatné verzi) nebo Visual SFM. Dnes je naším favoritem software MeshRoom.

Socha lva získaná s využitím fotogrammetrie a softwaru MeshRoom

Proč dělat fotogrammetrii v MeshRoom?

Meshroom je bezplatný open-source software (zdrojový kód si můžete projít zde) s velmi snadnou ovladatelností a intuitivním prostředím. Zpracování fotografií probíhá s využitím fotogrammetrického frameworku pro počítačové vidění AliceVision. Tento framework je produktem spolupráce několika univerzit, laboratoří a postprodukční francouzské společnosti Mikros Images. Mezi partnery pomáhající s AliceVision patří i České vysoké učení technické v Praze.

Generování modelů fotogrammetrií v Meshroom je velice snadné, doslova spočívá pouze v označení zdrojových fotografií, jejich přetažení do okna softwaru, kliknutí na volbu start / compute a několikahodinovém čekání na přepočet a převod předmětu zachyceného na fotografiích do kvalitního 3D digitálního modelu. Mimo tento jednoduchý mód generování, Meshroom umožňuje i volby rozšířeného a živého generování - oba módy umožňují do již částečně vygenerovaného modelu přidávat další zdroje dat za účelem dosažení vyšší kvality výsledního modelu.

Software Meshroom je dostupný pro operační systém Windows i OSX/Linux a pro svůj běh vyžaduje podporu knihovny CUDA (dostupná v rámci grafických karet nVidia, uživatelé AMD mají smůlu, případně si musí modifikovat kód související s potřebami CUDA). Instrukce k instalaci, stejně jako istalační soubory, jsou k dispozici na stránce programu.

Ukázka fotogrammetrie v MeshRoom. První pokus s nedostatečným počtem zdrojových fotografií, následován donahráním dodatečných fotografií pro zkvalitnění prvotního modelu. Výsledný model poté nahrán do softwaru AutoDesk Maya. Dále ukázka renderováním s využitím výpočetního výkonu v cloudu. Video je zakončeno ořezem nechtěných polygonů modelu s pomocí softwaru Autocad Maya a následným převzorkováním a přestrukturováním výsledného modelu.

Softwarovou část máme. Nyní se zaměřme na metodiku získávání zdrojových fotografií pro výslednou modelaci 3D scanu objektu.

Jaký fotoaparát pro fotogrammetrii použít a s jakým nastavením?

Pořízení fotografií pro fotogrammetrii lze provést s využitím jakéhokoliv fotoaparátu, včetně videokamery s následovným vytažením jednotlivých framů z video záznamu. Od kvality fotografií je posléze odvislá ostrost digitálního modelu tělesa z fotografií.

Fotoaparát mobilního telefonu bývá pro většinu aplikací dostatečný. Používání kamery s následným využitím jednotlivých framů nedoporučujeme, výsledná ostrost je oproti způsobu s použitím fotografií značně snížená. Optimální je použít zrcadlovku a to s clonou na hodnotě alespoň 5-6. Ideálně navíc s nastaveným fotografováním do formátu RAW.

Jaké předměty, kdy a jakým způsobem fotit?

Fotogrammetrií lze tvořit digitální dvojče jakéhokoli fyzického 3D tělesa. Problém bývá s lesklými a průhlednými povrchy. Takový povrch je potřeba před fotografováním ošetřit - buď aplikací barvy nebo alespoň lepící pásky zabraňující odleskům. Pro začátek doporučujeme začít s něčím jednodušším - například sochou - ty disponují hrubým a texturovaným povrchem který je pro fotogrammetrii ideální.

Fotografování těles venku je vhodné provádět za stálého počasí a světla, bez ostrých stínů. Ideálně když je pod mrakem.

Při běžném fotografování mimo laboratoř nikdy nehýbejte "skenovaným" tělesem, namísto toho se s fotoaparátem pohybujte kolem daného tělesa vy. Počet fotografií volte alespoň ve středních desítkách - minimální počet si odvoďte z následujících pravidel:

  • Je nutné nafotit všechny části, které mají být digitalizované
  • Každá další fotografie musí obsahovat alespoň 60-80% překryv fotografie předcházející
  • Skenovaný objekt musí zabírat podstatnou část každého snímku
  • Software pro fotogrammetrii nemusí akceptovat všechny nahrané fotografie (např. pokud nenajde dostatek společných bodů s body na dalších snímcích). Berte to na vědomí.
  • Meshroomu nevadí snímky s různým zoomem ani snímky s pořízené s odlišným nastavením, včetně snímků z různých kamer. Nicméně aplikování tohoto není přínosem.

Máme fotografie pro použití ve formě zdrojových dat i nainstalovaný Meshroom software. Konečně se můžeme pustit do modelování...

Standardní, rozšířená nebo živá rekonstrukce - kdy kterou volit?

  • Standardní rekonstrukce - Možnost standardní rekonstrukce je vhodná v případech, kdy máte sadu fotografií bez možnosti pořízení a přidání dalších (např. se skenovaným tělesem jste od doby fotografování pohnuli, fotografování bylo provedeno na vzdáleném místě (dovolená, výlet) atd.)
  • Rozšířená rekonstrukce - Máte kompletně nafoceno a stále možnost v případě potřeby další fotografie nafotit a přidat (skenované těleso stále stojí na původním místě, s obdobným okolním prostředím). Možnosti přidávat další snímky se využije v případě, kdy určitá část vygenerovaného modelu nebude dosahovat dostatečné kvality - ať už vlivem opomenutých fotografií daného místa, případně vyřazením fotografií z důvodu nízkého počtu detekovaných shod s dalšími (okolními) snímky. Přidané fotografie se synchronizují se všemi již nahranými fotografiemi, nejde tedy jen o doplnění chybějících částí, namísto toho i o doplnění dalších zdrojů umožňující propojení doposud vzájemně nepropojených fotografií.
  • Živá rekonstrukce - Živá rekonstrukce je řízena fotografiemi vloženými do zdrojové složky určené pro modelaci 3D digitálního tělesa - těleso je modelováno průběžně s tím, jak do dané složky jednotlivé sady fotografií průběžně vkládáte. Využít tuto možnost je optimální, pokud nevíte, kolik fotografií tělesa bude celkově potřeba (začnete s 10 a postupně přidáváte), případně, pokud máte dostatek času a chcete si užít trochu fotogrammetrické zábavy.

Jak jednotlivé volby rekonstrukce nastavit a na co si dát pozor?

  1. Standardní rekonstrukce
    1. Zajistěte, aby všechny fotografie určené pro fotogrammetrii tělesa byly v 1 složce na disku počítače
    2. Označte všechny fotografie a přesuňte do okna Meshroom
    3. Uložte rozpracovaný projekt (File → Save) do cílové složky, ve které mají být data finálního 3d modelu vložena.
    4. Ve spodní liště najeďte na box "StructureFromMotion", a po kliku na něj pravým tlačítkem myši vyberte možnost "compute". Výpočet zabere pár hodin. Přerušit jej můžete kdykoli stisknutím tlačítka stop. Po dokončení výpočtu uvidíte finální model i informaci o tom, které fotografie byly spárovány (použity pro model) a které ne. Samotné soubory 3D modelu jsou ve složkách počítače Texturing a MeshFiltering.
    5. Pokud se stane, že výsledný 3d model vznikl s použitím pouze mála fotografií (většina byla vyloučena), je nutné další fotografie přidat, popřípadě zkusit upravit nastavení rekonstrukce.
  2. Rozšířená rekonstrukce

    Při rozšířené rekonstrukci doporučujeme využívat částečných (časově optimálnějších) výpočtů a kompletní výpočet (z kliku na nejnižší texturing level) provést až pro finální výpočet.

  3. Živá rekonstrukce

    Volba živé rekonstrukce vyžaduje prvotní nastavení, to se provede následujícím způsobem:

    1. V záložce View zvolte možnost "Live reconstruction"
    2. Zvolte zdrojovou složku (kam plánujete nahrávat fotografie) a minimální počet pro zpracování v každém kroku (např. 5)
    3. V Panelu Live reconstruction klikněte na tlačítko "Start".
    4. Nakopírujte do zdrojové složky první sadu fotografií (ideálně 10-20 fotografií zaměřených na obecný tvar tělesa)
    5. Zmodifikujte propojenost uzlů - je nutné zaměnit propojenost uzlu "PrepareDenseScene" s uzlem "StructureFromMotion", který se v dané liště nachází 2x (uprostřed a na konci). V live rekonstrukci je nutné propojení uzlu "PrepareDenseScene" právě s posledním uzlem "StructureFromMotion" namísto prostředním. To se provede odstraněním vazby existující a následným vytvořením vazby nové.
    6. Vypočet generování modelu spusťte volbou "compute" z uzlu "Texturing".
  • Blog
  • Meshroom - jednoduchý 3D scan objektu pomocí fotogrammetrie
Share: