El procesamiento geométrico es un área de investigación que utiliza conceptos de matemáticas aplicadas , informática e ingeniería para diseñar algoritmos eficientes para la adquisición, reconstrucción , análisis , manipulación, simulación y transmisión de modelos 3D complejos. Como su nombre lo indica, muchos de los conceptos, estructuras de datos y algoritmos son directamente análogos al procesamiento de señales y al procesamiento de imágenes . Por ejemplo, donde el suavizado de imágenes podría convolucionar una señal de intensidad con un núcleo de desenfoque formado utilizando el operador de Laplace , el suavizado geométrico podría lograrse convolucionando una geometría de superficie con un núcleo de desenfoque formado utilizando el operador de Laplace-Beltrami .
Las aplicaciones de los algoritmos de procesamiento de geometría ya cubren una amplia gama de áreas, desde multimedia , entretenimiento y diseño asistido por computadora clásico , hasta computación biomédica, ingeniería inversa y computación científica . [1]
El procesamiento de geometría es un tema de investigación común en SIGGRAPH , la principal conferencia académica sobre gráficos por computadora , y el tema principal del Simposio anual sobre procesamiento de geometría .
El procesamiento de geometría implica trabajar con una forma , generalmente en 2D o 3D, aunque la forma puede vivir en un espacio de dimensiones arbitrarias. El procesamiento de una forma implica tres etapas, lo que se conoce como su ciclo de vida. En su "nacimiento", una forma puede instanciarse a través de uno de tres métodos: un modelo , una representación matemática o un escaneo . Después de que nace una forma, se puede analizar y editar repetidamente en un ciclo. Esto generalmente implica adquirir diferentes medidas, como las distancias entre los puntos de la forma, la suavidad de la forma o su característica de Euler . La edición puede implicar eliminar el ruido, deformar o realizar transformaciones rígidas . En la etapa final de la "vida" de la forma, se consume. Esto puede significar que un espectador la consume como un activo renderizado en un juego o una película, por ejemplo. El final de la vida de una forma también puede definirse por una decisión sobre la forma, como si satisface o no algunos criterios. O incluso se puede fabricar en el mundo real, mediante un método como la impresión 3D o el corte láser.
Al igual que cualquier otra forma, las formas utilizadas en el procesamiento de geometría tienen propiedades relacionadas con su geometría y topología . La geometría de una forma se refiere a la posición de los puntos de la forma en el espacio , las tangentes , las normales y la curvatura . También incluye la dimensión en la que se encuentra la forma (p. ej., o ). La topología de una forma es una colección de propiedades que no cambian incluso después de que se hayan aplicado transformaciones suaves a la forma. Se refiere a dimensiones como el número de agujeros y límites , así como a la orientabilidad de la forma. Un ejemplo de una forma no orientable es la banda de Möbius .
En las computadoras, todo debe ser discretizado. Las formas en el procesamiento de geometría generalmente se representan como mallas de triángulos , que pueden verse como un gráfico . Cada nodo del gráfico es un vértice (generalmente en ), que tiene una posición. Esto codifica la geometría de la forma. Los bordes dirigidos conectan estos vértices en triángulos, que por la regla de la mano derecha, luego tienen una dirección llamada normal. Cada triángulo forma una cara de la malla. Estos son de naturaleza combinatoria y codifican la topología de la forma. Además de los triángulos, también se puede usar una clase más general de mallas poligonales para representar una forma. Las representaciones más avanzadas, como las mallas progresivas, codifican una representación gruesa junto con una secuencia de transformaciones, que producen una representación fina o de alta resolución de la forma una vez aplicada. Estas mallas son útiles en una variedad de aplicaciones, incluidas las geomorfosis, la transmisión progresiva, la compresión de mallas y el refinamiento selectivo. [2]
Una propiedad particularmente importante de una forma 3D es su característica de Euler , que alternativamente puede definirse en términos de su género . La fórmula para esto en el sentido continuo es , donde es el número de componentes conectados, es el número de agujeros (como en los agujeros de rosquilla, ver toro ), y es el número de componentes conectados del límite de la superficie. Un ejemplo concreto de esto es una malla de un par de pantalones . Hay un componente conectado, 0 agujeros y 3 componentes conectados del límite (la cintura y dos agujeros de las piernas). Entonces, en este caso, la característica de Euler es -1. Para traer esto al mundo discreto, la característica de Euler de una malla se calcula en términos de sus vértices, aristas y caras. .
Dependiendo de cómo se inicializa o "da a luz" una forma, la forma podría existir solo como una nebulosa de puntos muestreados que representan su superficie en el espacio. Para transformar los puntos de la superficie en una malla, se puede emplear la estrategia de reconstrucción de Poisson [3] . Este método establece que la función indicadora , una función que determina qué puntos en el espacio pertenecen a la superficie de la forma, en realidad se puede calcular a partir de los puntos muestreados. El concepto clave es que el gradiente de la función indicadora es 0 en todas partes, excepto en los puntos muestreados, donde es igual a la normal de la superficie interna. Más formalmente, supongamos que la colección de puntos muestreados de la superficie se denota por , cada punto en el espacio por , y la normal correspondiente en ese punto por . Entonces el gradiente de la función indicadora se define como:
La tarea de reconstrucción se convierte entonces en un problema variacional . Para encontrar la función indicadora de la superficie, debemos encontrar una función tal que se minimice, donde es el campo vectorial definido por las muestras. Como problema variacional, se puede ver al minimizador como una solución de la ecuación de Poisson . [3] Después de obtener una buena aproximación para y un valor para el cual los puntos con se encuentran en la superficie a reconstruir, se puede utilizar el algoritmo de cubos en marcha para construir una malla de triángulos a partir de la función , que luego se puede aplicar en aplicaciones de gráficos por computadora posteriores.
Un problema común que se encuentra en el procesamiento de geometría es cómo fusionar múltiples vistas de un único objeto capturado desde diferentes ángulos o posiciones. Este problema se conoce como registro . En el registro, deseamos encontrar una transformación rígida óptima que alinee superficie con superficie . Más formalmente, si es la proyección de un punto x desde superficie sobre superficie , queremos encontrar la matriz de rotación óptima y el vector de traslación que minimicen la siguiente función objetivo:
Si bien las rotaciones no son lineales en general, las rotaciones pequeñas se pueden linealizar como matrices antisimétricas. Además, la función de distancia no es lineal, pero es susceptible de aproximaciones lineales si el cambio en es pequeño. Por lo tanto, se emplea una solución iterativa como el Punto más cercano iterativo (ICP) para resolver pequeñas transformaciones de forma iterativa, en lugar de resolver la transformación potencialmente grande de una sola vez. En ICP, se eligen n puntos de muestra aleatorios de y se proyectan sobre . Para muestrear puntos de manera uniforme al azar en toda la superficie de la malla de triángulos, el muestreo aleatorio se divide en dos etapas: muestreo uniforme de puntos dentro de un triángulo; y muestreo no uniforme de triángulos, de modo que la probabilidad asociada de cada triángulo sea proporcional a su área de superficie. [4] A partir de entonces, se calcula la transformación óptima en función de la diferencia entre cada una y su proyección. En la siguiente iteración, las proyecciones se calculan en función del resultado de aplicar la transformación anterior en las muestras. El proceso se repite hasta la convergencia.
Cuando se definen o escanean formas, puede haber ruido acompañante, ya sea en una señal que actúa sobre la superficie o en la geometría de la superficie real. La reducción de ruido en la primera se conoce como eliminación de ruido de datos , mientras que la reducción de ruido en la segunda se conoce como suavizado de superficies . La tarea de suavizado geométrico es análoga a la reducción de ruido de la señal y, en consecuencia, emplea enfoques similares.
El Lagrangiano pertinente a minimizar se deriva registrando la conformidad con la señal inicial y la suavidad de la señal resultante, que se aproxima por la magnitud del gradiente con un peso :
.
Tomando una variación se emite la condición necesaria
.
Al discretizar esto en elementos constantes por partes con nuestra señal en los vértices obtenemos
donde nuestra elección de se elige para el laplaciano cotangente y el término es mapear la imagen del laplaciano de áreas a puntos. Debido a que la variación es libre, esto da como resultado un problema lineal autoadjunto para resolver con un parámetro : Cuando se trabaja con mallas de triángulos, una forma de determinar los valores de la matriz laplaciana es mediante el análisis de la geometría de los triángulos conectados en la malla.
Donde y son los ángulos opuestos al borde [5] La matriz de masa M como operador calcula la integral local del valor de una función y a menudo se establece para una malla con m triángulos de la siguiente manera:
Ocasionalmente, necesitamos aplanar una superficie 3D sobre un plano plano. Este proceso se conoce como parametrización . El objetivo es encontrar las coordenadas u y v sobre las que podemos mapear la superficie de manera que se minimicen las distorsiones. De esta manera, la parametrización puede verse como un problema de optimización. Una de las principales aplicaciones de la parametrización de malla es el mapeo de texturas .
Una forma de medir la distorsión acumulada en el proceso de mapeo es medir cuánto difiere la longitud de los bordes en el mapeo 2D de sus longitudes en la superficie 3D original. En términos más formales, la función objetivo se puede escribir como:
Donde es el conjunto de aristas de la malla y es el conjunto de vértices. Sin embargo, optimizar esta función objetivo daría como resultado una solución que asigna todos los vértices a un único vértice en las coordenadas uv . Tomando prestada una idea de la teoría de grafos, aplicamos el Mapeo de Tutte y restringimos los vértices límite de la malla a un círculo unitario u otro polígono convexo . Al hacerlo, evitamos que los vértices colapsen en un único vértice cuando se aplica el mapeo. Los vértices no límite se posicionan entonces en la interpolación baricéntrica de sus vecinos. El Mapeo de Tutte, sin embargo, todavía sufre de distorsiones severas ya que intenta hacer que las longitudes de los bordes sean iguales y, por lo tanto, no tiene en cuenta correctamente los tamaños de los triángulos en la malla de superficie real.
Otra forma de medir la distorsión es considerar las variaciones en las funciones de coordenadas u y v . La inestabilidad y la distorsión que se observan en los métodos de resortes de masa se deben a las altas variaciones en las funciones de coordenadas u y v . Con este enfoque, la función objetivo se convierte en la energía de Dirichlet en u y v:
Hay algunas otras cosas que considerar. Nos gustaría minimizar la distorsión del ángulo para preservar la ortogonalidad . Eso significa que nos gustaría que . Además, también nos gustaría que la asignación tuviera regiones de tamaño proporcionalmente similar al original. Esto da como resultado establecer el jacobiano de las funciones de coordenadas u y v en 1.
Juntando estos requisitos, podemos aumentar la energía de Dirichlet de modo que nuestra función objetivo se convierta en: [6] [7]
Para evitar el problema de tener todos los vértices asignados a un solo punto, también requerimos que la solución al problema de optimización tenga una norma distinta de cero y que sea ortogonal a la solución trivial.
La deformación se ocupa de transformar una forma en reposo en una nueva forma. Normalmente, estas transformaciones son continuas y no alteran la topología de la forma. Los métodos modernos de deformación de formas basados en mallas satisfacen las restricciones de deformación del usuario en los controladores (vértices o regiones seleccionados en la malla) y propagan estas deformaciones de controlador al resto de la forma de manera suave y sin eliminar ni distorsionar los detalles. Algunas formas comunes de deformación interactiva son las basadas en puntos, las basadas en esqueletos y las basadas en jaulas. [8] En la deformación basada en puntos, un usuario puede aplicar transformaciones a un pequeño conjunto de puntos, llamados controladores, en la forma. La deformación basada en esqueletos define un esqueleto para la forma, que permite al usuario mover los huesos y rotar las articulaciones. La deformación basada en jaulas requiere que se dibuje una jaula alrededor de toda o parte de una forma de modo que, cuando el usuario manipule puntos en la jaula, el volumen que encierra cambie en consecuencia.
Los controles proporcionan un conjunto escaso de restricciones para la deformación: a medida que el usuario se mueve un punto, los demás deben permanecer en su lugar.
Una superficie en reposo inmersa en se puede describir con una aplicación , donde es un dominio paramétrico 2D. Se puede hacer lo mismo con otra aplicación para la superficie transformada . Idealmente, la forma transformada agrega la menor distorsión posible a la original. Una forma de modelar esta distorsión es en términos de desplazamientos con una energía basada en el laplaciano. [9] La aplicación del operador de Laplace a estas aplicaciones nos permite medir cómo cambia la posición de un punto en relación con su entorno, lo que mantiene los controladores suaves. Por lo tanto, la energía que nos gustaría minimizar se puede escribir como:
.
Si bien este método es invariante en la traslación, no puede tener en cuenta las rotaciones. El esquema de deformación As-Rigid-As-Possible [10] aplica una transformación rígida a cada asa i, donde es una matriz de rotación y es un vector de traslación. Desafortunadamente, no hay forma de conocer las rotaciones de antemano, por lo que en su lugar elegimos una rotación "mejor" que minimice los desplazamientos. Sin embargo, para lograr la invariancia de la rotación local, se requiere una función que genere la mejor rotación para cada punto de la superficie. La energía resultante, entonces, debe optimizarse sobre y :
Tenga en cuenta que el vector de traducción no está presente en la función objetivo final porque las traducciones tienen un gradiente constante.
Aunque parezca trivial, en muchos casos, determinar el interior desde el exterior de una malla de triángulos no es un problema fácil. En general, dada una superficie, planteamos este problema como la determinación de una función que retornará si el punto está dentro de , y en caso contrario.
En el caso más simple, la forma es cerrada. En este caso, para determinar si un punto está dentro o fuera de la superficie, podemos lanzar un rayo en cualquier dirección desde un punto de consulta y contar el número de veces que pasa por la superficie. Si estaba fuera , entonces el rayo no debe pasar por ella (en cuyo caso ) o, cada vez que entra, debe pasar por ella dos veces, porque S está acotado, por lo que cualquier rayo que entre debe salir. Entonces, si está fuera, es par. Del mismo modo, si está dentro, se aplica la misma lógica al caso anterior, pero el rayo debe intersecar una vez más la primera vez que sale . Entonces:
Ahora bien, muchas veces no podemos garantizar que la prenda esté cerrada. Tomemos como ejemplo el par de pantalones que aparece al principio de este artículo. Esta malla tiene claramente un interior y un exterior semánticos, a pesar de tener agujeros en la cintura y en las piernas.
El intento ingenuo de resolver este problema consiste en disparar muchos rayos en direcciones aleatorias y clasificarlos como si estuvieran dentro si, y solo si, la mayoría de los rayos se intersectaran un número impar de veces. Para cuantificar esto, digamos que lanzamos rayos, . Asociamos un número que es el valor promedio de de cada rayo. Por lo tanto:
En el límite de disparar muchos, muchos rayos, este método maneja mallas abiertas, sin embargo, para ser preciso, se requieren demasiados rayos para que este método sea computacionalmente ideal. En cambio, un enfoque más robusto es el Número de bobinado generalizado. [11] Inspirado por el número de bobinado 2D , este enfoque utiliza el ángulo sólido en de cada triángulo en la malla para determinar si está dentro o fuera. El valor del Número de bobinado generalizado en , es proporcional a la suma de la contribución del ángulo sólido de cada triángulo en la malla:
Para una malla cerrada, es equivalente a la función característica para el volumen representado por . Por lo tanto, decimos:
Debido a que es una función armónica , se degrada con gracia, lo que significa que la segmentación interior-exterior no cambiaría mucho si hiciéramos agujeros en una malla cerrada. Por esta razón, el Número de Devanado Generalizado maneja las mallas abiertas de manera robusta. El límite entre el interior y el exterior pasa suavemente sobre los agujeros en la malla. De hecho, en el límite, el Número de Devanado Generalizado es equivalente al método de proyección de rayos, ya que el número de rayos tiende al infinito.