How can I improve the quality of 3d model?

Hello! So I’ve been following this software and technology for quite some time for making 3d models, and decided to get myself a Mavic Mini a couple of months ago. Yesterday I finally made my first missions to capture some images of some structures.

I made a single flight with parallel lines pattern with 80% front and 70% side overlap, at about 40-50mts of height from ground.


Then processed the images with no additional parameters and got these results:

The orthophotos are great, but the 3d models not so. It was somewhat windy, and it was sunny (the house photos were at sunset which I know it’s not the best time to get the images). I know some improvements I can do (flying in overcast weather, and with no wind so there’s less gps error?), but I think there’s more room for improvment.

I believe it is difficult for the software to map vertical surfaces from only nadir photos. Is this the case? If so, is it useful to add another flight with oblique photos as well? Does ODM need to “know” if photos are oblique or nadir? (Like some inclination angle parameter in the img file).

Also, if I make another flight of a portion of the area of interest with lower altitude, to get more texture/model quality of that specific area and feed ODM those images along with the main area images straight away, will that sub area in the 3d model be more detailed?




I don’t see much to be upset about with that set of results! Great job!

Perfectly nadir can be tough. A few degrees off from nadir (80-85deg) should help.

Others have done another flight plan with around 45-65 and gotten great results, especially for buildings.

No need to tell it anything about angle. Should all be in the image EXIF.

It should process the closer dataset without much input from you.

You can always tweak your processing parameters to eke out more quality, as well.

1 Like

Thank you for the reply! Yes, those results were very good for being the first ones.

I couldn’t find any info about camera angle in my picture’s EXIF, I guess that if I feed it with angled images, the algorithm will sort it out?

You mean to join the photos of both flight plans, with the new one having 45-65º vertical angle? And what about also changing the orientation of the 2nd flight plan, would that help?

I will play a bit with these and will tell the results

1 Like

Yep! It should all get sorted out in the reconstruction.

Yep, provided the scene is pretty similar and the lighting is pretty similar, it should just work.

Yes, Stephen has some guidance on this:


Thank you! Will post updates.


Okay, so, I’ve found a cool place to take photos without problems (which was harder than i thought), took images with various patterns (6, with 470 pics, maybe i could reduce that a bit and keep the quality), and made the processing. So as promised, here are the results.

They are very promising given there were no params and post processing:


Very neat! Looks like a few tweaks to your parameters will take it to the next level!


Hello again!
I am playing with some params and discovering what they do. Do you know if there’s any way to define the boundaries of the area of for processing?
So I can focus the resources and polygon limit on only the very area of interest. There are some buildings and trees around which were captured in the images but are irrelevant. I’ve googled and looked in the docs but couldn’t find anything.


No, we do not currently have a Processing Extent option. Next-best option would be masking the images to remove what you don’t want.


That’s an excellent alternative. Thank you! I will try it soon.

1 Like

More labor intensive, unfortunately, but it is supported and should help pretty significantly in the meanwhile.

We have/are tracking requests for a Processing Extent functionality. You’re in good company wanting it, haha.

So, I’ve just tried manually masking a dataset of vertical images for testing:

So then i processed it without params, but and got an error.

[ERROR] Uh oh! Processing stopped because of strange values in the reconstruction. This is often a sign that the input data has some issues or the software cannot deal with it. Have you followed best practices for data acquisition? See

Log: 2021-09-27 21:19:12,944 DEBUG: Matching DJI_0016.JPG and DJI_0021.JPG. Matcher: -

Do you know what it can be?
I’m experimenting with ODM to try to find the best conditions to get the best quality models possible for certain kind of places, i’d love to share any result I find.

I think it might be because you edited the images themselves instead of making image mask files.

Check out the documentation for a workflow:
Using Image Masks — OpenDroneMap 2.6.3 documentation

1 Like

:sweat_smile: how embarassing. Sorry for bothering when the documentation was at hand :man_facepalming:

Nope, not a problem at all!

I need to check the docs myself quite frequently :slight_smile:

Let us know how you get on!

You can alternatively edit the images too, but be sure not to crop them at all.

1 Like

I’ve been trying to find a streamlined process to make multiple mask images (haven’t found one yet, photoshop batch image processing is kinda a headache), if you know any program or tool would you let me know pls?

Anyway, I’ve tried a tiny example (3 images) to see how masks work, and the output was the same as without masks (the masked areas are present in the model and orthophoto). I feel dumb, am I doing something wrong?

Result model:

Result orthophoto:


The zip with the images just in case:

About editing the images to mask them… well, that’s what I tried previously (without cropping) but it threw that error.

1 Like

Oh, apparently masks doesn’t work in some recent versions of ODM for another person here too:

I have 2.6.1, so it must not work for this version. I should check ODM 2.0.0.

Edit: I think I will stick with this version and try to find other ways to achieve masking… I’m afraid for losing important features added in the recent updates.

1 Like

I’ve tried manually masking the actual images again like the pic I’ve shown 3 days ago, but this time with the tiny dataset of 3 pictures, and it worked. It worked both with sharp rectangles or with the manual brush.

But still, the “full” collection of said pic above throws that “strange values” error. I’ve removed the pair of images that made that error appear, 4 times. It always finds another pair of images to throw that error, one pair even didn’t have any sort of masking.

I think I’ll give up masking

1 Like

Alright, if masking is busted we need to see what is going on.

Don’t trash the masks you’ve made quite yet! But it may need to pause for a moment.