What exactly happened here?

Hi! I am a complete newbie with WebODM. I created this ortho using all default settings within WebODM, from images captured using DroneDeploy with a Mavic 2 Pro. If you zoom in on the roof that doesn’t have HVAC installed yet, you can clearly see what the issue is, but I have no idea how to explain (or solve) the problem. Any ideas? I would just experiment with settings, but there are SO many, I wouldn’t know where to even begin.


1 Like

start with the simple stuff, verify you have plenty of overlap in your images. check your images after capturing to make sure none are blurry from motion of out of focus. The roof to the right has the package units on the roof that ODM can use as keypoints to tie together while the left does not. once image overlap is verified to be sufficient I would try to increase the feature quality and increase min-num-features above the default. also a double grid flight pattern may help as well.


I’m not sure how to technically verify the overlap, but I know there were no missing images or anything. I do know that I set overlap to 85/80 to be on the safe side, so I doubt it’s that… I can’t see any blur, either. I’ll try again adjusting those settings you suggested. I’ll probably need more batteries if I am going to fly double-grid, though. So, hopefully that’s not necessary. Thanks!

Look through the sequence of images, you should be able to see the same feature on 4 consecutive images. If you set it in DD, that’s unlikely to be the problem.

As uplanddog suggests, increasing feature quality would be the first thing to try, ultra is best in situations like this with repeating patterns.
Depending on how much RAM your system has, out of memory errors are possible if it is a large dataset.


I had a feeling it might be a repeat pattern issue because it didn’t show up where the image was busy. I’ll definitely bump up the feature quality. Thanks for the explanation!

1 Like

So, I did what you guys suggested and increased feature quality to ultra, and pushed min-num-features from the default by 50%. The top image is the new one with the new settings, the bottom is the old one with default settings. I can see some improvement, but there is still a lot of strangeness. Is there anything else you can think of that I could try? Boosting min-num-features a bit more maybe? Is this dataset doomed to appear this way because of the repeat patterns, requiring that I reshoot crosshatch or lower altitude?


higher flight altitude would be best since your image footprint will be bigger and more features for ODM to match with.

What altitude did you fly this at?

Can you share the dataset? Ill give it a try if so.


The altitude in the DroneDeploy plan was set to 170ft, which I understood to be ideal for a 20-30ft tall building. Here is the Drive link to the original capture. Any advice would be greatly appreciated!


1 Like

Since you already have that dataset, I’d suggest not discarding it, but adding to it with some non-nadir imagery, taken at angles to avoid the solar reflections, and from say 150 ft.
It’s going to take me an hour or more to download the images, but looking at the previews it seems that some areas of bare roof are close to saturation, which means fewer features will be found in those areas. This can lead to the problems you are seeing, made worse by relatively featureless repeating patterns.

The motor vehicle positions are going to change, so don’t image those areas, just the roof and upper wall areas at say -60 degrees, and avoid bright reflections by imaging from suitable azimuths - the sun side-on to behind the camera is should be good.

1 Like

Also, setting contrast and sharpness to ‘hard’ is not really a good idea for this sort of scene when you are extracting information from the images, ie features, as you are modifying the original, potentially introducing false detail, and reducing dynamic range. The parts of the roof that looked to be near saturation could have been pushed there by the hard contrast setting. Obtaining a good result in the final balancing of colours and brightness across the scene in the later processing is potentially made more difficult too.
Fluorescent light balance however, suggests you forgot to change it :wink:

1 Like

[County Road 400 N - 20/09/2022]

203images 11:30:05

|Options:|auto-boundary: true, feature-quality: ultra, gps-accuracy: 6, mesh-octree-depth: 12, mesh-size: 350000, min-num-features: 15000, orthophoto-resolution: 1, pc-geometric: true, pc-quality: ultra, pc-rectify: true, resize-to: -1, skip-3dmodel: true|
|Average GSD:|1.28 cm|
|Area:|22,637.22 m²|
|Reconstructed Points:|177,406,086|

The roof turned out quite well, I’ve put a jpg version of the ortho and the quality report here:


The point cloud looks pretty good.

It strikes me that that with so many HVAC units, that roof should be covered with PV panels!


I ran it this morning and came out pretty well.

using these parameters:

auto-boundary: true, dem-resolution: 2.0, feature-quality: ultra, matcher-neighbors: 24, min-num-features: 64000, optimize-disk-space: true, orthophoto-resolution: 2.0, pc-geometric: true, pc-quality: high, resize-to: -1, skip-3dmodel: true

This is amazing! Thanks for all the details. I’ll be sure to look more deeply into each of those settings. Am I seeing that it took 11 1/2 hours? Mine only took about 2 hours, that would explain the difference in quality. lol


That does look great. Thanks for doing that! I’ll try those settings in the future.

1 Like

Yes! Higher quality settings do increase the time significantly

1 Like

Maybe one last question: How much RAM do you have? Is 32Gb enough for those high settings?

I’ve got 96GB, but with 32GB you can set a large virtual memory on a SSD, and it should progress without running out of memory, but will take longer.

With WebODM you need to make the virtual memory on one drive only, with initial size=maximum size

1 Like

That’s intensive! I might have to reinstall WebODM on a different drive anyway because I allowed it to default to my system drive and I don’t want to bother with moving the virtual machine separately. Is there a commandline command during initial setup that can designate virtual memory?

I have WebODM on its own 2TB SSD, system drives tend to fill up, leaving insufficient space for large dataset tasks.

I don’t use Docker, so not sure what you need to do there.

In Windows native version it uses the virtual memory you set up in system settings

1 Like

You are good, my friend! I wasn’t aware there was a Windows native version, unless that’s the paid version I meant to avoid by using Docker. lol. I will look more into that as well. This is so much fun, I gotta say. Thanks so much for your help!