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.

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

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

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

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

4 Likes

That looks like a fantastic improvement.

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.

anim

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

Also visibly less noise in the DSM:

anim

3 Likes

Oh my, this is spectacular.

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