We are looking at using ODM to generate orthomosaic images from our AUV that collects sea floor stereo imagery.
I’d like to be able to provide prior pose data in the hope that it will speed things up and help with the overall accuracy. I can also supply rig calibrations including both intrinsic and extrinsic parameters.
As well as the GCP data I can generate estimates of the individual image XYZ and RPH. If possible it would be good to also be able to provide an uncertainty.
The data is from a stereo camera and has already been processed using visual SLAM using all our platform sensors to generate a path the platform took.
None of the images contain any EXIF metadata. At what stage is the opensfm reconstruction.json file created? Is it possible to generate this file and then feed it in? Or some other input to the process.
On a side note, is there any mechanism for stereo data? As we have two cameras I can use both images but there will be separate calibrations.
Thanks in advance.
an indirect approach might be to use the wonderful
exiftool to inject pose metadata into your images. I’ve used this approach in other domains in the past.
The key issue I found is understanding timing - and matching the right pose data with the right image (should be simple right? but we had wonky ntp servers and some uncertainty about offsets between when the timestamp was collected and when the shutter actually fired. oops…).
…then you can process as usual, with ODM reading exif data as normal.
Thinking a bit further, I haven’t tested ODM with negative elevation values - you might also need to set an offset to the height for processing (to make heights positive), then remove the offset once done to have proper undersea data. I guess try it and report! It’d be great to see some underwater data in ODM
I don’t have experience with combining multiple cameras in ODM, sorry - I hope someone can answer about setting up different calbrations in one processing run.
I’ve managed to insert the extra EXIF info by generating a exif_overrides.json file. We have pretty accurate timing information on when the pictures were taken, I’ve put in the capture time. Not sure if there are well defined units for it, mine is seconds since the Unix epoch to 6 decimal places.
The negative altitude is causing the odm_mesh.ply to have a skirt around it going up. As this is the fisrt time I’ve processed data with ODM/OpenSFM I’m not sure id this is normal. I’m just to try and load the orthomosaic into a GIS package.
Cool - the capture time data only needs to be used for matching your shot times with capture positions (from your camera trajectory) after that do whatever you need to with it.
I get weird edge effects on ODM meshes often - sometimes mesh cleanup is part of the process.
Happy to hear the process is working!