Reconstructing White Walls - Multi-View, Multi-Shot 3D Reconstruction of Textureless Surfaces



The reconstruction of the 3D geometry of a scene based on image sequences has been a very active field of research for decades. Nevertheless, there are still existing challenges in particular for homogeneous parts of objects. This paper proposes a solution to enhance the 3D reconstruction of weakly-textured surfaces by using standard cameras as well as a standard multi-view stereo pipeline. The underlying idea of the proposed method is based on improving the signal-to-noise ratio in weakly-textured regions while adaptively amplifying the local contrast to make better use of the limited numerical range in 8-bit images. Based on this premise, multiple shots per viewpoint are used to suppress statistically uncorrelated noise and enhance low-contrast texture. By only changing the image acquisition and adding a preprocessing step, a tremendous increase of up to 300% in completeness of the 3D reconstruction is achieved.



Author version: Presentation slides: Coming soon


This is the software release contains tools to reduce noise in images for the purpose of improving the results of Structure from Motion (SfM) and Multi-View Stereo (MVS) approaches. Noise is reduced by averaging multiple images acquired from the same perspective (via a tripod). In addition, non-random fixed pattern noise (FPN) can be estimated upfront and suppressed as well. Since most SfM/MVS pipelines operate on 8-bit per channel images, the resulting denoised images are packed into the 8-bit range. This is achieved by removing the low frequency components and amplifying the high frequency parts into the full numerical interval.


The code base is written in C++14. The entire framework was developed under Linux but should be easy to port to other OS ecosystems like Windows.
In addition, the following libraries/programs are needed:
  • Doxygen (to build the documentation)
  • CMake (build system)
  • ImageMagick
  • Boost
  • OpenEXR
  • Eigen
  • dcraw

How to Build the Framework

To build the documentation (you'll need Doxygen), go to the "doc/" directory and execute the "" shell script, e.g.:
$ cd doc
$ ./

You will then find the main documentation in "doc/html/index.html" with instructions on how to build and use the framework.
Building the actual code is based on CMake. See the doxygen generated documentation for more details.



If you use this code for your research, please cite:
    AUTHOR = {Ley, A. and H\"ansch, R. and Hellwich, O.},
    JOURNAL = {ISPRS Annals of Photogrammetry, Remote Sensing and Spatial Information Sciences},
    VOLUME = {III-3},
    YEAR = {2016},
    PAGES = {91--98},
    URL = {},
    DOI = {10.5194/isprs-annals-III-3-91-2016}


The implementation is distributed under GPLv3. If this license doesn't fit your needs, you can get in contact with us.