Jag kunde inte hålla mig, så jag gjorde några tester till. Den här gången provade jag betydligt flera bilder, men även att använda en GoPro kamera och filma i 4k.
Jag begav mig till det gamla I12 området och valde en plats att prova på. Jag började med att cirkla runt ett litet område på marken och tog 94 bilder från olika riktningar och avstånd.
Alltsammans kördes sedan genom mitt skript med mve/mvs och resultatet blev både bättre och sämre än förväntat. Jag fick fortfarande inte med så mycket mark som jag önskat, men desto mera annat. Punktmolnet består av 40’000’000 punkter!
Jag måste även trycka på att jag inte gjort några som helst efterbearbetningar av punktmolnen. De visas i bilderna exakt som de levererades från uppsättningen mve-kommandon.
På sina ställen är resultatet makalöst detaljerat, medan det helt saknas punkter på andra.
Det kan vara det här som tydliggör bristerna med fotogrammetri. Det är billigt, men ytor med små kontraster eller väldigt blanka ytor ger väldigt dåligt resultat. I det här fallet så kan det vara så att marken från lite avstånd har för dålig struktur för att det skall gå att hitta bra överensstämmelser. Områden där det finns något annat på eller i anslutning till marken avbildas desto bättre.
Detta kan exemplifieras med bilden ovan där jag faktiskt ansträngde mig att få många överlappande bilder av brunnslocket. Det var detta som var i mitten av det område jag cirklade runt. Och det är fortfarande ett punktmoln! Ingen av bilderna ovan är modeller med texturer.
Efter rensning av ytmodellen så blev det mycket enklare att hantera i meshlab.
Det blev inte helt perfekt då samma område fotograferades flera gånger. Detta skapade några platser där ytorna överlappar varandra och inte helt sammanfaller. Brunnslocket tidigare har några ytor på samma ställe men med runt en decimeter spridning i höjdled.
GoPro
Jag provade även med en GoPro som jag ställde in på ”time-lapse” med en bild per sekund i 4k upplösning. Då blir varje bild runt 8 Mp, vilket borde räcka ganska långt. GoPro har även bra skärpa och långt skärpedjup i sina bilder, tillsammans med en ordentlig vidvinkel.
Filmen bearbetas sedan med ffmpeg för att lyfta ut varje bildruta som en separat bild.
ffmpeg -i GOPRO0001.mp4 %03d.png
Detta skapar ett antal bilder i png-format numrerade från 000 och uppåt. Man kan välja andra filformat, men jag provade med png då detta format är ”förlustfritt” till skillnad från jpg.
Den här gången blev det 288 bilder, vilka täckte ett större område än det förra testet.
Resultatet blev däremot ”sådär”.
Jag vet inte om det är den stora vidvinkeln som ställer till det, samtidigt som ffmpeg rensar bort alla användbara exif data med information om brännvidder etc.
Kommandot mve.makescene -i som jag använder för att skapa scenen med bilder verkar inte heller ta hänsyn till kameran, så jag vet inte om det skulle hjälpa att ”skjuta tillbaka” exif information med exiftool. Jag har heller inte hittat något om att man kan skicka med information till mve som behandlar bilderna som vidvinkliga.
I PhotoScan Pro blir det liknande dåligt resultat, men där kan jag ange ”fish eye” som linsegenskap och då blir det skapligt bra:
För att testa teorin använde jag Kdenlive för att hjälpligt ”av-vidvinkla” filmen och skapa nya stillbilder (det finns metoder med bättre resultat exempelvis med OpenCV).
Sedan kördes samma process igen. Bilder med lägre upplösning och allmänt ”sämre” kvalité gör att det går lite fortare i en del av processen. Resultatet uteblir dock helt så jag får prova min teori på annat sätt vid ett senare tillfälle.
Står du still i mitten och snurrar runt eller går du omkring och tar bilder?
Kameran måste röra sig för att drt skall fungera.
Testa att lägga in sensordata (fysisk storlek o antal pixlar ) för kameran i ”camera_database.cc” som matchar exif taggen.
Utan detta använde sfmrecon 7/15 bilder. När jag la till data för kameran (Nexus 5X) så matchades alla 15 bilder och resultatet blev bättre…