Fotogrammetri uppföljning

Då följer jag upp ett tidigare inlägg om fotogrammetri där jag testade olika Open Source alternativ för att skapa punktmoln och 3D modeller från fotografier tagna med en handhållen kamera.

Finns det möjlighet att använda metoden och få fram mätbara modeller och punktmoln som kan användas med ett skapligt resultat? Det tänkte jag titta närmare på.

Jag kommer att använda MVE/MVS för detta och jag provar ett enkelt skript i ”bash” för att mata in värden i förväg och sedan automatiskt köra alla terminalkommandon i ett svep.

#!/bin/bash
echo 'Ange filer och kataloger med relativa sökvägar'
echo
echo 'Sökväg till katalog med bilder'
read imgpath
echo 
echo 'Sökväg till scenens arbetskatalog'
read scenepath
echo
echo 'Namnge punktmolnet (med sökväg), avsluta med .ply'
read pointfile
echo
echo 'Namnge ytmodellen (med sökväg), avsluta med .ply'
read surfacefile
echo
echo 'Namnge den städade ytmodellen (med sökväg, avsluta med .ply'
read cleansurfacefile
echo
echo 'Namnge texturen (med sökväg), endast namn'
read texturefile
echo
echo 'Nu kör vi igång!'
echo
mve.makescene -i $imgpath $scenepath
mve.sfmrecon $scenepath
mve.dmrecon $scenepath
mve.scene2pset -F2 $scenepath $pointfile
mve.fssrecon $pointfile $surfacefile
mve.meshclean -t10 $surfacefile $cleansurfacefile
mvs-texturing-mardy.texrecon scene::undistorted $cleansurfacefile $texturefile
echo
echo 'Allt är klart. Kontrollera resultatet...'

I början på skriptet matas relativa sökvägar in till foton och där jag vill att resultatet skall lagras.

Jag har varit ute och hittat en vägkorsning i Eksjös utkant där man håller på med ett vägarbete. Här tänkte jag kontrollera om jag med metoden kan få tillräckligt mycket data för att göra tänkbara mätningar i datorn i efterhand.

Förutom 64 bilder tagna runt korsningen, inåt och över mitten av korsningen, så har jag även mätt några objekt så att jag kan skapa en referens för min skala.

Skärmbild från 2017-07-01 15-48-18.png

På plats var jag inte säker på vilka objekt som skulle räcka att mäta, så jag valde några små (bilden ovan) och några större (avstånd mellan två asfaltskanter).

Bilderna skall förhoppningsvis ha tillräckligt överlapp, men jag hat inte överdrivet. Det är kanske ett par tre meter mellan varje kameraposition, och jag har fokuserat fångandet av vägen och inte brytt mig om att lyfta kameran högre än att hus och träd på andra sidan kommit med.

Bilderna är tagna med manuell exponering och bländare för att säkerställa att bilderna är så lika som möjligt. Jag försökte även få till så liten bländare som möjligt för att ha så stort skärpedjup som möjligt.

Medan skriptet rullar på så är det inte mycket att göra mer än att vänta. Kikar man i terminalfönstret så ser man processen pågå och i katalogen skapas kataloger och filer successivt.

Skärmbild från 2017-07-01 15-55-56

Meshlab

När processen är klar så kan man öppna punktmoln eller texturerad modell i Meshlab.

Här använder jag mätverktyget för att mäta hur många ”enheter” något av mina mätta objekt är. Detta används som kvot tillsammans med det uppmätta värdet för att räkna ut en skala.

Skärmbild från 2017-07-01 16-33-50.png

Skalan sätts sedan i ett filter som återfinns under ”Filters”, ”Normals, Curvatures and Orientation”, följt av ”Transform: Scale, Normalize”.

Sedan kan jag mäta allt som går att se i modellen, eller punktmolnet. Det blev inte så heltäckande som jag önskat (kanske får ta fler överlappande bilder), men asfaltsarbetet som jag fotograferade lite extra framträdde ganska tydligt i punktmolnet.

Skärmbild från 2017-07-01 16-58-54.png

Här kan jag inte bara konstatera att vägarbetet är drygt 20 meter långt och 3,60 brett, utan även att huset på andra sidan gatan är 8,5 x 14,5 meter stort och 9 meter högt.

Nu har jag använt Meshlab 2016.12 (nya versionsnummer) och där finns även en funktion för att ”referera” modellen mot verkliga koordinater (hoppla).

Detta skulle betyda att jag kan mäta in referenspunkter med GNSS och därmed få fram ett georefererat punktmoln, som sedan kan bearbetas vidare i GIS sammanhang…

Jag börjar se möjligheterna till ännu ett arbetsflöde helt baserat på Open Source. Men det får bli en annan gång.

Som referens så körde jag bilderna även genom Agisoft PhotoScan Pro (demo) vilket som väntat gick lite snabbare. Med mitt skript så behöver jag dock inte köra igång nästa steg på samma sätt som i PhotoScan, men det är i sammanhanget en småsak. Resultatet från PhotoScan är något bättre och lite ”renare”. Sedan blir det mycket enklare att jobba i ett program med allt, så det jag beskriver i artikeln är inte alls jämförbart om man bara fokuserar på resultat.

Skärmbild från 2017-07-01 17-35-34.png

Annonser

Taggar:,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: