User Tools

Site Tools


project:3d_scanning_photogrammetry

DIY 3D skeniranje (1/3) Stereofotogrametrija

Stereofotogrametrija je fleksibilna bez-kontaktna tehnika određivanja oblika i drugih prostornih informacija o promatranom objektu ili prostoru. Iz perspektive primjene u digitalizaciji 3d objekata, značajna karakteristika ove tehnike je da pomoću nje njom osim 3d modela istovremeno možemo dobiti i vrlo kvalitetnu teksturu objekta. Budući da se ovakva 3d rekonstrukcija oslanja na analizu slike, izostanak teksture ili karakterističnih uzoraka na objektu ujedno je i glavna mana ove tehnike. Objekti i prostori koji su previše jednolični ne daju dobre rezultate pri korištenju ove tehnike.

Princip rada

Stereofotogrametrija je fotogrametrijski proces pomoću kojeg se procjenjuju 3d koordinate točaka objekta koristeći mjerenja s dviju ili više fotografija uzetih iz različitih pozicija u odnosu na objekt. Na svakoj fotografiji prepoznaju se zajedničke točke. Mogu se konstruirati projekcijske linije koje idu od pozicija kamera prema točki na objektu. Sjecišta projekcijskih linija određuju 3D lokaciju točke (triangulacija).

Alati

Za izvedbu je potrebno imati foto aparat s mogućnost ručne kontrole ekspozicije, fokusa i žarišne duljine; suvremeno računalo (Windows, Linux, OSX) i odgovarajući software. Preferiramo korištenje open-source ili ‘besplatnih’ software-a što bližih tom modelu iz nekoliko razloga – sloboda korištenja, edukativni potencijal, garancija da će software biti dostupani i u budućnosti, te poticanje participacije i razvoja software-a.

SFM (Structure from Motion) rekonstrukcija

  • VisualSFM radi na Windows, Linux i Mac platformi. Pažljivo pratite upute za instalaciju. Instalacija za Windows platformu je najjednostavnija dok će za OSX i Linux potrebno kompajliranje. Ako nemate strpljenja :), tehniku možete probati koristeći trial ili freemium mode nekog od proprietary software poput: Agisoft PhotoScan, Autodesk 123D Catch (cloud based), PhotoModeler…

Editiranje point cloudova i masheva

Postupak

  1. Fotografiranje
  2. Konstrukcija point cloud-a (Fotogrametija/SfM faza)
  3. Rekonstrukcija mash-a

1 Fotografiranje

Kvaliteta fotografskog materijala (podataka) presudna je za uspješnu fotogrametrijsku 3D rekonstrukciju. Zato se treba pridržavati sljedećih preporuka u odabiru objekta, pozicije i trenutka fotografiranja.

  • fotografije u nizu trebaju biti povezane (preklapati se 60% do 80%; karakteristična točka mora biti prepoznata na barem 3 fotografije)
  • izbjegavati ekstremno kadriranje (izolirane fotografije u kojima nije vidljiv kontekst / susjedne točke)
  • izbjegavati objekte s refleksijama (staklo, metal i sl.)
  • izbjegavati objekte u pokretu
  • izbjegavati fotografiranje pri lošim svjetlosnim uvjetima ili kontra-svijetlo
  • poželjno je difuzno svijetlo (oblaci, softbox)
  • napraviti što više fotografija

Za dobre rezultate preporučuje se kvalitetan fotoaparat s mogućnošću postavljanja:

  • fiksna žarišna duljinu (zoom objektiv možemo fiksirati s trakom)
  • fokus (trebamo kontinuirano oštru sliku cijelog objekta)
  • ravnomjerna ekspozicija objekta
  • niže ISO vrijednosti kako bi se izbjegao šum (može i fotografiranje u raw-u)
  • spremanje EXIF metapodataka

Nekoliko preporuka dobrih nizova fotografija za različite tipove objekata.

Nakon prebacivanja fotografije se mogu dodatno korigirati (ekspozicija) i trebamo izbaciti one koje nisu zadovoljavajuće (očite greške, duple i neoštre fotografije i sl.).

Ako su fotografije u visokoj rezoluciji, potrebno ih je resize-ati (batch) tako da širina ili visina ne budu veće od 3200px. To je ograničenje postavki VisualSFM software-a. U slučaju resize-anja treba sačuvati izvorne EXIF metapodatke jer ih VisualSFM koristi pri analizi fotografija.

2 Konstrukcija point cloud-a

Fotogrametrijska tj. SfM (Structure from Motion) faza u kojoj računalo analizira svaku fotografiju te preko preklapajućih obilježja rekonstruira 3D prostor. VisualSFM software omogućava nam obavljanje svih radnji ovog procesa.

Neke od ovih radnji mogu trajati dugo, a budući da se radi o procesorski/memorijski zahtjevnom postupku može doći i do rušenja računala. Kako bi imali bolju predodžbu da li se nešto događa uključite Log prozor:

Win, Linux: Tools > Show Log Window
OSX: Tools > Show TaskViewer


1. Učitavanje fotografija

File > Open+ Multi images

Odaberite sve fotografije i kliknite Open


2. Pronalaženje obilježja (feature detection) i uparivanje fotografija

SfM > Pairwise Matching > Compute Missing Match

