Modelling skinny tall things - an observation

hi opendronemappers

in the vein of @smathermather-cm’s recent exploration of mapping all the things with ODM, I’ve been tinkering with towers and trees. These are traditionally hard topics for reconstruction (in my experience, maybe I can learn something!) - so here is a first cut attempt. The flight pattern is lots of circles at different heights, plus some with an upward looking camera (increasing the exposure offset so that detail is captured where there’s no direct light).

My ODM settings were:

--camera-lens brown --dem-resolution 2 --orthophoto-resolution 2 --mesh-octree-depth 12 --depthmap-resolution 1200

Screenshot from 2020-03-11 16-04-35

…I can see that it’s not quite there, the tower (a single pipe) is a bit wonky; and the solar panels are not flat. I’m running again now with --depthmap-resolution 2048 --opensfm-depthmap-method BRUTE_FORCE to obtain more points, and will post results.

Anyone had success with modelling similarly complex objects? what settings did you use?

2 Likes

That’s a difficult one; thin structures are hard to reconstruct precisely using the current meshing tools.

I would look at experimenting with https://www.gcc.tu-darmstadt.de/home/proj/tsr/tsr.en.jsp (code: https://github.com/SamirAroudj/TSR) as a replacement for PoissonRecon. If you can plug it into ODM you should be able to get nice results.

You could also experimento with FSSR, which is built-in into MVE.

2 Likes

Thanks @pierotofy - I think it goes a step deeper to the point cloud underlying the mesh. Here’s a set of filtered points after increasing depthmap resolution and using BRUTE_FORCE in depthmap matching:

Screenshot from 2020-03-12 10-07-10

Meshing will be hard from this however it rolls. So my next steps:

  • rerun with stricter MVE confidence filter
  • add more imagery (only 140 or so used here)
  • look at ways to get less fuzzy results from MVE…
1 Like

Agreed about the underlying point cloud. I’d be interested to see whether there if you fly closer + slower + higher overlap. (Basically as you said… more photos).

I’ve added a bunch more to a run today - I should also mention this was made with ~140 images shot from a range between 15 and 20 metres, so not bad really! By tuning ODM a little I got this:

Screenshot from 2020-03-13 10-18-19

…using --camera-lens brown --dem-resolution 2 --orthophoto-resolution 2 --mesh-octree-depth 12 --depthmap-resolution 2048 --opensfm-depthmap-method BRUTE_FORCE --texturing-nadir-weight 32 --ignore-gsd --build-overviews --rerun-all --mve-confidence 0.8 --use-3dmesh --pc-filter 2 --opensfm-depthmap-min-consistent-views 4 --min-num-features 10000 --time -v

I think the key improvements are higher resolution depthmap and stricter confidence / point outlier filtering.

60 more images are in todays run, mainly really close to the pole (about 5 metres away). All hand-shot so exposure compensation can be adjusted for upward or downward-looking images… I’ve run with the same parameters and I’ll edit this post with the result.

1 Like

Per Piero: look at tsr as well. It employs some good filtering techniques specific to aggregate probability functions for multiple views, so it theoretically does more intelligent filtering than you’re likely to get on the point cloud alone.

1 Like

Also, if TSR works as well as it appears to, it could be a game changer for the project.

2 Likes

I’ll be able to have a dig soon, bringing the big linuxbox home in a day or so :slight_smile:

2 Likes

Yay! I tried a couple of weeks ago, but was too distracted. It takes compiling a compiler so it’ll be a fun one. But, I didn’t hit any real barriers but time and attention.

2 Likes

waitwhat compiling a compiler? hmm. I guess let’s see. And yeah, time and attention…

2 Likes

What came first, the compiler or the compiler that compiled the compiler? :smile:

2 Likes

It’s definitely a compiler or the compiler problem.

1 Like

@adamsteer Could you possibly make the image set available for testing? I have had similar difficulties, especially with construction sites, which is what I map most often, and would like to try some of my more or less successful task options.

2 Likes