Forum

Author Topic: Underwater strip reconstruction - fixing "bow" shape using local reference?  (Read 2060 times)

Emicimoli

  • Newbie
  • *
  • Posts: 9
    • View Profile
Hello everyone!

I am working on reconstructing a strip line of an underwater microalgal habitat in Antarctica. For logistical reasons, our payload takes pictures in a nearly straight line at a defined and constant distance from the target of 1.1 meters over a transect of around 8 meters long. We know the surface we are reconstructing is completely flat, except for microscale rugosities and small bumps.

As you can see for the enclosed images, there is clearly an issue with the reconstruction as it takes and bow shape rather than being flat. The small scale reconstruction is properly reconstructed though and except for the distortion, the model looks great. We used a Sony a6300  with Rokinon prime of 35 mm focal length.

My guess is that this is attributed to two reasons: 1) lack of side laps with other images and 2) underwater distortion due to flat port refraction at the water/glass interface.

I have a feeling that this is hopefully fixable since we have some information about our system and environment and our objective is to fix this and assign it a relative reference system in meters (we did not use any GCPS or GPS underwater). We know:

-the exact camera distance from the target surface for all camera positions.
-the exact image size on the ground, since we can calculate using the camera parameters and we know our system was going straight and smooth in one direction.
-we know that the surface is completely flat since we saw it, not bent as in the pictures.
- and we are interested only in the small scale topography variations, rather than along transects large scale slopes or so.

Can anyone advise me on how to tackle this in Agisoft? I was thinking that setting fake GPCs to force the model to be flat. But I don't know if this is feasible. Any other suggestion?  I would greatly appreciate your help!

Thanks lot for your attention

Cheers

Emiliano


Dave Martin

  • Full Member
  • ***
  • Posts: 170
    • View Profile
Emiliano,

I think you can get a long way using the approach you suggest. What I would suggest is that, if you know the bulk surface is flat, the control points you create, assign them relatively tight accuracy in Z but specify low accuracy (high error margin) in X and Y - that way it should pull the surface flat but not introduce any lateral distortion.

Dave

Mohammed

  • Full Member
  • ***
  • Posts: 192
    • View Profile
If you take photos with fisheye camera then you should choose it from calibration menu.

Best
Mohammed

ThomasVD

  • Full Member
  • ***
  • Posts: 107
    • View Profile
Sometimes for these single line recordings it helps to turn off adaptive camera model fitting on alignment. But in general best way is indeed to ensure sideways overlap.

As Dave Martin suggests you could work with tight Z accuracy, but I'd recommend setting that to the camera positions rather than control points on the surface (set Z at 1.1m for each camera, define very strict Z accuracy, then optimize cameras). 

You can try Mohammed's suggestion of setting the camera profile to "fisheye" in the camera calibration menu, but I've found that in general the underwater light refraction "cancels out" to a certain extent the fisheye effect, so I've had better luck with just keeping it on standard camera profile (at least with GoPros underwater - might differ with other fisheye lenses).
« Last Edit: January 26, 2019, 02:59:27 PM by ThomasVD »

Emicimoli

  • Newbie
  • *
  • Posts: 9
    • View Profile
Thank you all for the advice! very much appreciated.

I will definitely try all these approaches.

Thomas and Dave, regarding the fixation of Z for the camera, is there any tutorial on how to that in MetaShape? Dont have much experience with this!

Is it done from the camera calibration window?

Thanks again for your support, all the best

Emiliano