Forum

Author Topic: Underwater Photogrammetry with GoPro Hero 12  (Read 30036 times)

CheeseAndJamSandwich

  • Full Member
  • ***
  • Posts: 189
    • View Profile
    • Sketchfab Models
Re: Underwater Photogrammetry with GoPro Hero 12
« Reply #15 on: September 04, 2024, 12:39:26 AM »
Finally, dont go down the route of thinking camera calibration will fix your alignment:

But dare to dream that it might. Admittedly the ideas above are just the tip of an iceberg and there is a rabbit hole down the middle of the iceberg which may not be the most productive place to explore.

We sometimes are stuck with the dataset we've got, with no way of going back to redo it...  So having a few tricks/tools up our sleeves to salvage something out of it, is always appreciated!  8)

I would be interesting to see if something is salvageable from ugurdemirezen's video!
Let us know if you do get a chance to play with this!  ;D
My 'little' scan of our dive site, 'Manta Point'.  Mantas & divers photoshopped in for scale!
https://postimg.cc/K1sXypzs
Sketchfab Models:
https://sketchfab.com/cheeseandjamsandwich/models

ugurdemirezen

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: Underwater Photogrammetry with GoPro Hero 12
« Reply #16 on: September 04, 2024, 02:00:41 PM »
Guys I can not describe how I am grateful for your answers. Thanks a lot!

I don't have any chance of taking images from same port unfortunately...

I will try to dive to a pool to test your suggestions. Timelapse Mode, Calibration settings etc.

When I have a chance to get another go pro I will definitely try to collect data with two GoPros.

Thanks again I will let you guys know.


SimonBrown

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
    • AccuPixel Ltd - Dealer and Training Centre
Re: Underwater Photogrammetry with GoPro Hero 12
« Reply #17 on: September 04, 2024, 08:21:52 PM »
Quote
Adding more cameras makes the scanning faster.
It's very, very simple logic.
Instead of swimming 2 parallel tracks, mount 2x cameras as that same pitch.  And swim once!
This is unarguable logic.  Yes?

On the face of it, it's a plausible argument. If the intention is to create a visual asset...kind of...if the intention is to deliver something scaled and/or geo referenced, no.

Please have a look at the Vaast https://vaarst.com and Voyis https://voyis.comcamera systems. Ask yourself "Why are they building multiple rig camera systems for 3D and why are they not hanging their cameras on a 2m pole?

We work with both cameras, to a greater or lesser degree, and both are delivering exceptional scaling accuracy.  And accuracy - quantified and qualified measurement - is precisely where photogrammetry can and should be applying massive value.

True, this can be achieved with scaling constraints, GPS value and so forth but then diver tasking loading goes up and efficiency drops...but to use a synced pair of cameras removes all other constraints and efficiency - the ability to cover more distance in water AND gather quantifiable images - goes up. And it goes up more than you think...

So by all means simply create and cover more..but try asking a question of the model...such as area/how big, distance/how far or volume/how much...and suddenly being faster does not help. None of those can be answered without constraint...and having more of that is...not going to change a dam thing.

I really think we are thinking at different ends of the game here. Wanting more area is fine. Wanting quantified answers is fine too. For me, any 3D model lacking constraint cannot go beyond "Look...it's cool...' and people then move on, which is OK if thats all that is needed.

It's the end purpose that separates us. I'm still pulling data from years ago and asking new questions and getting new answers...because its there and I can. Every client and I need quantified data.

Not everyone needs that, but thats not where my head is.

Agisoft endorsed online Metashape training - see: https://accupixel.co.uk/metashape-training-courses

CheeseAndJamSandwich

  • Full Member
  • ***
  • Posts: 189
    • View Profile
    • Sketchfab Models
Re: Underwater Photogrammetry with GoPro Hero 12
« Reply #18 on: September 05, 2024, 01:18:40 PM »
Guys I can not describe how I am grateful for your answers. Thanks a lot!

