Camera types, a small survey

With recent version fo OpenDroneMap, it’s now possible to use different camera/camera lens types. Historically, we have supported perspective cameras. Now, thanks to improvements to OpenSfM, we have access to perspective, brown, fisheye, and spherical.

What does this mean for you? Well, with fisheye you can use your wide angle lenses, but with brown also known as Brown-Conrady, we really improve the photogrammetric output. @PCdurham mentioned this possibility over a year ago and was spot on.

We’re seeing incredible fidelity in our surface models and terrain models when using this. Here’s a view of the surface model of a zoo with Brown-Conrady:

And a surface model of a forest over a set of ledges:


So, try it out! It’s as easy as switching the camera-lens type to brown and processing.

I’d love to see your models. Should this be the default camera in OpenDroneMap? I think so, but want to see how it’s working for others.


I’ve had mixed results, although I haven’t systematically documented them. Would also like to hear feedback on this.

1 Like

Yes, I have seen over-fitting, e.g.

Look at your Sand Key dataset:

1 Like

Comparison of the two over a zoo exhibit:

1 Like


1 Like

A heads-up on the usage of the brown-conrady (which I forgot), we currently approximate the model and lose some precision during dense reconstruction because the NVM format does not have support for distinct focal_x and focal_y parameters (only focal). I wonder if we could improve results further by adding a camera model with more distortion coefficients but without the distinct focal lengths.

(I added that comment in export_visualsfm)

1 Like

MVE also has no support for two focal lengths. I wonder how the results compare with --use-opensfm-dense (which does support the model in full).


Ahh, I forgot about this compromise, which was theoretical when we brought in MVE.

Interesting. I promised not to work this weekend, but maybe I can find some time on Monday to look.

1 Like

Based on feedback (from other posts as well) so far I’d agree to make brown default, unless specified otherwise by the user. I could bring the change in with the multispectral branch.

1 Like

I never shared my results from --use-opensfm-dense: it is noisier than using brown and MVE. I’ll try to dig up those results and share… . :stuck_out_tongue:

I think brown as default could be a good addition with the multispectral branch.

Just for fun, check out this result using brown:


Here’s a comparison where the only difference is “Brown” vs “Auto”.
Captured with DJI Phantom 3 4K


That looks like a fantastic improvement.

1 Like

This is with a modified brown camera where a single focal variable is used instead of two vs. perspective result (auto) on a difficult dataset.


Tennis courts lines appear much more straight with the modified brown model.

Also visibly less noise in the DSM:



Oh my, this is spectacular.

1 Like

Amazing development!

I’d love to re-run my two test datasets (first two collects I ever performed, which usually bowl even in Pix4D, though WebODM Lightning did do better) against this latest engine update…

Is this live in WebODM Lightining, LiveODM, etc. yet?

I don’t have my own instance of ODM running yet.

Camera Model:
GoPro Hero4 Black
RGB and/or Blue/NIR NDVI
Peau Productions 3.97mm

What about auto parameter now ? With 3.1,7 documentation we can read

auto = Automatic selection of best camera projection model.

But if auto = brown, we should change the doc !

I am wondering what is the best camera model for a PH4 RTK without lens correction which has a 84° FOV

Here is an exemple of a landing pad in the corner of a picture
Capture d’écran 2023-05-24 à 17.25.13

I will compare fisheye and brown

1 Like