Ovaj korak objedinjuje dvije radnje. U prvoj se prepoznaju i bilježe jedinstvena obilježja svake fotografije. U drugoj, pronađena obilježja uparuju se između fotografija. Broj usporedbi koji treba izvesti eksponencijalno je ovisan o broju učitanih fotografija, pa ovaj proces može potrajati.

U slučaju da dođe do prekida (pauza ili rušenje), VisualSFM će nastaviti od točke u kojoj se zaustavio sljedeći puta kada se pokrene komanda. Isto tako mogu se dodati i nove fotografije (korak 1.) i ponovo pokrenuti proces; biti će kalkulirane samo nove fotografije.


3. Bazična rekonstrukcija (Sparse reconstruction)

SfM > Reconstruct Sparse

VisualSFM će početi rekonstruirati i prikazivati 3D formu iz uparenih obilježja / fotografija. Možemo vidjeti pozicije i rotacije kamera u prostoru, koje su zabilježile izvorne fotografije. Klikom na ikonicu 3+ možemo vidjeti još više ključnih točaka (ne samo točke koje vide 3 ili više kamera).

Kroz 3D scenu se krećete:

Pan — lijevi klik + drag
Pan / Rotate — desni klik + drag
Zoom — kotačić miša

Kako bi dobili bolju predodžbu o objektu i sceni možete:

Povećati veličine točaka — Alt + kotačić miša
Povećati veličine fotografija — Ctrl + kotačić miša

Pogrešno registrirane kamere ili one koje daju sumnjive rezultate i tako utječu na kvalitetu rezultata možete izbrisati. Kako bi brisanje radilo mora biti uključen: View > Show Single Model

Selektiranje kamere — lijevi klik na kameru
Selektiranje više kamera — F1 + pravokutna selekcija
Selektiranje preko točaka — F2 + pravokutna selekcija
Brisanje selektiranih kamera — Delete ili SfM > Delete Selected Camera


4. Gusta rekonstrukcija (Dense reconstruction)

SfM > Reconstruct Dense ili ikonica CMVS

Spremite CMVS mapu. U njoj će se nalaziti datoteke koje ćemo koristiti u sljedećim koracima.

U ovom koraku algoritam uzima prethodno pozicionirane kamere i originalne fotografije, pa kreira puno gušću verziju point cloud-a. Ovaj proces može potrajati dugo.

Nakon što je rekonstrukcija gotova klikom na Tab (ili menu View > Dense 3D Points) prebacujemo se između prikaza rezultata Sparse i Dense rekonstrukcije.

Nakon što je rekonstrukcija gotova možemo zatvoriti program. Podaci su već spremljeni u mapi koji smo kreirali u ovom koraku. U njemu se nalazi više datoteka, a ove će nam biti važne u sljedećim koracima:

  • .nvm (N-View Match) datoteka u kojoj VisualSFM sprema podatke o rekonstrukciji. Sadrži putanje izvornih fotografija, kamere i 3D točke jednog ili više rekonstruiranih modela. Ovu datoteku otvaramo ako želimo ponovno otvoriti rekonstruiranu scenu u VisualSFM-u.
  • .out datoteka (bundler format) sadrži kalkulirane (solved) pozicije kamera i bazični (sparse) point cloud točaka na sceni koje je software koristio za određivanje pozicija kamera
  • .ply datoteka sadrži gusti (dense) point cloud. Svaka točka sadrži boju, poziciju i normalu (vektor okomit na površinu na kojoj je točka). Ovu datoteku možemo otvoriti u svim programima za baratanje point cloud-ovima i mashevima.

Napomena

Vrlo dobra karakteristika ove tehnike je da se rekonstrukcija u svakom trenutku može dorađivati. Ako su neke kamere pogrešno pozicionirane ili nam nedostaju detalji objekta koji obrađujemo, jednostavno napravimo dodatne fotografije i učitamo ih. S obzirom na to da su rezultati prethodnih analiza (SIFT i matching proces) automatski spremljeni uz svaku fotografiju (.sift i .mat datoteke), analizirati će se samo nove fotografije.


3 Rekonstrukcija mash-a

Rekonstrukciju mash-a iz point clouda radimo s Meshlab-om. FIXME

  1. učitaj File > Open Project, pa odaberi bundle.rd.our i list.txt
  2. provjeri kamere Render > Show Camera
  3. izbriši ga delete current mesh (učitavamo bundle.rd.out kako bi dobili pozicije kamera, ali trebamo zamjeniti sparse point cloud sa dense cloud-om)
  4. File > Import Mesh i učitaj dense mesh koji je lociran u folderu NVM_FOLDER/00/models/option-0000.ply
  5. učitaj sve .ply objekte
  6. flatten-aj vidljive layere
  7. očisti pogrešne točke
  8. Sanity check Cameras
  9. kreiraj mesh iz point clouda
  10. Remove all non-manifold edges
  11. Parametrize the mesh by weighted average of projectors
  12. projiciraj teksturu natrag na mash
  13. Parametrize the mesh without averaging and project
  14. finilaziranje i eksport (mesh u .obj, textura u .png)

Korisni linkovi

Teorija

Alati

Tutoriali

project/3d_scanning_photogrammetry.txt · Last modified: 2018/10/16 15:50 by dp