NCH es invariante a la rototraslación

Tabla de contenidos

Introducción

Hace poco empecé mi tesis sobre reconstrucción de superficies 3D. Una forma de abordarla es definir una superficie como el conjunto de nivel cero de una función , y luego encontrar alguna manera de construir esa función a partir de un conjunto de puntos . NCH es un método que permite definir dicha función a partir de una nube de puntos junto con sus normales, que indican cuál es el lado interior de la superficie.

El algoritmo NCH es sorprendentemente simple: me llevó una tarde implementarlo y verlo funcionar sin experiencia previa en 3D (usando PCL , claro). Sin embargo, tiene dos grandes limitaciones: encontrar es , y evaluar en cualquier punto es ; esto lo convierte en un algoritmo muy costoso, dado que la mayoría de las superficies tienen varios miles de puntos.

Si leés el artículo, quedará claro que es tan simple que no hay una forma obvia de reducir la cantidad de cómputo que requiere sin perder las buenas propiedades teóricas que posee. El objetivo de mi tesis es bastante indefinido por ahora, pero girará en torno a la simplificación: encontrar maneras de reducir la cantidad de puntos que hay que pasarle al algoritmo, para que sea viable ejecutarlo sobre nubes de puntos más grandes.

Sea lo que sea que termine haciendo, sin duda usaré este blog como archivo de demostraciones y de todo lo interesante que vaya aprendiendo en el camino, con la esperanza de que cuando llegue el día de sentarme a escribir la tesis, al menos tenga algo ya redactado, o al menos una imagen más clara del panorama.

Lo que sigue es la primera demostración que hice, y viene a cubrir un vacío que el artículo no aborda: demostrar que el algoritmo es insensible a la rotación y la traslación de los puntos que recibe.

Definiciones

Sea un conjunto finito de puntos con vectores de orientación unitarios asociados . Sea

la función de distancia con signo de NCH (aquella cuyo conjunto de nivel 0 es la superficie que queremos encontrar), con

las funciones base correspondientes a cada punto, con el parámetro definido como:

donde

Invarianza a la rotación

Sea y con una matriz ortogonal, y definida como antes. Entonces, si observamos la estimación :

Además, si miramos el conjunto :

Lo que implica que . Finalmente, :

Así, cuando evaluamos en un punto rotado , obtenemos la garantía de que:

Invarianza a la traslación

La estrategia de demostración aquí es muy similar al caso anterior; la diferencia es que ahora los puntos cambian a y . En este caso, porque la constante se cancela; esto implica trivialmente que y . Finalmente, la nueva garantía que vamos a obtener es que:

Se deriva de que se cancela en la suma, y por último:

¿Por qué funciona esto?

Imaginemos , es decir, que está en el conjunto de nivel cero de o, en términos prácticos, que es un punto que pertenece al borde de la superficie reconstruida. En el caso de la rotación, esto implica que

Por lo tanto, el punto rotado formará parte de la superficie. En el caso de una traslación, tenemos que

Lo que implica que el punto desplazado pertenece a la superficie. Esto, por supuesto, funciona en ambos sentidos, gracias a las igualdades que establecimos anteriormente.