När man fotograferar för fotogrammetri så är det inte alltid man har tillgång till GPS-information i bilderna. Det kan också vara så att det är väldigt noga att punktmolnet är exakt korrekt refererat, och då kan det vara bättre att använda kontrollmätta punkter på marken.
Om man använder en kamera utan GPS, eller plockar bildrutor ur en video, så är kontrollpunkter nödvändiga för att resultatet skall vara i korrekt skala eller till och med korrekt georefererat.
Kontrollpunkter måste inte vara i ett geografiskt koordinatsystem. Om man bara är intresserad av skalan och relativa mått så kan man skapa kontrollpunkter i ett lokalt koordinatsystem. För att testa detta så ställde jag ut lite godtyckliga saker på golvet framför vinterstudion på TV och mätte in några kontrollpunkter på tejpbitar runt om.
På tejpbitarna ritade jag ut kryss som jag mätt in med ett måttband i en rätvinklig triangel. Sidorna i triangeln mätte jag in som 3,4,5 eller översatt till mina mått 600 mm, 800 mm och 1000 mm som diagonal. Koordinaterna för punkterna angavs som 0,0 0,600 och 800,0.
Koordinaterna skall sedan placeras i ett koordinatsystem och egentligen spelar det ingen roll, men här valde jag att placera koordinaterna i UTM zon 33 där jag lade till 400’000 för x-koordinaten och 6’300’000 till y. Sedan satte jag även z-värdet till 100 för alla koordinater. Det betyder att resultatet kommer att vara 1’000 gånger större där varje millimeter kommer att presenteras i meter.
Koordinaterna skrivs in i en textfil (gcp_list.txt) där första raden definierar koordinatsystemet i form av en PROJ4 sträng, EPSG kod eller en ”UTM” sträng (WGS84 UTM zon(N|S)). Sedan kommer en lista med kontrollpunkter med namn, x, y och z för dessa, separerade med ett mellanslag. Eventuella decimaler anges med punkt och inte komma.
Sedan valde jag lite godtyckliga saker att placera ut i koordinatsystemet. I huvudsak sådant jag tror fungerar bra, men jag valde även något i glas och något i metall, som kan vara lite värre att hantera.
Sedan var det dags att fotografera. Här tänkte jag inte jättemycket, vilket brukar vara ett misstag. Man bör fundera lite så att man ”knyter ihop” bilderna i en lång serie med sammanhängande bilder. Om man bara fotar lite så är det lätt att man skapar delserier som hänger ihop för sig, men som inte har någon överensstämmelse med varandra.
Till att börja med väljer jag bara några få bilder för att testa metoden. Dessa lästes in i WebODM’s Ground Control Point Interface tillsammans med den ”gcp-fil” med kontrollpunkter som skapats.
Det finns även en ”GCP Editor Pro” som man kan hämta och installera som ett plugin till WebODM. Denna behöver man en licens för, men om man arbetar mycket med kontrollpunkter som skall placeras in i bilder kan det vara värt det. Det går precis som för WebODM i övrigt att kompilera koden själv utan licens, men det är inte tillåtet att göra detta åt någon annan, utan endast för eget bruk. Kostnaderna för ”licenserna” är dessutom högst överkomliga, speciellt om man är ett företag eller myndighet som övervägt kommersiella alternativ.
I kartan till höger visas de punkter som kommer från kontrollpunktsfilen. Jag bryr mig inte så mycket om var dessa är utritade i kartan då positionerna i det här fallet är helt påhittade. Till vänster lägger man till punkter som placeras på de kontrollpunkter som är synliga i bilderna. Sedan kopplar man punkter i bilderna till kontrollpunkter i kartan genom att klicka på dessa. I varje bild visas med symboler hur många kontrollpunkter som är knutna till varje bild.
När allt är klart så exporteras resultatet till en textfil som sparas tillsammans med bilderna. I mitt exempel så har jag bara använt tre kontrollpunkter, vilket programmet klagar lite på. För optimala resultat så rekommenderas minst fem punkter och att dessa finns med i tre bilder vardera, vilket då skall resultera i en kontrollfil med minst 15 rader.
Förhoppningsvis går allt bra, men när man experimenterar så händer det att det inte gör det. Då får man läsa felmeddelande och loggar för att försöka reda ut om man kan skruva på någon inställning eller om man måste se över vilka bilder och kontrollpunkter som använts.
Resultatet, efter lite justeringar, är över förväntan. Ett korrekt skalat punktmoln med runt 125’000 punkter.
Observera att det kan vara lite kinkigt att ”fejka” koordinater och skala på det här viset. WebODM vill ju att saker och ting skall stämma, och om man överdriver så kan det bli problem med mycket fel som resultat. Prova att stoppa vid filtreringen av körningen för att slippa envisa gdal_translate fel med ”invalid output width”.
Nu finns ju inte mer information än vad som är synligt i de bilder som inkluderats, så nästa steg blir att lägga till resten av bilderna i en ny körning. Eftersom geometrin verkar fungera som tänkt, så tänker jag inte skapa en ny kontrollfil, utan denna återanvänds tillsammans med de bilder som är kopplade till filen.
Nu blev resultatet ett 10 gånger större punktmoln på 1.2 miljoner punkter. Skalan fungerade även här och hela modellen är helt klart mätbar såväl i WebODM, som i CloudCompare (bilden ovan). Då det inte är en geografisk referens som är korrekt så tyckte jag inte att det tjänade något till att läsa in i QGIS, men det fungerar självklart det också.
Som väntat så var föremål framför allt i glas svåra att få med, medan metallobjektet är med, men lite för litet i jämförelse med modellen i stort.
Vid en snabb kontrollmätning så är det god överensstämmelse mellan punktmoln och verklighet. Min baseboll är drygt 70 mm i diameter, och beroende på vilka motstående punkter man mäter mellan i punktmolnet så ligger detta mått på runt 70 där också (meter i stället för millimeter på grund av skalan).
Slutsatser
Jag tror att det här arbetssättet kan vara användbart vid hanteringen av GCP punkter i kontrollfiler. Plocka ut ett lämpligt antal bilder som visar GCP punkterna från lite olika håll. Sträva efter minst fem GCP, även om det som här fungerar med färre så länge det är en enkel miljö. Välj minst tre bilder per GCP och om det är möjligt så kan samma bild ha med flera GCP punkter, även om det inte heller är nödvändigt.
Testa inställningar med de använda bilderna samt tillräckligt många kompletterande bilder om möjligt, men är det en komplex miljö med långt mellan punkterna så är det nog bara att köra beräkningen på hela bildserien på en gång.