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:
image

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

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

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.

2 Likes

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

Yes, I have seen over-fitting, e.g. https://www.opendronemap.org/2019/12/self-calibration-of-cameras-from-drone-flights-part-3/

Look at your Sand Key dataset:
image

1 Like

Comparison of the two over a zoo exhibit:
zoom0

1 Like

zoom1

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)

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).

1 Like

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.

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.

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:
image

2 Likes