OpenSfM
OpenSfM copied to clipboard
Inquiry: Vexcel UltraCam Eagle Mark 3
I would like to add support for the Vexcel UltraCam Eagle Mark 3 sensor to the OpenSFM sensors database, but it seems to be a bit of an interesting case as it can be in one of four focal lengths:
- 210mm
- 120mm
- 100mm
- 80mm
It looks like the Camera Model EXIF tag is used to differentiate the different platform versions:

It also seems that the Title and Subject fields hold mirror-copies of extensive metadata:

Otherwise, the sensor's specs are the same:
26,460x17,004px resolution
4.0um pixels
RGBN

Specs Sheet:
https://www.vexcel-imaging.com/brochures/UC_Eagle_M3_en.pdf
How would one go about getting this added? I'm really not sure I understand what needs to be done for such a sensor.
Looks like this sensor might require some other work:
https://community.opendronemap.org/t/dsm-are-always-not-realistic-very-high-values-output-projection-always-utm/9192/27?u=saijin_naib
https://community.opendronemap.org/t/dsm-are-always-not-realistic-very-high-values-output-projection-always-utm/9192/29?u=saijin_naib
Hi @Saijin-Naib,
There's no focal length in the EXIF data of the produced files. Here's the method for computing the focal length given sensor physical size : https://community.opendronemap.org/t/dsm-are-always-not-realistic-very-high-values-output-projection-always-utm/9192/27?u=saijin_naib
Since there's nothing in the EXIF, stuff has to end-up in the hardcoded calibration file (kudos if you manage to put it out in some json file instead of the python code) : https://github.com/mapillary/OpenSfM/blob/main/opensfm/exif.py#L522 Something like :
elif "vexcel imaging gmbh" == make:
if "ultracam eagle mark 3 f210" == model:
return {"focal": 2.0, "k1": 0.0, "k2": 0.0}
Yann
@YanNoun ,
Thanks as always!
Do you have an example of the json? I'm not familiar with it, though I have (with your help) added some overrides into the exif.py in the past, so I at least am familiar with this flow.
Hi @Saijin-Naib ,
I've refactored a bit the hardcoded camera calibration into a proper JSON file that can be used as a calibration database for OpenSfM. Once you obtain decent results with a given sensor, you just have to look for the camera section in the reconstruction.json you obtained and you think it's worth being re-used by others, and add it to the camera_calibration.json : https://github.com/mapillary/OpenSfM/commit/9268047c9763a58a4985b51a01b516c8823591db#diff-34d9ae480ee274b0f04757a8f293c760d7cc696d3da333608a92e7ce8cc976b6
Let me know if that helps,
Yann