WebODM vs Pix4D

Pix4D_Sample WebODM Sample copy

3D models generated from WebODM and Pix4D Cloud trial. Yes, montly price for Pix4D is about 3.5 times the lifetime cost of WebODM, so I expect a difference.

WebODM model has much more detail/resolution - likely a thing that can be fixed with the desktop version of Pix4D, but also misses several vertical surfaces. Any suggestion if the vertical surface generation can be improved with settings in WebODM ?

Both models use the same dataset, one mission with 90 degree vertical shots, and one mission 90 degrees to the first (Crossing the road at close to 90 degrees) with 70 degrees gimbal tilt down from Horizontal.

2 Likes

Try increasing --depthmap-resolution.

3 Likes

Yup. With the old quality settings, I would set depth map value to 1/2 resolution of the resized images.

So for a default resize to 2400, I’d set the depth maps to no more than 1200. But if you images are, say, 5800, you could set resize to -1 (to skip resizing) and increase your depth maps to 2900 and get the maximum detail.

But, I’d start with 1200 unless you have a lot of time and big hardware. Those heavier depth maps are expensive to compute.

@piero: I’m curious what’s the equivalent for the newer settings?

2 Likes

please consider contributing to this repository https://github.com/OpenDroneMap/UAVArena

1 Like

Depthmap resolution is always still just that: size of the depthmaps. But OpenMVS does do a better job when it uses a slightly higher resolution. I’m probably going to add a new parameter (--pc-quality?) which mimics --feature-quality so that it’s a multiple of image resolution, taking away the guess work for new users too, replacing --depthmap-resolution.

4 Likes

Ah, awesome. So we could do something like 50% of resolution, 25%, 75%, 100%, etc?

I was going to feature-request something along those lines as it seems easier, and more robust against different sensors’ resolutions without the user having to take note each time.

I never resize images - and did run with the default resolution. Will give it another try with increased depthmap resolution.

1 Like

OpenDroneMap resizes images by default, so you have to set image resize to -1 in order to disable in concert with the depth map settings. Good luck!

1 Like

Also don’t forget --ignore-gsd if you really want to get the maximum resolution allowed.

2 Likes

image

Increased depthmap-resolution from 1000 to 2000 - and a few other parameters (that I don’t recall, but stuff that sounded like affecting quality) - and had an almost instant ‘errorcode other than 1’ error.

Redid with just 2000 in depthmap-resolution and job completed.
I have a bit more texture on the front facade, but still far less than a default Pix4D cloud job - where you can see the windows and have no black missing texture.

Question is: will ‘resize images’ affect final quality ?

Images btw, are 4000 x 3000 pixels.

According to the preset editor, ignore-gsd is set when I choose ‘high resolution’ as the template.
Next attempt could be to try a depthmap resolution of 4000 = the horisontal resolution of each frame - if we are indeed talking pixels

Comparison: WebODM depthmap-resolution of 2000 and 1000

image WebODM Sample copy

Look mainly at the facades parallel to the road - I did not fly a 70 degree gimbal mission parallel to the road, so only expected detail on the facade facing and opposing the road (WEST and EAST)

I can’t help but think that these changes will make a huge positive impact upon this dataset.

Will you be willing to re-run this after these changes merge?

Yes, absolutely- how do I know if there are any updates

1 Like

That Pull Request I linked to will be marked closed/merged.

After that, the snap will be updated, and if a new version is tagged (say, v2.2.2), the docker and WSL images will be generated.

I am using WebODM, not the command line version … there is no Windows/Mac like ‘Check for updates’ feature ?

If not, is this the command to run - and will it break anything if the update is not there ?

git pull
docker build -t odm211 --no-cache .
docker run -it --rm -v $(pwd)/images:/code/images -v $(pwd)/opensfm:/code/opensfm -v $(pwd)/odm_georeferencing:/code/odm_georeferencing -v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing odm221 --mesh-size 100000