I don't have any chance of taking images from same port unfortunately...
Noooooooooooooooooooooooooooooooo!!!   :'( :'( :'(
As we feared...  And as is often the way.
IF you do manage to salvage anything from the footage, using James' tips, it would be awesome if you could report back with the results!
Again, you won't be the last person to grab video instead of photos!

Quote
I will try to dive to a pool to test your suggestions. Timelapse Mode, Calibration settings etc.
You don't even need to get in the pool!
Just do some scanning with the gopro on land, in your garden, down the park.  Just put the gopro on some sort of pole, just so that the timelapse photos don't have your feet appearing in each photo!    ;D   (Or just hold the camera nearer the ground, i guess?)

Much of the testing, practice, checks can be done on land.  And this should give you wonderful textured meshes with Metashapes default settings!
THEN, when you get underwater, you have much of it locked in, with only a few items to check out.

Height, speed, interval, pitch...
Typical things you'll have to find out underwater, is the quality you're getting, and if it's up to what you want, need, can cope with.
The altitude, distance from the reef, coral, floor, slope, wall, etc. give you much of the quality.
Then consider how fast you're swimming, moving the camera, as this will cause motion blur, lowering quality.  Water visibility, depth and available light also change everything.  Try stuff, see what you get!
We kinda need 80% overlaps going forward, so the speed your swimming at, and the hight above the reef then dictates the timelapse interval... Sadly, GoPro is limited to 0.5, 1, 2, 5, 10, etc...  For me, 3 seconds would be better, as i get a 'too much' overlap, and too many photos.  So it takes longer to process...  But the quality is higher! lol.  I do employ the 'Reduce Overlap' function in Metashape to weed out the excess overlapping photos... I set it to 9, and it strips out a third of the photos!  But, i have wildly unoptimized scanning paths, so a lot of area is scanned more than once on different dives.  IF i'd known and been strict to just swim 'Mowing the Lawn' U-Patterns, then it'd be a lot faster to scan, a lot fewer images, and a lot faster to process, to get the same results... We learn as we go along!
Then when you've got your desired quality, with an altitude and interval, and good quality scans going forward, you have to work out the pitch, the distance between each swimming path, up and down, in the U-Pattern... 66% is typical for side-to-side overlap.  But if you're swimming a long distance per lap, then you'll very quickly realise that it's very, very difficult to swim in a straight line.  A compass is typically mounted on your camera, pole, etc. to help with this... Obviously 'Natural Navigation', just swimming to a waypoint off in the distance.  Without aids, most of us naturally swim in circles of various sizes!  Keeping your swims parallel is a nightmare, so you might even want to swim with more overlap, such that you reduce the possibility of the paths diverging too much, leaving a slither of low quality scan.  And obviously, like i keep saying, adding extra cameras helps a bit here!

When processing, the defaults in MS usually spit our wonderful results... For me, with my area scanning, with 'only' 12mp gopro 7s, with non ideal conditions, AND a huge dataset, i actually change the Align Photos settings from High - 40,000 - 4,000 to Low - 20,000 - 2,000... As it aligns more photos in the problematic scans, and it takes, much, much less time!  Most of my scans align perfectly with every photo aligned, but some, in dark areas, or too shallow areas with the dancing rainbow patters from the sun, these areas cause a lot of alignment problems.  Top tip:  Scan shallows (5m) on a cloudy day, for perfect results! There's A LOT i need to learn about all the setting to tweak MS, but my 'low-20k-2k' and everything else on defaults workflow has created my little maps ok so far!

Again, data management is key.  As i've described, and as Simon details in his papers...  Keep everything, each dive, scan, separated into folders, named, numbered, dated well... But be weary of path lengths... On windows, it has the 260 character limit (which you can disable in windows), and Metashape will throw-a-wobbly and error out if the paths its creating for its data structure get too long!  I found this out the hard way... I submitted a Bug Report, but don't know if it was fixed...

Texturing your mesh...
For me, producing dive site maps, it's actually much, much clearer to NOT texture the mesh, to just show the data with Metashape's 'Model - Shaded' view mode. This just uses the vertex colours calculated from the photos.  This show's the bathymetry, topography, shape of the bottom, the corals, tables, sponges, soft corals, rocks, etc. much, much clearer, than if i set to to show Textured.  Textured just looks soft, blurry, hazy.  And you can't see the shape as much.
OBVIOUSLY, if you're scanning coral heads, the reef at close range, or like me, coral restoration frames, then YES textured is awesome.  It looks like every polyp is in 3D... But when you're area scanning, dive site scanning, then you are flying higher, with more water between you and the bottom, more vis issues, etc...
Just switch between them, and you'll know which one is right for your needs.
BUT, for me, the bonus is that i don't need to do the Texture processing, which saves me a day or two of processing time!!!  ;D :o 8)


IMPORTANT!!!
Install GoPro Labs firmware on you GoPro!!!
This is one of the most useful additions you can get for your camera, and it's from the GoPro engineers!
https://gopro.github.io/labs/
All done with QR codes, and an App!  Just turn the camera on, show it the relevant QR Code, and it'll set the specific setting, or the selection of settings you
You can use the website: https://gopro.github.io/labs/control/custom/  OR obviously the App! QRControl.
This piggybacks onto the current firmware, so all the standard features are intact, but, it ADDS hundreds of extra features that we can use.
https://gopro.github.io/labs/control/settings/

Things i use all the time:
* Set the Owner Information to display at boot!!!  This is set in the firmware, not the microSD, so it'll always display...  So IF you're unfortunate, silly enough to drop your gopro, there's a much, much better chance of it finding its way back to you!!!  This SHOULD have been a core function. But labs gives it to us anyhoo... Every GoPro owner should set this!
https://gopro.github.io/labs/control/owner/
* Setting the time!  Gopros don't have a RTC Battery, so if you pull the main battery, after a few seconds, it forgets the date and time... Doh!  Nightmare when you've got an enormous amount of data being collected!  https://gopro.github.io/labs/control/precisiontime/
* Setting my 'normal' scanning settings: 2 second timelapse photos, in wide:
https://gopro.github.io/labs/control/set/?cmd=mTPp.2fW0

Today's gopros have a major limitation... They lost their 3rd button... And gained a lot of extra options... So now we cannot change much when diving, when its in its dive housing... This is a major ball-ache... BUT, Labs lets us!
Obviously, we can't take our phone underwater, but we can print off some QR Codes!!!  Print off a QR code, or a sheet of different QR codes and laminate it... Then just put your hand over the ones you don't want and show the gopro the one you do, and you can change that one setting!  This allows you to create a code that JUST sets the timelapse interval from 0.5 to 1, or to 2, or to 5, etc...  So you can try each setting underwater.

My Predive checks on the camera are completed, after loading it into the housing, with showing the gopro my phone with the QRControl app, such that it sets the time, timelapse photo, 2s, wide, WiFi off, etc. etc. etc... all in one go.  Then i know that it's all set up and ready to go when i get underwater.
And for my, with my multi-camera scans, having the time and date 'synchronised' between each camera is very important.  They're not perfectly in sync, but to the second... And i start the timelapses one by one on each camera, so they're not in sync perfectly at all... But when i merge the scan photos, after i've imported the photos changing the filename to be dd-mm-yy_hh-mm-ss_gopro#, i can see look at the thumbnails and see that both cameras start the 'scanning' pass at the same time, and i just delete the photos where it's pointing towards the sky, marking the start and stop of each scan.  IF i didn't syncronise the times, they drift a LOT from day to day... So Labs fixes that very well!

GoPro labs is just awesome!

Quote
When I have a chance to get another go pro I will definitely try to collect data with two GoPros.
When you've got your camera scanning to the quality you want, then take the side-to-side pitch, the distance between your U-Pattern swimming paths, that give you the, say, 66% side-to-side overlap you need, then absolutely mount 2 or more gopros on a pole/pipe/whatever with the pitch distance between each camera.


Musings on quality improvement gains with multi-camera setups, in this example with gopros...   (beyond it just being faster!)
* 2 cameras set at the desired side-to-side pitch WILL guarantee that you get 2x perfect 'swims' worth of data, and it'll be good quality as it would be down the centre of the swath.  3x, 4x cameras follow this, just increasing the swath width with solid data.
* MAYBE, we need to experiment, IF we altered the angle of the 2 cameras, such that they were not all 'nadir', not all pointing down, 90°/Normal to the bottom, but perhaps at 80° -80°, so slightly 'Oblique', one angled slightly looking forward, one looking slightly back, so a 20° difference between them, then perhaps this would do what the drone scanning people suggest, to eliminate/reduce banana alignments on long scans...  And it'd do it without any extra swims...  Maybe the 10° off of normal is small enough that it won't affect the data below that camera too much.  And when you're swimming the returning swath, the adjacent camera is angled the other way, so looking at the alignment of a large area, you'd notice the camera alternating on each line of cameras.  If you are scanning much closer to the reef, to get greater detail, then perhaps you might have 4x, or 6x gopros, or more!  Perhaps most will be pointing straight down, and a pair will be set oblique, looking forward and back a bit, or even side to side a bit...  Again, this might allow us to the data faster.  As time is limited underwater!  Oh, and lets remember that a typical light-aircraft doing city scans for Google Earth's 3D cities, etc, they have 5x cameras... One Nadir, and 4x Oblique, one facing forward a bit, one back, one left, one right...  Like diving, Flying time is short and expensive!


Quote
Thanks again I will let you guys know.
It'll be great to see you realise that it's actually quite easy to get some good result, with just a gopro, and with Metashape's default settings!   After that, it can get quite technical... Lots of learning to do.  But fun!
My 'little' scan of our dive site, 'Manta Point'.  Mantas & divers photoshopped in for scale!
https://postimg.cc/K1sXypzs
Sketchfab Models:
https://sketchfab.com/cheeseandjamsandwich/models

James

  • Hero Member
  • *****
  • Posts: 769
    • View Profile

scannapieco

  • Newbie
  • *
  • Posts: 16
    • View Profile
Re: Underwater Photogrammetry with GoPro Hero 12
« Reply #20 on: February 07, 2025, 06:51:44 PM »
@CheeseAndJamSandwich

What kind of width do you use to take underwater photos that you then use with Metashape?
Linear, wide or medium?
I have a Gopro 9 Black.



CheeseAndJamSandwich

  • Full Member
  • ***
  • Posts: 189
    • View Profile
    • Sketchfab Models
Re: Underwater Photogrammetry with GoPro Hero 12
« Reply #21 on: February 08, 2025, 08:48:36 AM »
Quote
@CheeseAndJamSandwich

What kind of width do you use to take underwater photos that you then use with Metashape?
Linear, wide or medium?
I have a Gopro 9 Black.

Wide.

Haven't tried linear, or narrow.  As coverage is very important when you only have 1 hour/1 tank of air to do the scanning!
Superview just distorts the image horrendously, so i don't think its usable for photogrammetry.

The uw images even on wide, are almost always a bit soft around the edges, but i've gotten good data when doing my area scanning, which is made easier, faster by putting 2 or more cameras on a bit of water pipe.  The data down the middle of the pair of cameras is really good, as it's just emulating you swimming PERFECTLY parallel tracks.  I've gone up to 4 gopros on a 3m pole/pipe.  Works very well for covering large areas very quickly.
« Last Edit: February 08, 2025, 08:52:34 AM by CheeseAndJamSandwich »
My 'little' scan of our dive site, 'Manta Point'.  Mantas & divers photoshopped in for scale!
https://postimg.cc/K1sXypzs
Sketchfab Models:
https://sketchfab.com/cheeseandjamsandwich/models

CheeseAndJamSandwich

  • Full Member
  • ***
  • Posts: 189
    • View Profile
    • Sketchfab Models
Re: Underwater Photogrammetry with GoPro Hero 12
« Reply #22 on: February 08, 2025, 08:49:38 AM »
Wide
« Last Edit: February 08, 2025, 08:51:27 AM by CheeseAndJamSandwich »
My 'little' scan of our dive site, 'Manta Point'.  Mantas & divers photoshopped in for scale!
https://postimg.cc/K1sXypzs
Sketchfab Models:
https://sketchfab.com/cheeseandjamsandwich/models