Bad ideas are fine for testing purposes.
This does the same, I think:
Ok this is getting deep now and exposing a bunch of ignorance on my part! reading configure.sh and Dockerfiles!
- where is smvs pulled from git? ah I see, in the Superbuild cmakelists file…
- presumably exporting CCFLAGS=’-fprescison=double’ affects all builds and needs to be unset after?
- so, if I set the flag in the dockerfile and build a new image, all should be well, right?
True for all as far as I know.
lets go then!! report back soon…
ps- can’t build natively due to ubuntu 18.X…
Login to the instance as Piero described above.
building the docker image with
ENV CCFLAGS="-fprecision=double" had no effect on the problem at hand.
Will attempt patching code in the docker image now
…and dang. no change in results . The models look fine from far away, but up close… hmm. Perhaps the next step is to do some OpenSfM -> SMVS testing outside of ODM, to see if there’s just some flag tweaking to do?
It’s so strange to me that the problem goes away when the exif is stripped, but doesn’t with the removal of matcher neighbors, and precision seems to so closely explained what is happening.
You set the compiler flag to double — can you try extended (64-bits vs 53-bits or whatever)? Maybe the compiler already defaults to double so explicitly setting it doesn’t help, but extended is what’s needed.
Also, I think it could possibly be improved with this: https://www.gcc.tu-darmstadt.de/home/proj/fssr/, but I’m not sure the implications of generating a mesh. This process would collapse any noise in the dataset, hopefully for the better:
Any sampled point acquired from a real-world geometric object or scene represents a finite surface area and not just a single surface point. Samples therefore have an inherent scale, very valuable information that has been crucial for high quality reconstructions. We introduce a new method for surface reconstruction from oriented, scale-enabled sample points which operates on large, redundant and potentially noisy point sets. The approach draws upon a simple yet efficient mathematical formulation to construct an implicit function as the sum of compactly supported basis functions. The implicit function has spatially continuous “floating” scale and can be readily evaluated without any preprocessing. The final surface is extracted as the zero-level set of the implicit function. One of the key properties of the approach is that it is virtually parameter-free even for complex, mixed-scale datasets. In addition, our method is easy to implement, scalable and does not require any global operations. We evaluate our method on a wide range of datasets for which it compares favorably to popular classic and current methods.