nmoehrle / mvs-texturing

Algorithm to texture 3D reconstructions from multi-view stereo images
Other
931 stars 328 forks source link

Fully deterministic output #124

Open nh2 opened 4 years ago

nh2 commented 4 years ago

Hi,

is it possible to make texrecon produce fully deterministic output?

I noticed (with the versions from https://github.com/nmoehrle/mvs-texturing/issues/120#issuecomment-541404178) that multiple runs on the same input produce different outputs.

Most significantly, the order of texture patches in the generated material0000_map_Kd.png texture atlases is permuted (observed especially when OpenMP based multithreading is used).

But there is also nondeterminism when when there's no multithreading (when the environment variable OMP_THREAD_LIMIT=1 is set). I've observed sometimes that the PNG files are visually identical but differ slightly in size and contents (for example, for my 4k² texture, idiff reports 31 pixels being minimally different).

  1. Where in the code might this nondeterminism originate from?
  2. Do you think this is the only place of nondeterminism in texrecon?
  3. What do you think is needed to make it fully deterministic?

Thanks a lot for this software!

nmoehrle commented 4 years ago

The algorithm is supposed to be deterministic, there was a time when the non deterministic version of mapMAP was used, but that has been changed. If it isn't that is a bug, either uninitialized memory or a race condition. Do you know where the results start to differ? Is the labeling.vec still the same?

nh2 commented 4 years ago

I forgot to comment here: PR #126 has many determinsim fixes. May not be all yet but should certainly help.