Tengo un conjunto de imágenes que representan la curvatura media de una superficie posterior humana.
Lo que quiero hacer es "escanear" la imagen en busca de puntos que tengan "contrapartidas" similares y reflejadas en alguna otra parte de la imagen (muy probablemente simétrica a la línea media, pero no necesariamente porque puede haber deformidades). Algunas técnicas de unión de imágenes usan esto para "autodetectar" puntos similares entre imágenes, pero quiero detectarlos para ambos lados de la misma imagen.
El objetivo final es encontrar una línea longitudinal continua, probablemente curva, que divida adaptativamente la espalda en "mitades" simétricas.
Una imagen de muestra se coloca debajo. Tenga en cuenta que no todas las regiones son simétricas (específicamente, justo encima del centro de la imagen, la "franja" vertical roja se desvía a la derecha). Esa región debería recibir una mala puntuación, o lo que sea, pero luego la simetría local se definiría a partir de puntos simétricos ubicados más lejos. En cualquier caso, tendré que adaptar cualquier algoritmo al dominio de mi aplicación, pero lo que busco es una estrategia de correlación / convolución / coincidencia de patrones, creo que ya debe haber algo.
(EDITAR: hay más imágenes a continuación, y algunas explicaciones más)
EDITAR: según lo solicitado, incluiré imágenes más típicas, bien comportadas y problemáticas. Pero en lugar de imágenes mapeadas en color, son en escala de grises, por lo que el color se relaciona directamente con la magnitud de los datos, lo que no sucedió con la imagen en color (proporcionada solo para la comunicación). Aunque las imágenes grises parecen carecer de contraste en comparación con las de color, los gradientes de datos están ahí y pueden aparecer con un poco de contraste adaptativo si se desea.
1) Imagen de un sujeto muy simétrico:
2) Imagen del mismo sujeto en un momento diferente. Aunque hay más "características" (más gradientes), no se "siente" tan simétrica como antes:
3) Un sujeto joven y delgado, con convexidades (protuberancias óseas, denotadas por regiones más claras) en la línea media en lugar de la línea media cóncava más común:
4) Una persona joven con desviación espinal confirmada por rayos X (tenga en cuenta las asimetrías):
5) El sujeto típico "inclinado" (aunque en su mayoría simétrico alrededor de la línea media curva, y como tal no está "deformado" correctamente):
Cualquier ayuda es muy bienvenida!
fuente
Respuestas:
Como he dicho en los comentarios, el registro de imágenes médicas es un tema con mucha investigación disponible, y no soy un experto. Por lo que he leído, la idea básica comúnmente utilizada es definir un mapeo entre dos imágenes (en su caso, una imagen y su imagen especular), luego definir términos de energía para suavidad y similitud de imagen si se aplica el mapeo, y finalmente optimice esta asignación utilizando técnicas de optimización estándar (o, a veces, específicas de la aplicación).
He hackeado un algoritmo rápido en Mathematica para demostrar esto. Este no es un algoritmo que debe usar en una aplicación médica, solo una demostración de las ideas básicas.
Primero, cargo su imagen, la reflejo y divido estas imágenes en pequeños bloques:
Normalmente, haríamos un registro rígido aproximado (usando, por ejemplo, puntos clave o momentos de imagen), pero su imagen está casi centrada, por lo que me saltearé esto.
Si miramos un bloque y su contraparte de imagen especular:
Podemos ver que son similares, pero cambiaron. La cantidad y la dirección del cambio es lo que estamos tratando de averiguar.
Para cuantificar la similitud de coincidencia, puedo usar la distancia euclidiana al cuadrado:
Lamentablemente, el uso de estos datos es que la optimización directamente fue más difícil de lo que pensaba, así que en su lugar utilicé una aproximación de segundo orden:
La función no es la misma que la función de correlación real, pero está lo suficientemente cerca para un primer paso. Calculemos esto para cada par de bloques:
Esto nos da nuestro primer término energético para la optimización:
variablesX/Y
contiene los desplazamientos para cada bloque ymatchEnergyFit
aproxima la diferencia euclidiana al cuadrado entre la imagen original y la imagen reflejada con los desplazamientos aplicados.La optimización de esta energía por sí sola daría malos resultados (si convergiera en absoluto). También queremos que los desplazamientos sean suaves, donde la similitud del bloque no dice nada sobre el desplazamiento (por ejemplo, a lo largo de una línea recta o en el fondo blanco).
Entonces establecemos un segundo término de energía para suavidad:
Afortunadamente, la optimización restringida está incorporada en Mathematica:
Veamos el resultado:
El
0.1
factor anteriorsmoothnessEnergy
es el peso relativo que obtiene la energía de suavidad en relación con el término de energía de coincidencia de imagen. Estos son resultados para diferentes pesos:Posibles mejoras:
fuente
Interesante pregunta. Primero, tal vez busque enfoques basados en el detector de puntos clave de interés y la coincidencia. Esto incluiría SIFT (Scale-Invariant Feature Transform), SURF, ORB, etc ... o incluso un enfoque más simple basado únicamente en el operador Harris (csce.uark.edu/~jgauch/library/Features/Harris.1988.pdf ) No está claro en su publicación lo que ha intentado, así que lo siento si soy ingenuo aquí.
Dicho esto, permítanme adoptar un enfoque más simple con la Morfología Matemática (MM) solo por diversión :) Las imágenes para visualizar todos los pasos están al final.
Tomé su imagen de muestra y la convertí al espacio de color L a b * usando ImageMagick y usé solo la banda L *:
0.png corresponde a la banda L *. Ahora, estoy seguro de que tiene los datos reales de la imagen, pero estoy lidiando con artefactos de compresión jpg y demás. Para manejar parcialmente este problema, realicé una apertura morfológica seguida de un cierre morfológico con un disco plano de radio 5. Esta es una forma básica de reducir el ruido con MM, y dado el radio del disco, no se cambia gran parte de la imagen. A continuación, mi idea se basó en esta imagen única, que tiene muchas posibilidades de fallar en otros casos. Su región de interés se distingue visualmente por ser más oscura ("más caliente" en su imagen en color), por lo que supuse que un binarizador basado en estadísticas podría funcionar bien. Usé el enfoque de Otsu, que es automático.
En este punto, es posible visualizar claramente la región central de interés. El problema es que, en mi enfoque, quería que fuera un componente cerrado, pero no lo es. Comienzo descartando cada componente conectado que sea más pequeño que el más grande (sin contar el fondo como uno de ellos). Esto tiene más posibilidades de funcionar en otros casos si el resultado de la binarización fue bueno. En su imagen de ejemplo, hay un componente conectado al fondo, por lo que no se descarta pero no causa problemas.
Si todavía me sigue, todavía tenemos que encontrar la supuesta región central de interés real. Aquí está mi opinión al respecto. No importa cuán curva sea la persona (en realidad puedo ver ciertos casos problemáticos), la región se asemeja a una línea vertical. Con ese fin, simplifico la imagen actual al realizar una apertura morfológica con una línea vertical de longitud 100. Esta longitud es puramente arbitraria, si no tiene problemas de escala, entonces este no es un valor difícil de determinar. Ahora de nuevo descartamos componentes, pero fui un poco más cuidadoso en este paso. Solía abrir por área con el complemento de la imagen para descartar lo que consideraba regiones pequeñas, esto podría hacerse de una manera más controlada mediante la realización de algo en forma de análisis granulométrico (también de MM).
Ahora tenemos aproximadamente tres piezas: la parte izquierda de la imagen, la parte central y la parte derecha de la imagen. Se espera que la parte central sea el componente más pequeño de los tres, por lo que se obtiene trivialmente.
Aquí está el resultado final, la imagen inferior derecha es solo la imagen superpuesta a su izquierda con la original. Las figuras individuales no están todas alineadas, perdón por la prisa.
fuente