Necesito calcular los valores propios y los vectores propios de una imagen laplaciana en 3D. Estoy tratando de evaluar el núcleo de calor en la cuadrícula uniforme 3D (la estructura uniforme generada por la imagen voxelizada) en diferentes valores de tiempo, para implementar una Firma de núcleo de calor volumétrico (consulte la sección "Cálculo numérico"). El dominio en el que estoy trabajando no es rectangular, por lo que tengo 1 en algunos puntos de la cuadrícula y 0 en otros puntos, produciendo una forma 3D binaria. He estado leyendo sobre esto para 2D: en 2D, se calcula el laplaciano de cada punto de cuadrícula y luego se calculan los valores propios y los vectores propios de la matriz resultante. ¿Cómo puedo hacer esto para 3D? Toda la información y ejemplos que he leído son para imágenes 2D. Las preguntas específicas son:
- ¿Cómo puedo obtener una matriz de la imagen 3D que obtengo después de aplicarle un operador discreto (3x3x3) de Laplace?
- Si no hay forma de obtener una matriz, entonces debería calcular los valores propios y los vectores propios de una cuadrícula estructurada en 3D. ¿Cuál es la forma más sencilla de hacer esto? ¿Me podría recomendar algo suave para hacer esto?
Realmente agradecería cualquier pista.
Gracias por adelantado.
fuente
Respuestas:
Esta respuesta llega un poco tarde, pero creo que es necesario aclarar algo de la confusión acerca de cuál es la estructura propia de un laplaciano y cómo se calcula.
En primer lugar, es importante destacar que no se trata de las propiedades del núcleo local utilizado para calcular derivados discretos. En su lugar, debe comprender al Laplaciano como operador lineal en un espacio vectorial cuyos elementos son en su caso los conjuntos de datos volumétricos.
Eso significa que la aplicación del operador de Laplace es un mapa lineal que asigna un vector (conjunto de datos) a otro vector (conjunto de datos). En este contexto, los vectores propios del Laplaciano son nuevamente vectores (conjuntos de datos) en ese mismo espacio vectorial. Entonces, la respuesta a su pregunta sería un conjunto de conjuntos de datos volumétricos, de hecho, tantos como la dimensión de su espacio vectorial (es decir, el número de vóxeles independientes ).
Consideremos un ejemplo muy simple. Tome una imagen unidimensional, es decir, una sola fila de píxeles, y también usemos muy pocos píxeles, es decir, 4. Luego, los dos píxeles centrales deben dirigir a los vecinos, mientras que el primer y el último píxel solo tienen un vecino cada uno.
Con esta geometría de píxeles, podemos dar el resultado discreto del operador de Laplace para los dos píxeles centrales 2 y 3 como funciones lineales de los valores de los píxeles:
Los otros dos píxeles 1 y 4 no tienen suficientes vecinos directos para calcular la segunda derivada discreta. Podríamos arreglar eso asumiendo que los píxeles 1 y 4 son vecinos directos, cerrando la topología a un círculo e imponiendo lo que se llama una condición de límite circular. O simplemente tomamos las segundas derivadas en los límites para desaparecer. Hagamos ambas cosas, pero comencemos con la condición de límite cíclico. Entonces tenemos:
Este mapa es lineal y podemos escribirlo como una ecuación matricial, mapeando el vector de columna a por multiplicación con la matriz .p : = ( p [ 1 ] , p [ 2 ] , p [ 3 ] , p [ 4 ] ) l = ( L [ 1 ] , L [ 2 ] , L [ 3 ] , L [ 4 ] ) METRO
Llamamos a esta matriz la representación discreta del operador de Laplace, y para nuestro caso es
Los vectores propios de esta matriz son con los valores propios asociados
Puede reconocer estos vectores como el vector base de la transformada discreta de Fourier en este vector, y los valores propios como sus frecuencias discretas. Esto es cierto en general, y de hecho la descomposición de un vector (o más generalmente, una función) en el espectro propio de un operador de Laplace generaliza la idea de la transformada de Fourier.
Ahora investiguemos qué sucede si usamos las condiciones de contorno alternativas donde y . La matriz es entoncesl [ 1 ] = 0 l [ 4 ] = 0 METRO
Cearly, esta matriz tiene un conjunto diferente de vectores propios y valores propios. No son tan intuitivos e interesantes, por lo que no los enumeraré explícitamente. Sin embargo, vale la pena señalar que ahora obtenemos el valor propio dos veces, lo que significa que el subespacio propio donde desaparece el laplaciano es bidimensional.0 0
Entonces, ¿cómo cambian las cosas si tenemos una imagen adecuada en lugar de una sola fila de píxeles? No mucho. Solo necesitamos escribir el Laplaciano para cada píxel mientras consideramos la relación de vecino directo, o la topología, de la imagen. Para hacer las cosas un poco más complicadas, vamos con una imagen bidimensional de forma irregular.
Obviamente ahora tenemos que tomar un laplaciano bidimensional sumando las segundas derivadas parciales en dirección horizontal y vertical. Para eso requerimos los dos vecinos directos en cada dirección. Los puntos interiores tienen, por tanto, una expansión completa de laplace 2-d. Para el punto se ve así, por ejemplo:5 , 6 , 7 , 10 , 11 , 12 5 5
Para los puntos de esquina , , , , , , , no podemos construir una segunda derivada discreta, por lo que usamos una condición límite, por ejemplo,1 , 3 , 4 , 8 , 9 , 13 , 14 , 16 l [ 1 ] = 0
Quedan dos puntos, y . Ambos tienen dos vecinos directos en dirección horizontal, pero no en dirección vertical. Por lo tanto, podemos aplicar una condición límite que solo afecta la dirección vertical, al establecer la segunda derivada vertical en cero, mientras evaluamos la segunda derivada discreta horizontalmente y obtenemos e igualmente para .2 15 l [ 2 ] = p [ 1 ] - 2 p [ 2 ] + p [ 3 ] l [ 15 ]
Después de esta construcción, obtenemos una ecuación lineal para cada punto que la relaciona con los valores de píxeles. Nuevamente, lo escribimos como una ecuación matricial , donde la matriz en este caso tiene entradas. Para ser específico, esL = Mpags 16 × 16
Y de nuevo podemos resolver el sistema propio de esta matriz. Una buena interpretación física de las imágenes que obtienes como vectores propios es que representan los modos vibratorios de una membrana con forma de tu imagen, con frecuencias dadas por los valores propios.
Puedes subir fácilmente este juego a cualquier cantidad de dimensiones, siempre y cuando conozcas las relaciones de vecindad entre tus vóxeles. Simplemente formule la ecuación lineal individual como arriba, construya una matriz, encuentre el sistema propio.
Con la información obtenida de los vectores propios del Laplaciano, la resolución de ecuaciones de diferencia que involucran al Laplaciano discreto puede simplificarse enormemente. Una vez que se encuentra la estructura propia, dependiendo solo de la geometría de la región, todos los conjuntos de datos se pueden descomponer fácilmente en la base propia y las ecuaciones de diferencia se vuelven triviales.
fuente
No está claro qué está tratando de hacer: el Laplaciano es un valor escalar, no una matriz. Por lo tanto, no tiene valores propios. ¿Quizás te refieres a los autovalores / vectores del hessiano?
Para calcular los valores propios y el vector propio del Hessian, primero debe calcular el Hessian (una matriz simétrica de 3x3, que contiene las segundas derivadas en cada una de las 3 direcciones) para cada píxel. Una manera simple de hacer esto es aplicar tres filtros de degradado (en dirección x, y, z) a su imagen 3D. Ahora tienes 3 imágenes. Para cada una de esas imágenes, nuevamente aplica tres filtros de gradiente, dando imágenes de resultados 3x3, que contienen las entradas 3x3 de la matriz de Hesse para cada píxel. (Dado que los filtros de gradiente conmutan, I * gx * gy = I * gy * gx, realmente solo tiene que calcular 6 de ellos).
Hay dos formas de obtener los valores propios y los vectores de esta matriz 3x3: Encuentra las raíces del polinomio característico o usa un método iterativo. El polinomio característico es cúbico, por lo que supongo que los métodos iterativos serían más rápidos en la práctica (porque las raíces cúbicas tardan mucho más en calcular la suma / multiplicación simple).
fuente
Quizás esto ayude (?).
http://en.m.wikipedia.org/wiki/Kronecker_sum_of_discrete_Laplacians
L = Dxx ¤ I ¤ I + I ¤ Dyy ¤ I + I ¤ I ¤ Dzz
donde ¤ es el producto Kronecker (no es el símbolo adecuado, no sabía cómo obtenerlo aquí). Creo que los valores propios y los vectores propios se calculan a partir de la matriz resultante por vóxel.
El concepto de tensor como se describe en la siguiente sección 4 del artículo parece relacionado, aunque no es exactamente el mismo. Sin embargo, está estrechamente relacionado con la matriz de Hesse, como se menciona en la respuesta de @nikie.
Carsten Steger, Extracción precisa de subpíxeles de líneas y bordes, Archivos internacionales de fotogrametría y teledetección (2000).
El documento se puede encontrar aquí: http://ias.in.tum.de/people/steger/publications
fuente