Jdi na navigaci předmětu

Skenování

3D skenování je proces digitalizace fyzického objektu do počítačového 3D modelu.

Motivace

3D skenování již dávno není novou technologií. Využívání 3D skenování zasahuje do čím dál širšího okruhu odvětví jako např. architektura, archeologie, filmové efekty, počítačové hry, strojírenství, lékařství. Ve spojení s 3D skenerem dávají tyto technologie nečekané možnosti využití jako jsou například různé čelistní, pánevní nebo nebo lebeční náhrady přímo na míru pacienta. Je možné také archivovat ohrožené památky pro budoucí generace, nebo naopak pomocí 3D skenování je možné rekonstruovat různá historická obydlí podle vykopávek. Nedílnou součástí jsou 3D skenery v oblasti geodetického měření, digitalizace budov, kontrole kvality nebo zabezpečovacích systémů.

Rozdělení 3D skenerů

Rozdělení 3D skenerů je možné mnohými způsoby. Vybrané rozdělení bere jako hlavní kritérium dotykové a bezdotykové metody skenování. Nejpoužívanější skenery jsou ve větvi reflexivních. Laserové metody mohou spadat i do metod aktivních optických využívající triangulaci nebo metodu měření doby letu. V taxonomii na obrázku jsou laserové metody vyčleněny zvlášť.

rozdeleni
Obrázek 1. Rozdělení 3D skenerů © Jan Čermák

Kontaktní

Dochází ke kontaktu skeneru a skenovaného modelu.

Destruktivní

Tento typ skenerů je poněkud atypický, protože jde v podstatě o frézku s kamerou. Na začátku je potřeba měřený objekt zalít do bloku tak, aby pomocný materiál dokonale zatekl do všech dutin. Barva tohoto materiálu musí být kontrastní oproti barvě skenovaného objektu. Takto nachystaný díl se upne na desku frézky a postupně se odfrézovávají tenké vrstvičky konstantní tloušťky. Každá nově odkrytá vrstva je vždy vyfocena a snímek uložen pro pozdější zpracování. Výsledkem je tedy sada 2D fotek s uloženou informací, v jaké výšce Z byla fotka pořízena. Software na každé fotce na přechodu barev zalitého objektu a pomocného materiálu vyextrahuje okrajovou křivku. Tato křivka je reprezentována jako body v rovině. Pokud se spojí křivky ze všech odfrézovaných hladin, pak dostaneme 3D mrak bodů.

Nedestruktivní

Nedestruktivní kontaktní skenery zahrnují všechny narozdíl od destruktivních metod objekt není při digitalizaci nijak poškozen. Kontaktní 3D skenery zkoumají povrch objektu pomocí fyzického hmotného dotyku. Zatímco objekt zůstává v klidu připevněný k podložce, polohovací rameno, na kterém je upevněna bodová nebo kuličková sonda umožňuje uživateli bodově snímat 3D data z fyzického objektu.

Micro Scribe
Obrázek 2. Micro Scribe

Bezkontaktní

Magnetické skenery

Můžeme je rozdělit na skenery s magnetickou sondou nebo skenery využívající magnetickou rezonanci. Použitím druhého zmíněného typu zařízení můžeme získávat informace o vnitřní geometrii součástí. Jedná se o nedestruktivní skenery pracující na stejném principu jako klasické magnetické rezonance požívané ve zdravotnictví. Zařízení jsou většinou mobilní a používají se např. ke kontrole potrubí, kotlů nebo jiných uzavřených nádob.

Transmisivní skenery

Zástupcem transmisivních skenerů jsou skenery využívající technologii počítačové tomografie (CT). Stejně jako u skenerů využívajících magnetickou rezonanci je možné tímto typem skeneru získávat údaje o vnitřní stavbě zkoumaného objektu. Pro přenos informace se využívá rentgenové záření. Na rozdíl od zdravotnických verzí CT se při tomto použití používá vyšší intenzita záření. Tyto zařízení jsou stále poměrně vzácné, to dokazuje i fakt, že se v České republice vyskytuje pouze jeden exemplář.

Reflexivní skenery

Do této kategorie spadají skenery akustické (např. sonar), laserové, ale především optické. Optické skenery jsou nejrozšířenější a nejpoužívanější větev 3D skenerů. Z toho vyplývá i největší množství různých technologických řešení a tím i dalšího dělení.

