How webodm interprets camera.json parameters?

hi,

i am having trouble with my camera.json file which i am trying to upload to webodm.

My file is the following:

{
    "unknown unknown 3840 2160 brown 0 rgb": {
        "p2": 0.009, 
        "p1": -0.005, 
        "width": 3840, 
        "projection_type": "brown", 
        "height": 2160, 
        "k3": -0.001, 
        "k2": -0.007, 
        "k1": 0.071, 
        "focal_y": 3.001, 
        "focal_x": 3.001, 
        "c_y": 1.739, 
        "c_x": 3.024
    }
}

webodm gives me errors when trying to load it …
My question is, to what extent (centimeters, millimeters, etc.) you have to put the parameters of the focal_x and focal_y. And those of c_x and c_y?

I think the bug is out there and webodm doesn’t know how to interpret it well.
Or am I doing something wrong in this file?

You’re likely not using the correct units (and it’s easy to make a mistake here). If I remember correctly, focal is a ratio and is unitless https://github.com/mapillary/OpenSfM/blob/master/opensfm/exif.py#L56 (focal length divided by the sensor width). In our fork of OpenSfM (https://github.com/OpenDroneMap/OpenSfM) focal_y == focal_x always, so it’s different from the base OpenSfM implementation.

c_y and c_x are in normalized image coordinates if I’m not mistaken. https://opensfm.readthedocs.io/en/latest/geometry.html