NCH is roto-translation invariant

Table of contents

Introduction

I have recently started my thesis on 3D surface reconstruction. One way to do so is to define a surface as the zero level set of a function , and then find some way to build this function out of a set of points . NCH is a method that allows you to define such a function starting from a point cloud along with their normals, which tell you which way is the inside of the surface.

The NCH algorithm is ashtonishingly simple: it took me an afternoon to implement and see it working with no previous experience in 3D whatsoever (using the PCL , of course!). However, it has two big shortcomings: finding is , and evaluating at any point is ; this makes it a really expensive algorithm, considering that most surfaces are well into the many thousands of points.

If you read the paper, it will be clear that it is so simple there is no obvious way to reduce the amount of computation it has to do while also preserving the good theoretical properties it has. The objective of my thesis is quite undefined for now, but it will be about simplification: finding ways to cut down the number of points that you have to feed to the algorithm, in order to make it feasible to run it on larger point clouds.

Whatever I end up doing, I will certainly be using this blog as an archive of proofs and whatever interesting things I learn throughout, with the hope that by the day I have to sit down and write my thesis I will at least have some stuff already written down, or at least a clearer picture.

What follows is the first proof I made, which fills a gap the paper does not, namely, proving that the algorithm is insensitive to rotation and translation of the points it is given.

Definitions

Let be a finite set of points with associated unit length orientation vectors . Let

Be the NCH signed distance function (the one whose 0 level set is the surface we want to find), with

The corresponding basis functions for each point, with the parameter defined as:

Where

Rotation Invariance

Let and with an orthogonal matrix, and defined as above. Then, if we look at the estimation:

Furthermore, if we look at the set :

Which implies that . Finally, :

Thus, when we evaluate on a rotated point , we get the guarantee that:

Translation Invariance

The proof strategy here is all too similar to the previous case, the difference being that now our points are changed to , and . In this case, because the constant cancels out; this trivially implies that and . Finally, the new guarantee that we are going to get is that:

Derived out of canceling out in the sum, and finally:

Why does this work?

Imagine , that is, is in the zero level set of or, in practical terms, is a point that belongs to the border of the reconstructed surface. In the rotation case, this implies that

Thus, the rotated point will be a part of the surface. In the case of a translation, we have that

Which implies that the moved point is part of the surface. This of course works both ways, because of the equalities we established above.