Optické – aktivní 3D skenery

Aktivní optické metody se dále dělí podle toho, jaká fyzikální vlastnost daného záření se použije pro výpočet prostorové souřadnice bodu

Time of flight

Nejjednodušší metoda se nazývá „time of flight“. Tato metoda je založená na měření času, za jakou dobu se vyslaný paprsek vrátí zpět na snímač po odrazu od objektu.

Triangulace

Další možností je metoda „triangulation“, která na základě známého úhlu mezi projektorem a snímačem, známé vzdálenosti projektoru od snímače a známé polohy měřeného bodu na snímači, dokáže dopočítat skutečný prostorový bod na povrchu objektu.

Triangulace může být:

  • aktivní
  • pasivní
Structured light

Další aktivní optickou metodou je „structured light“. Ta používá projekci pravidelného vzoru na objekt a na základě deformace tohoto vzoru pak počítá prostorové souřadnice bodů. Výhodou této metody je obrovská rychlost, s jakou se nasnímá daný povrch objektu. Řádově jde o miliony bodů za několik sekund.

V praxi je možné se s touto technologií setkat například u

  • Microsoft Kinect
  • Assus Xtion
  • Intel RealSense
  • Predevsim Time of flight
    • používané v průmyslu
  • Stereo aktivní a pasivní
    • aktivní například Ciclop/Horus
  • Structured light
    • Kinect
    • RealSense

CloudCompare

CloudCompare je open-source program pro editaci a úpravu mračna bodů a 3D modelů. Zároveň program umožňuje počítat zajímavé údaje o podobnostech nebo měřit různé vzdálenosti a statistky.

V oblasti 3D skenování jej použijeme především k převodu mračna bodů na triangulární mesh.

Ukázky práce s programem

Rekonstrukce modelu nohy

Potřebné modely jsou foot_scan.bin a foot_reference.stl. Model nohy je z portálu Thingiverse, CC BY-NC 3.0 Voodoo Manufacturing.

V souboru foot_scan.bin je mračno bodů vzniklé naskenováním modelu nohy. Otevřete jej v aplikaci CloudCompare.

cc foot points
Obrázek 3. Model skenu nohy jako mračno bodů v programu CloudCompare

Pro práci s modelem je potřeba jej vybrat v levé horní části programu (DB Tree). Zaškrtávací políčko slouží k zobrazení (respektive skrytí) modelu. Vybraný model je zvýrazněn.

Pro rekonstrukci nejprve použijeme celé mračno. Pro slabší počítače se toto nedoporučuje, mračno má cca milion bodů a mohlo by to trvat dlouho. Dále si ukážeme, jak zrekonstruovat model z menšího poštu bodů.

Nejprve je potřeba spočítat normály pomocí Edit → Normals → Compute. Pro naše potřeby postačí použít výchozí hodnoty.

cc foot normals menu
Obrázek 4. Edit → Normals → Compute
cc foot normals modal
Obrázek 5. Compute normals
cc foot normals progress
Obrázek 6. Normals computation
cc foot points normals
Obrázek 7. Černé normály ukazují dovnitř

Někdy se normály spočítají obráceně (jsou zobrazeny černě). V takovém případě je třeba je invertovat. Pokud bychom to neudělali, zrekonstruovaný model bude převrácen naruby. Normály se invertují pomocí Edit → Normals → Invert.

cc foot normals invert
Obrázek 8. Edit → Normals → Invert
cc foot normals inverted
Obrázek 9. Normály po převrácení již nejsou zobrazeny černě

Když máme normály, můžeme použít Plugins → Poisson Surface Reconstruction.

cc foot poisson menu
Obrázek 10. Plugins → Poisson Surface Reconstruction
cc foot poisson modal
Obrázek 11. Opět stačí ponechat výchozí hodnoty
cc foot poisson progress
Obrázek 12. Poisson Reconstruction
cc foot reconstructed
Obrázek 13. Zelená mesh, šedé mračno

Pokud je mračno příliš velké, můžeme ho před rekonstrukcí samplovat: tedy získat jen část bodů. Pro naši nohu stačí cca sto tisíc bodů.

