## Motivation

3D scanning is often not complete after a single pass from a single sensor. Multiple scanners, e.g. from a crowd, or multiple autonomous vehicles, may contribute data simultaneously. Or, after looking at the resulting model, more passes may be made to fill holes or improve the quality.

## Description

This requires updating a 3D reconstruction with new points, integrating those into the model and considering them equally with the existing points. In order to avoid dynamic and massive storage requirements, their coordinate information required for reconstruction can be stored as single median+variance vectors, which can be updated incrementally with new points, see e.g.: http://datagenetics.com/blog/november22017/index.html). With the local information at nodes, marching cubes can be used to generate a triangulation at grid cells. Since the octree has varying depths at leaf nodes, we need to apply an adapted version from an existing algorithm, Screened Poisson (for source and paper see: http://www.cs.jhu.edu/~misha/Code/PoissonRecon/Version8.0/). See also http://infinitam.org for the source code and the paper it is based on.

## Tasks (extent depends on PR/BA/DA)

- Use a Kinect 3D scanner with the Infinitam software to scan several overlapping passes of an interior room, resulting in an octree with data in its nodes
- Hand-align scans with Meshlab or register them using ICP (http://pointclouds.org/documentation/tutorials/iterative_closest_point…) so that they correspond spatially
- Add new points into octree nodes which overlap in space
- Apply a provided surface orientation operator which uses median+variance of nodes in order to mark vertices of nodes as in- or outside
- Create a mesh from the octree on demand for visualization, using marching cubes adapted to octrees as in Screened Poisson
- Evaluate the quality of the incrementally created reconstruction with a single-pass reconstruction of a merged point cloud where all points are considered at once

## Requirements

C++ programming skills and interest in geometry processing. Experience in geometry processing and 3D data structures such as octrees, point clouds, or CUDA will speed up the development tasks.

## Environment

Platform-independent C++.

A bonus of €500/1,000 if completed to satisfaction within an agreed time-frame of 6/12 months (PR/BA or DA).