Luku 9 — SfM-taustajärjestelmät


Camera-Alignment-valitsin sijaitsee Inspectorin osiossa „Cameras & Capture" ja on avattava valikko, ei segmentoitu ohjain (taustajärjestelmien nimet ovat segmenteille liian pitkiä ja rikkoisivat kapean Inspector-sarakkeen). Kohtien määrä riippuu buildista: App Store -versio näyttää täsmälleen kaksi — Apple Photogrammetry (oletus) ja Native. COLMAP puuttuu siellä taustajärjestelmänä kokonaan ja esiintyy vain Developer-/DMG-buildeissa kolmantena kohtana (katso Q2). Natiivi kohta on nimeltään pelkästään „Native"; aiempi lisäys „(experimental)" tai „(Beta)" on poistettu — Native ei ole enää kokeilupolku, vaan laatupolku. Se on vahva maantasoisissa orbit- ja valokuvaus-skenaarioissa, mutta tällä hetkellä heikko ilma-/dronekartoituksessa (liian ohut pistepilvi); Apple Photogrammetry pysyy turvallisena oletuksena. Jos kuvaustyypiksi on valittu järjestämätön kuvasarja, sovellus kohdistaa aina Nativella, riippumatta siitä mitä valitsin näyttää — valitsimen alla oleva huomautusrivi kertoo tämän nimenomaisesti, ja valitsin pysyy käytettävissä, koska sen arvo ei ole poissa käytöstä vaan vain ohitettu. Ulkoisia SfM-tuloksia Metashapesta, COLMAP:sta tai muusta fotogrammetriaohjelmistosta voi lisäksi tuoda File-valikon kautta (Q3 COLMAP-tekstiformaatti, Q6 Workspace-tuonti) — valitsin ei vaihdu, mutta tuodut poosit korvaavat SfM-tuloksen. Tällä tuonnilla ei ole tekemistä COLMAP-taustajärjestelmäkysymyksen kanssa, ja se toimii jokaisessa buildissa.
SfM tarkoittaa Structure from Motion. Joukosta päällekkäisiä valokuvia ohjelmisto rekonstruoi jokaiselle kuvalle kameran sijainnin ja katselusuunnan yhteisessä 3D-koordinaatistossa. Tätä varten luodaan karkea 3D-pistepilvi, joka alustaa Gaussian Splatting -harjoittelun. SfM-tulos on varsinaisen harjoittelun syöte ja ratkaisee merkittävästi myöhemmän kuvanlaadun.
RadianceKit tarjoaa viisi SfM-reittiä: kaksi sovellukseen sisäänrakennettua taustajärjestelmää (Q1 Apple Photogrammetry, Q4/Q5 Native), kaksi tuontireittiä ulkoisista työkaluista (Q3 COLMAP-tekstiformaatti, Q6 binäärinen Workspace-tuonti) sekä Q2 COLMAP-binääri, joka on käytettävissä vain App Storen ulkopuolisissa Developer-buildeissa. Mikä näistä on oikea, riippuu skenaarion tyypistä (orbit kohteen ympäri, sisätila, dronelento) ja siitä, tuottaako ulkoinen ohjelmisto jo rekonstruktion.
Q1 — Apple Photogrammetry
MISSÄ
Expert View → Inspector → osio „Cameras & Capture" → Camera-Alignment-valitsin, kohta „Apple Photogrammetry". Oletusasetus jokaisessa buildissa.
TEKNINEN
Kääriköinä Applen sisäänrakennetun Photogrammetry-kehyksen, joka on alun perin kehitetty Object Capturea varten. Apple erottaa sisäisesti piirteet omalla suljetulla putkellaan (vaiheita ei ole julkisesti dokumentoitu), varmistaa ne monikuva-täsmäytyksellä ja ratkaisee Bundle-Adjustmentin Apple Siliconin Neural Enginellä + GPU:lla. Taustajärjestelmä on täysin App Store -yhteensopiva (ei ulkoista binääriä, Sandbox=true, laitteella), mutta tuottaa vain kameraposeet sekä karkean pistepilven — ei diagnostisia mittareita kuten track-pituutta tai reprojektiovirhettä. Skaalautuu Applen suosituksen mukaan muutamaan sataan kuvaan asti. Yli ~500 kuvan lineaarisilla dronelennoilla tai suurissa ulkotilaskenaarioissa on toistuvasti havaittu kaatumisia tai yksittäisten kameroiden hiljaista hylkäämistä.
Q3 — COLMAP-tekstiformaatti (Metashape / ETH3D)
MISSÄ
Valikko „File → Import COLMAP / Metashape Workspace…" (Cmd+⇧+I) TAI kansion raahaus ja pudotus, jossa sparse/0/cameras.txt.
TEKNINEN
Lukee standardoidun COLMAP-tekstivientimuodon — kolme tekstitiedostoa cameras.txt, images.txt, points3D.txt sparse/0/-alikansiossa — ja muuntaa sisäiseen SfM-tulosmalliin. Sama formaattimäärittely kuin COLMAP-binäärivienti, mutta ASCII-muodossa binäärin sijaan. Agisoft Metashape, RealityCapture, PolyCam ja ETH3D-vertailutesti tuottavat tulosteen juuri tässä muodossa. Jäsentäjä jakaa kameramallin tunnistuksen binääriparserin kanssa ja tunnistaa kaikki yksitoista COLMAP:in standardikameramallia — SIMPLE_PINHOLE:sta ja PINHOLE:sta SIMPLE_RADIAL:iin (COLMAP:in oma oletus) ja OPENCV:hen sekä fisheye-variantteihin. Kestää kommenttirivit ja tyhjät rivit hyvin. Skaalautuu testeissä ~1 400 kameraan asti (ETH3D Tunnel) ilman ongelmia.
Q4 — Native SfM (inkrementaalinen)
MISSÄ
Expert View → Inspector → osio „Cameras & Capture" → Camera-Alignment-valitsin, kohta „Native" (ilman aiempaa lisäystä „(experimental)"). Inkrementaalinen on tämän taustajärjestelmän oletustila; Nativelle ei ole erillistä mapper-valintaa. Sen alla oleva rivi „Mapper" kuuluu yksinomaan COLMAP:iin: Developer-buildeissa se näkyy näkyvänä mutta harmaana niin kauan kuin Native on valittuna, App Store -versiosta se puuttuu kokonaan. Todella natiivit rivit — „FOV Override", „High-Quality" ja „Native SfM Recipe" — eivät enää katoa muiden taustajärjestelmien alla, vaan jäävät näkyviin harmaana ja kertovat alla olevalla rivillä, mitä pitää muuttaa, jotta ne aukeavat uudelleen. Inkrementaalisen ja globaalin menetelmän välillä et voi vaihtaa itse: Inkrementaalinen on kiinteästi oletusasetuksena, ja globaaliin menetelmään sovellus vaihtaa vain itsestään (katso Q5).
TEKNINEN
Oma GPU-kiihdytetty toteutus koko SfM-putkesta: FAST+BRIEF-piirteet TAI SuperPoint+LightGlue CoreML:n kautta (kytketään päälle „High-Quality"-kytkimellä; järjestämättömillä kuvasarjoilla joka tapauksessa aktiivinen), jonka jälkeen Hamming-KNN-täsmäytys, RANSAC-fundamentaalimatriisi, track-rakentaminen, alkuparin valinta, kaksinäkymä-bootstrap (F→E plus DLT), ahne inkrementaalinen mapper PnP-rekisteröinnillä ja monikuvatriangulaatiolla ja lopullinen Bundle-Adjustment Schur-redusoidun Levenberg-Marquardtin kautta Huber-häviöllä ja analyyttisillä Jacobianeilla Choleskyn ratkaisun kautta. Täysin App Store -yhteensopiva: ei ulkoista binääriä, Sandbox=true. Sisäänrakennetulla collapse-tunnistimella: se luokittelee tuloksen degeneroituneeksi, jos alle 60 % syötekehyksistä rekisteröityi, jos points-per-camera-suhde jää alle 13:n tai jos pistepilvi on lähes litteä. Tämän seurauksena ei heti vaihdeta menetelmää — sovellus toistaa ensin inkrementaalisen ajon (se ottaa käyttöön ensimmäisen poikkeuksettoman tuloksen, muuten yritysten parhaan) ja vasta sitten siirtyy globaaliin mapperiin (Q5), jos paraskin yritys jää degeneroituneeksi. Empiirisesti siisti orbit-/kääntöpöytäskenaarioissa; yleisemmillä liikkeillä (dronelento, monimutkaisen geometrian sisätilat) onnistumisprosentti on alhaisempi — tunnistin kuitenkin nappaa nämä tapaukset. Skaalautuu luotettavasti ~200 kameraan asti, korkeammalla huomattavasti pidemmällä ajoajalla.
Q5 — Native SfM (globaali)
MISSÄ
Käynnistyy automaattisesti, kun inkrementaalinen mapper (Q4) laukaisee collapse-tunnistimen (alle 60 % syötekehyksistä rekisteröity, points-per-camera-suhde alle 13 tai lähes litteä pistepilvi) — ja vasta sen jälkeen, kun inkrementaalinen ajo on toistettu ja paraskin yritys jäi degeneroituneeksi. Käsin sitä ei voi käynnistää: Inspectorissa ei ole tälle valitsinta eikä muutakaan kytkintä — sovellus päättää itse, milloin se vaihtaa.
TEKNINEN
Natiivin putken globaali versio. Ensin piirre-erotus + täsmäytys kuten Q4:ssä, sitten suhteellisen posen arviointi kaikille varmistetuille pareille, sen jälkeen rotaation keskiarvoistus (synkronoi kaikkien kameroiden rotaatiot maailma-koordinaatistossa) ja translaation keskiarvoistus (LSQR-pohjainen matriisiton harva formulaatio, joka välttää kokonaislukuylivuodon suurilla kameramäärillä). Skaalautuu periaatteessa ~5 000 kameraan, käytännössä laatu heikkenee selvästi muutaman sadan kameran yläpuolella. Käsitellään „varasuunnitelma-tasona": otetaan käyttöön, kun inkrementaalinen mapper degeneroituu toistonkin jälkeen, eikä sitä itseään enää alisteta collapse-tunnistimelle — jos sen tulos jää ohueksi, esiin tulee sen sijaan putken yleinen laatuvaroitus.
Q6 — Metashape / COLMAP-tekstiWorkspace-tuonti
MISSÄ
File-valikko → „Import COLMAP / Metashape Workspace…" (Cmd+⇧+I). Kansion raahaus ja pudotus, jossa sparse/0/cameras.{bin,txt} ja images/.
TEKNINEN
Tunnistaa automaattisesti, vastaako raahauksella tai Open-paneelilla valittu kansio jotain kolmesta COLMAP-Workspace-asettelusta (sparse/0/, sparse/ tai juuri) ja onko rekonstruktio binäärinen (cameras.bin) vai teksti (cameras.txt). Binäärinen polku käyttää COLMAP-binääriparseria, tekstipolku ETH3D-lataajaa — molemmat tuottavat saman SfM-tulosmallin, ja putken loppuosa (kuvien tuonti, MCMC-harjoittelun käynnistys) on agnostinen lähteen suhteen. Kuvat avataan sovelluksen sandbox-kirjanmerkkijärjestelmän kautta security-scoped-tilassa, jolloin tuonti toimii myös App Store -versiossa. Suunniteltu erityisesti tapaukseen „Metashape-vienti ilman rekonstruktion uudelleenlaskentaa". File-valikon kohdassa mainittu tunnistus varoittaa sovelluslokissa, jos valittu kansio ei ole tunnistettava Workspace.
Q7 — Native-reseptit (Standard / Professional / E3 High-Accuracy)
MISSÄ
Expert View → Inspector → osio „Cameras & Capture" → rivi „Native SfM Recipe". Rivi on käytettävissä vain, kun Camera Alignmentiksi on valittu „Native" ja kuvaustyypiksi on asetettu järjestämätön kuvasarja — muuten se on harmaana ja kertoo alla, mitä pitää muuttaa (saatavuussäännöt löytyvät luvusta 2).
TEKNINEN
Kolme samaisen natiivin taustajärjestelmän tasoa. Ne eivät muuta algoritmia, vaan sitä, kuinka perusteellisesti se toimii:
Standard — perusresepti ilman lisävaiheita.
Professional — lisää kaksi asiaa: tunnistetut AprilTag-merkit otetaan jäykkinä kappaleina mukaan mappingiin ja Bundle-Adjustmentiin, ja valmiit poosit trianguloidaan tiheästi uudelleen (tiheämpi alkupistepilvi). Jos kuvauksessa ei ole merkkejä, tunnistin ei löydä mitään ja vain tiheä uudelleentriangulointi jää vaikuttavaksi.
E3 High-Accuracy — rakentuu Professionalin päälle ja kytkee lisäksi päälle HQ-esikäsittelyn (3×3-SuperPoint-laatoitus, LightGlue 4096 avainpisteellä, covisibility-parit) sekä yhteisen polttovälin hienosäädön kaikkien kameroiden yli. Tämä tuottaa terävimmät kameraposeet ja pisimmän täsmäytysajan.
Mikä backend milloinkin?
| Skenaario | Suositeltu backend |
|---|---|
| Ensimmäinen tulos, ilman sen kummempaa pohdintaa | Q1 Apple Photogrammetry (oletusasetus) |
| Objektiskannaus, 50–200 kuvaa | Q1 Apple Photogrammetry |
| Maksimaalinen laatu samasta kohtauksesta | Preset „Maximum Quality (Native)" — Q4 Native + Q7-resepti E3 |
| Kuvaus painetuilla AprilTag-markkereilla | Q4 Native + Q7-resepti Professional |
| Suuri ulkotila / drone / >500 kuvaa | Q6 Workspace-tuonti (laske Metashapessa tai COLMAPissa, tuo sitten sisään) |
| Metashape/RealityCapture-vienti on jo tehty | Q6 Tuonti (ei SfM:ää tarvita) |
| ETH3D / akateeminen COLMAP-tekstisetti | Q3 COLMAP-teksti-tuonti |
| Q4 kaatuu | Q5 Native global (vaihtaa automaattisesti) |
Pikavertailu
| Backend | App Store | Sandbox | Ulkoinen binaari | Paras käyttötarkoitus | Maks. ~kamerat |
|---|---|---|---|---|---|
| Q1 Apple PG | ✅ | ✅ | — | Orbit-objekti | ~300 |
| Q2 COLMAP Binary | ❌ (vain developer-koontiversio) | — | colmap/glomap | Ulkotilat, suuret | ~5 000 |
| Q3 COLMAP-Text-Import | ✅ | ✅ | — | Bench-rigit | ~1 500 |
| Q4 Native incremental | ✅ | ✅ | — | Orbit-objekti | ~200 |
| Q5 Native global | ✅ | ✅ | — | Q4-varajärjestelmä | ~5 000 |
| Q6 Workspace-tuonti | ✅ | ✅ | — | Metashape-uudelleenkäyttö | lähdettä kohden |