cc foot subsample menu
Obrázek 14. Edit → Subsample
cc foot subsample modal
Obrázek 15. Lze volit různé metody, volba Random je poměrně rychlá
cc foot subsample
Obrázek 16. Body prořídly
cc foot subsampled reconstructed
Obrázek 17. Zrekonstruovaná mesh z desetiny bodů je zde dost dobrá

Někdy se stane, že výsledná mesh je příliš zrnitá. Je možné ji „podle chuti“ zjemnit pomocí Edit → Mesh → Smooth (Laplacian).

cc smooth mesh
Obrázek 18. Edit → Mesh → Smooth (Laplacian)

Do programu je možné načíst i hotovou mesh ze souboru foot_reference.stl (stačí soubor otevřít).

cc foot reference
Obrázek 19. Načtená mesh není moc dobře vidět

Pro zpřehlednění zobrazení meshe můžete použít Plugins → P. C. V. (Ambient Occlusion).

cc pcv
Obrázek 20. Plugins → P. C. V. (Ambient Occlusion)
cc foot reference pcv
Obrázek 21. Po použití P. C. V. je mesh lépe rozeznatelná očima

Když zrekonstruovanou a referenční mesh napozicujeme na stejné místo, můžeme je porovnat. Na cvičení si to ukážeme, pokud materiály čtete z domova, více se dozvíte v další ukázce.

cc foot reference distances
Obrázek 22. Rozdíly ve skenu a originálu

Model zahrady: Registrace dvou skenů

Potřebné modely jsou garden1.bin a garden2.bin, stažené přímo z projektu CloudCompare, GPL 2+.

Ukázka na cvičení víceméně dle videotutoriálu

Stručný sled kroků (předpokládá shlédnutí videa nebo účast na cvičení):

  1. Otevřít oba soubory.
  2. V Properties zvolit u obou Colors → RGB.
  3. Pomocí Translate/rotate nástroje v horní liště se pokusit skeny napozicovat blíže na sebe.
  4. (volitleně) Prohlédnout Edit → Apply transformation.
  5. Zvolit oba soubory kliknutím s klávesou Crtl v DB Tree.
  6. Z nástrojové lišty vybrat tlačítko Register enitites (v novější verzi Finely register already (roughly) aligned entities (cloud or meshes)).
  7. Error difference či EMS difference nastavit na 1e-20.
  8. Random sampling limit nastavit na 60000.
  9. OK.
  10. V Properties opět zvolit u obou Colors → RGB.
  11. Z nástrojové lišty vybrat tlačítko Compute cloud/cloud distance.
  12. Jako referenci nastavit model 1, Compute, OK.
  13. Zobrazit a vybrat pouze druhý model.
  14. V Properties zkontrolovat Colors → Scalar field, obsahuje napočítané vzdálenosti.
  15. Properties → Color Scale → Visible.
  16. SF display params: hýbat táhly, dokud výsledek nebude „nejlepší“.
cc register
Obrázek 23. Registrace 2 skenů
cc distance
Obrázek 24. Spočítání vzdálenosti dvou mračen
cc display params
Obrázek 25. Táhla u barevné škály
cc garden1
Obrázek 26. Porovnání dvou 3D skenů

Model zahrady: Segmentace, vyrovnání podle referenčních bodů

Potřebné modely jsou stejné jako výše: garden1.bin a garden2.bin.

Ukázka na cvičení víceméně dle videotutoriálu

Nejprve potřebujeme dva skeny, které si nejsou tak moc podobné jsou výše. Abychom to předvedli, vyřízneme pouze část s hlínou pomocí nástroje Segment.

cc segment tool
Obrázek 27. Nástroj Segment

Nástroj se ovládá levým tlačítkem myši, pro potvrzení se použije pravé tlačítko. Poté vyberte symbol vyříznutého polygonu a potvrďte fajfkou. Operace vytvoří dvě nová mračna ve stromu.

cc segment options
Obrázek 28. Volby nástroje Segment

Poté je třeba pomocí nástroje Align two clouds by picking (at least 4) equivalents point pairs.

Dále se dá pokračovat jako u minulé ukázky.

cc align
Obrázek 29. Align two clouds by picking (at least 4) equivalents point pairs

Užitečné odkazy

Návod na rekonstrukci modelu pomocí MeshLabu nebo CloudComparu: Horus_Guide_to_post-processing_of_the_point_cloud.pdf