El procesamiento de geometría 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 clásico asistido por computadora , 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 de 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", se puede crear una instancia de una forma mediante uno de tres métodos: un modelo , una representación matemática o un escaneo . Una vez que nace una forma, se puede analizar y editar repetidamente en un ciclo. Esto suele implicar 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 ruido, deformar o realizar transformaciones rígidas . En la etapa final de la "vida" de la forma, ésta se consume. Esto puede significar que un espectador lo consume como un recurso renderizado en un juego o película, por ejemplo. El final de la vida de una forma también puede definirse mediante 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 por láser.
Como cualquier otra forma, las formas utilizadas en el procesamiento geométrico 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 vive la forma (ej. o ). La topología de una forma es un conjunto de propiedades que no cambian incluso después de que se hayan aplicado transformaciones suaves a la forma. Se trata de dimensiones como el número de agujeros y límites , así como la orientabilidad de la forma. Un ejemplo de forma no orientable es la cinta de Mobius .
En las computadoras todo debe estar discretizado. Las formas en el procesamiento de geometría generalmente se representan como mallas triangulares , que pueden verse como un gráfico . Cada nodo del gráfico es un vértice (normalmente 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 según la regla de la mano derecha, 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 utilizar 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 aproximada 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 geomorfosis, transmisión progresiva, compresión de malla y refinamiento selectivo. [2]
Una propiedad particularmente importante de una forma tridimensional es su característica de Euler , que también 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 la malla de un pantalón . Hay un componente conectado, 0 orificios y 3 componentes conectados del límite (la cintura y dos orificios para las piernas). Entonces, en este caso, la característica de Euler es -1. Para llevar 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 inicialice o "nazca" una forma, la forma podría existir sólo 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 del indicador es 0 en todas partes, excepto en los puntos muestreados, donde es igual a la normal de la superficie interior. 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 minimizada , donde está 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 y un valor para el cual los puntos se encuentran en la superficie a reconstruir, el algoritmo de los cubos en marcha se puede usar para construir una malla triangular a partir de la función , que luego se puede aplicar en gráficos por computadora posteriores. aplicaciones.
Un problema común que se encuentra en el procesamiento de geometría es cómo fusionar múltiples vistas de un solo 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 de una superficie a otra , queremos encontrar la matriz de rotación y el vector de traslación óptimos que minimicen la siguiente función objetivo:
Si bien las rotaciones son no lineales en general, las rotaciones pequeñas se pueden linealizar como matrices simétricas sesgadas. Además, la función de distancia no es lineal, pero se presta a aproximaciones lineales si el cambio 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 y se proyectan sobre . Para muestrear puntos uniformemente al azar a lo largo de la superficie de la malla triangular, el muestreo aleatorio se divide en dos etapas: muestreo uniforme de puntos dentro de un triángulo; y muestreo de triángulos de manera no uniforme, 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 uno y su proyección. En la siguiente iteración, las proyecciones se calculan en base al resultado de aplicar la transformación anterior sobre las muestras. El proceso se repite hasta la convergencia.
Cuando se definen o escanean formas, puede haber ruido que las acompañe, ya sea debido a una señal que actúa sobre la superficie o a la geometría real de la superficie. La reducción del ruido en el primero se conoce como eliminación de ruido de datos , mientras que la reducción del ruido en el segundo se conoce como carenado de superficie . La tarea del suavizado geométrico es análoga a la reducción del 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 a la magnitud del gradiente con un peso :
.
Tomar una variación 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 es 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 que se resuelve con un parámetro : cuando se trabaja con mallas de triángulos, una forma de determinar los valores de la matriz laplaciana es analizando 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 en un plano. Este proceso se conoce como parametrización . El objetivo es encontrar las coordenadas u y v sobre las cuales podamos mapear la superficie para minimizar 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 mallas 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:
Dónde está 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 solo vértice en las coordenadas uv . Tomando prestada una idea de la teoría de grafos, aplicamos el Mapeo Tutte y restringimos los vértices límite de la malla a un círculo unitario u otro polígono convexo . Al hacerlo, se evita que los vértices colapsen en un solo vértice cuando se aplica el mapeo. Luego, los vértices no límite se ubican en la interpolación baricéntrica de sus vecinos. El Tutte Mapping, sin embargo, todavía sufre severas distorsiones ya que intenta igualar las longitudes de los bordes y, por lo tanto, no tiene en cuenta correctamente los tamaños de los triángulos en la malla de la superficie real.
Otra forma de medir la distorsión es considerar las variaciones en las funciones de coordenadas u y v . La oscilación y la distorsión aparentes en los métodos de resortes de masa se deben a grandes 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 a considerar. Nos gustaría minimizar la distorsión del ángulo para preservar la ortogonalidad . Eso significa que nos gustaría . Además, también nos gustaría que el mapeo tuviera regiones de tamaño proporcionalmente similares al original. Esto da como resultado establecer el jacobiano de las funciones de coordenadas u y v en 1.
Al reunir estos requisitos, podemos aumentar la energía de Dirichlet de modo que nuestra función objetivo sea: [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 controles (vértices o regiones seleccionados en la malla) y propagan estas deformaciones de los controles al resto de la forma suavemente y sin eliminar ni distorsionar detalles. Algunas formas comunes de deformaciones interactivas 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 identificadores, en la forma. La deformación basada en esqueleto define un esqueleto para la forma, que permite al usuario mover los huesos y rotar las articulaciones. La deformación basada en jaula 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 mangos proporcionan un conjunto escaso de restricciones para la deformación: cuando el usuario mueve un punto, los demás deben permanecer en su lugar.
Una superficie de descanso sumergida se puede describir con un mapeo , donde es un dominio paramétrico 2D. Lo mismo se puede hacer con otro mapeo para la superficie transformada . Lo ideal es que la forma transformada agregue la menor distorsión posible al original. Una forma de modelar esta distorsión es en términos de desplazamientos con una energía basada en Laplaciano. [9] La aplicación del operador de Laplace a estas asignaciones nos permite medir cómo cambia la posición de un punto en relación con su vecindad, lo que mantiene los controles suaves. Así, la energía que nos gustaría minimizar se puede escribir como:
.
Si bien este método es invariante en la traducción, no puede tener en cuenta las rotaciones. El esquema de deformación Lo más rígido posible [10] aplica una transformación rígida a cada mango 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 elegimos una "mejor" rotación que minimice los desplazamientos. Sin embargo, para lograr la invariancia de 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 ambos 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 triangular no es un problema fácil. En general, dada una superficie, planteamos este problema como determinar una función que regresará si el punto está dentro y en caso contrario.
En el caso más sencillo, la forma es cerrada. En este caso, para determinar si un punto está dentro o fuera de la superficie, podemos proyectar 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 afuera , entonces el rayo no debe pasar (en cuyo caso ) o, cada vez que entra , debe pasar dos veces, porque S está acotado, por lo que cualquier rayo que entre debe salir. Entonces si está afuera, está parejo. Asimismo si está dentro, se aplica la misma lógica al caso anterior, pero el rayo debe cruzarse una vez más la primera vez que sale . Entonces:
Ahora bien, muchas veces no podemos garantizar que esté cerrado. Tomemos como ejemplo el par de pantalones que aparece al principio de este artículo. Esta malla tiene claramente una semántica de interior y exterior, a pesar de tener agujeros en la cintura y las piernas.
El intento ingenuo de resolver este problema es disparar muchos rayos en direcciones aleatorias y clasificarlos como interiores si y sólo si la mayoría de los rayos se cruzan un número impar de veces. Para cuantificar esto, digamos que proyectamos rayos, . Asociamos un número que es el valor promedio 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 sólido es el número de liquidación generalizado. [11] Inspirado en el número de bobinado 2D , este enfoque utiliza el ángulo sólido de cada triángulo en la malla para determinar si está dentro o fuera. El valor del número de devanado 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, equivale a la función característica para el volumen representada por . Por eso 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 Bobinado Generalizado maneja las mallas abiertas con robustez. El límite entre el interior y el exterior pasa suavemente por los agujeros de la malla. De hecho, en el límite, el número de devanado generalizado es equivalente al método de proyección de rayos cuando el número de rayos llega al infinito.