/open3d_colormap_opt_z_buffering

Shows how to use Z-buffering to get depth maps for open3D colormap optimization

Primary LanguagePython

Currently, Open3D's colormap optimization determines vertex visibility by comparing rendered depth of that vertex with the depth at that point in the input RGB-D image.

This works fine if the depth map is not very noisy. But if the depth map comes from a noisy sensor (e.g. Kinect), it creates problems. See this issue and the texturing shown below, where artificial noise of 0 mean and 50mm stdev was added to the depth maps (data from the Open3D tutorial): before optim (above: before optimization) after optim (above: after optimization)

This repository uses Open3D's rendering to render clean depth maps and passes them to the colormap optimization process to solve this issue. This is equivalent to determining vertex visibility using Z-buffering, since Open3D rendering performs Z-buffering internally.

The texturing is much better if vertex visibility is determined using Z buffering: before optim w/ zbuf (above: before optimization) after optim w/ zbuf (above: after optimization)