Análisis de la imagen de un pie de elefante en JMPEsta es una imagen de la parte inferior de la pata de un elefante. Como se puede imaginar al mirar esta foto, este no es un elefante muy feliz. Los elefantes mantenidos en cautiverio a menudo pasan su tiempo caminando por el pavimento u otras superficies duras. Este no es el sustrato al que están acostumbrados y no es para lo que fue diseñado el pie de elefante. En consecuencia, este elefante ha desarrollado llagas en su pie, y en algunos casos, esas llagas incluso se han infectado. El cuidador de este elefante está proporcionando tratamientos, pero el elefante continúa caminando sobre su pie, causando un daño mayor. Así que el cuidador se queda preguntándose si los tratamientos están ayudando en absoluto.

Me dieron una copia de esta foto con esta pregunta sobre el análisis de imágenes: ¿Hay una manera de medir de manera cuantificable la condición del pie para que con el tiempo se pueda determinar si el tratamiento está teniendo un efecto positivo?
En cuanto a la imagen, puedo ver que todas las áreas del pie caen básicamente en una de tres categorías:
Hay áreas que son de color marrón, que representan el color normal del pie de elefante. Esas áreas son saludables.Hay zonas que tienen algo de sombra de naranja. Esas son las áreas que han desarrollado llagas.Luego están las áreas blanquecinas dentro de las llagas. Esas son las áreas donde las llagas se han convertido en una infección y ahora están llenas de puss.Al clasificar el pie entero en esos tres cubos, sentí que podíamos obtener una medida de la condición del pie. Es importante ignorar el fondo, aquellas áreas en la imagen que no muestran la parte inferior del pie, para no sesgar nuestros resultados.
Leí la imagen en JSL (JMP Scripting Language) y obtuve los valores de píxeles de la imagen como rojo , verde y azul ( RGB ) Los valores como matrices separadas. Luego podría convertir estas matrices individuales en una matriz, representando los tres componentes de color.
img = nueva imagen ( "elephantFoot.jpg" );
{r, g, b} = img << getPixels ( rgb );
colr = RGBColor (r, g, b);
Pero, a menudo, es mejor analizar el color en un esquema de color que no sea RGB. Así que realmente quiero los colores en una combinación de colores llamada HLS , Lo que significa matiz , ligereza y saturación . El tono es básicamente el tinte del color, la luminosidad es el brillo y la saturación es la cantidad de color que hay en comparación con la cantidad de blanco. Afortunadamente, JMP proporciona un método para convertir de RGB a HLS.
{tono, encendido, sat} = ColorToHLS (colr);
Ahora que tengo mi color en HLS, puedo crear una tabla de datos JMP con mis valores de píxeles.
dt = Nueva mesa ( "Datos de píxeles" ,
nuevoColumna ( "Matiz" , establecer valores (matiz)
nuevoColumna ( "Iluminado" , establecer valores (lit)),
nuevoColumna ( "Sab" , establecer valores (sat)
);
La razón para hacer esto es para poder usar parte del poder estadístico de JMP para analizar mis datos. Tengo curiosidad por el desglose de mis valores de color, así que decidí crear un Distribución De cada uno de los componentes de color.
Distribución (Distribución Continua ( Columna (: tono), Cuadro de caja atípica ( 0 )));
Distribución (Distribución Continua ( Columna (: lit), Parcela de caja atípica ( 0 )));
Distribución (Distribución Continua ( Columna (: sat), Outlier Box Plot ( 0 )));
Aquí está el resultado.

Al mirar mis Distribuciones, puedo adivinar qué valores buscar en mis datos para identificar qué píxeles son de color marrón, naranja o blanco. Procesé cada píxel, representado por una fila de datos en mi tabla de datos, y puedo clasificar cada uno de ellos. Entonces puedo informar mi resultados .

Para generar mi informe, seleccioné todos mis valores faltantes (todos los píxeles que representaban el área de fondo) y los configuré para ocultar / excluir. Entonces generé una tabla de resumen de mi tabla de datos de píxeles. Entonces puedo usar Graph Builder para generar mi gráfico.
El resultado es que aproximadamente la mitad del pie está en buenas condiciones. Para la mitad que no es normal, aproximadamente el 30% ha desarrollado úlceras y el otro 20% está infectado. Ahora tenemos una medida cuantificable de la condición del pie. Al hacer esto a lo largo del tiempo, podemos determinar la condición del pie y saber si los tratamientos están ayudando o no.
La imagen del pie de elefante me llegó a través de una organización llamada WildTrack . WildTrack se dedica a la conservación de especies en peligro de extinción, así como al bienestar general de los animales en la naturaleza.
WildTrack es un cliente de JMP que aparecerá en un próximo webcast, Hablando analíticamente . Si encuentra interesante esta publicación de blog, lo invito a registrarse y asistir a la transmisión por Internet. Les puedo asegurar que sus charlas son siempre fascinantes e informativas. Y como siempre, por favor déjame saber lo que piensas.
John Ponte escribió: Sandeep, el enlace publicado en mi anterior ... John Ponte escribió:
Sandeep, el enlace publicado en mi respuesta anterior es un enlace a un video que describe la técnica ( https://www.youtube.com/watch?v=wSkUwgNbv2g ). También puede encontrar algún código JSL en el Intercambio de archivos JMP que le ayudará. Busque ImageToDatatable.jsl en Scripts ( https://community.jmp.com/docs/DOC-6100 ). Eso le mostrará cómo abrir una imagen y generar la tabla de datos a partir de los valores de píxeles. Alternativamente, puede usar el analizador de imágenes para generar la tabla de datos por usted ( https://community.jmp.com/docs/DOC-7181 ).
Por cierto, si vienes a Discovery (en Cary, NC en dos semanas), ven a hablar conmigo y puedo ayudarte. Estaré en las estaciones de trabajo de desarrollador, así como deambulando.
Sandeep escribió: John, ¿hay un video tutorial que h ... Sandeep escribió:
John, ¿hay algún video tutorial que hayas hecho para que yo aprenda esta técnica?
John Ponte escribió: Por cierto, JMP lanzó un video de YouTube ... John Ponte escribió:
Por cierto, JMP publicó un video de YouTube en el que describía el proceso de análisis del pie de elefante. Contiene más detalles sobre el proceso. Si esta publicación te parece interesante, también puedes disfrutar el video.
Se puede encontrar aquí: https://www.youtube.com/watch?v=wSkUwgNbv2g
¡Disfrutar!
John Ponte escribió: Rodrigo, JMP trabaja en una columna normalizada ... John Ponte escribió:
Rodrigo
JMP trabaja en un espacio de color normalizado, lo que significa que todos los valores están entre 0.0 y 1.0. En cuanto a mi distribución para el tono, veo que la mayoría de mis valores están por debajo de 0.125. Sin embargo, también veo algunos valores por encima de 0.9. Así que eso me da una idea de qué valores debo buscar para separar mis colores.
Lo que deberá hacer, en JSL, es recorrer cada fila (lo que representa un píxel) mirando el valor de tono y luz. En tu caso, estarás buscando verde, amarillo y marrón. El amarillo y el marrón tienen un valor muy similar para el tono, ya que ambos están compuestos de cantidades iguales de rojo y verde. Se distinguen por su brillo, o en este caso el valor de la luz. El amarillo tendrá un valor más alto para la luminosidad que el marrón. El verde tendrá un valor de tono más alto que el amarillo y el marrón. Entonces, al usar los valores de tono y luminosidad, deberías poder distinguir los colores.
Mire la distribución de la luz y vea si tiene tres grupos algo distintos. Los valores más altos son probablemente tus píxeles amarillos, los valores más bajos son probablemente tus píxeles marrones y los que están en medio son probablemente tus píxeles verdes. Comienza con eso y ve si eso te da la respuesta correcta. Puedes producir una nueva imagen de la misma manera que lo hice con el pie de elefante para validar tu respuesta. Si no obtiene la respuesta correcta, puede modificar sus rangos de valores en sus comparaciones.
¡Espero que esto ayude!
Rodrigo escribió: Querido John, seguí tu guión y obtuve ... Rodrigo escribió:
Querido John,
Seguí su guión y obtuve los valores de píxel para H, L, S. Ahora, necesito procesar cada píxel y reconocer qué es verde, amarillo y marrón. ¿Cómo hago esto? Estoy perdido en esta parte: "Al mirar mis Distribuciones, puedo adivinar qué valores buscar en mis datos para identificar qué píxeles son de color marrón, naranja o blanco. Procesé cada píxel, representado por una fila de datos en mi tabla de datos, y puedo clasificar cada uno de ellos. Entonces puedo reportar mis resultados ".
Cualquier consejo será apreciado. ¡Gracias!
John Ponte escribió: En una palabra - ¡manualmente! Recibo un montón de ... John Ponte escribió:
En una palabra - manualmente! Recibo muchas imágenes de personas que me preguntan cómo pueden identificar un área de interés dentro de la imagen. Desafortunadamente, no puedo dedicar la cantidad de tiempo que me gustaría, o necesito, desarrollar una solución completa. Así que trato de darles una solución rápida junto con ideas sobre cómo podrían desarrollarla aún más. La solución rápida fue simplemente apagar el fondo usando otro paquete de software (usé Gimp). Pero en JMP / JSL podría desarrollar diferentes técnicas para la detección de bordes que podrían identificar el borde del pie de elefante para usted. De hecho, he demostrado un ejemplo de esto en un trabajo que hice para WildTrack, donde identifican la huella de un animal en una imagen. Puedes encontrar un video sobre esto aquí: http://www.youtube.com/watch?v=VjjcdCDXx9M
Scott escribió: ¡Gran trabajo, John! Me sorprende que JMP pueda ... Scott escribió:
Gran trabajo John! Me sorprende que JMP pueda usarse para aplicaciones tan diversas.
Tengo curiosidad por cómo eliminaste el fondo de la imagen. ¿Cómo identificó los píxeles de fondo cuando el fondo no es uniforme?
John Ponte escribió: Bueno, primero déjame disipar el mito de que ... John Ponte escribió:
Bueno, primero déjame disipar el mito de que soy un experto! Aunque, si ves a mi jefe, te animo a que le digas que crees que lo soy. Y gracias por decirlo.
En segundo lugar, aunque estoy familiarizado con MATLAB, no creo que sepa lo suficiente como para hacer una comparación válida entre los dos productos. He hablado con varios usuarios de JMP que también usan MATLAB y parecen estar contentos con él. Para esos usuarios (alerta de prueba), asegúrese de revisar algunas de las nuevas funciones de la versión 11 de JMP.
Además de las capacidades estadísticas, una de las características que realmente me gusta en JMP es el lenguaje de scripting de JMP, JSL. Esta publicación muestra cómo llevar una imagen a JMP y convertirla a una tabla de datos utilizando JSL. Una vez que tenga la imagen como datos, tendrá todo el poder estadístico de JMP disponible para usted. Ahora puede analizar su imagen utilizando Análisis discriminante o Agrupación en clústeres, por ejemplo. Actualmente estoy leyendo un libro sobre este tema. Se llama Measuring Shape, por F. Brent Neal y John C. Russ. Así que creo que la combinación de estas características hace de JMP una herramienta poderosa para el procesamiento de imágenes. Permite al usuario crear sus propias soluciones sin tener que implementar la funcionalidad.
amit bothra escribió: Hola Juan, gran post. Estoy asombrado con ... amit bothra escribió:
Hola John,
buena publicación. Estoy asombrado con las capacidades de JMP. Como experto, ¿cómo compararías las capacidades de procesamiento de imágenes de JMP con algunos softwares dedicados como Matlab?
Sky & Zoe escribió: Este es un gran ejemplo de cómo el análisis ... Cielo y zoe escribió:
Este es un gran ejemplo de cómo el poder analítico de JMP podría utilizarse para mejorar la toma de decisiones en el tratamiento de la patología. Muchas imágenes médicas aún dependen de la evaluación visual experta en lugar de la cuantificación.
Esta aplicación, una vez refinada, podría tener una gran aplicación en la estandarización de evaluaciones de la forma en que la cicatrización de las heridas está progresando (o no) a través del tiempo. John tiene un verdadero talento para pensar fuera de la caja, y creemos que el trabajo que está haciendo para obtener imágenes JMP tendrá una gran aplicación en una amplia gama de áreas.
John Ponte escribió: Me sorprendió un poco cuando la respuesta c ... John Ponte escribió:
Me sorprendió un poco cuando la respuesta resultó ser un 50% normal también. Pero luego me di cuenta de que las áreas defectuosas (naranja y blanco) aparecen como áreas más grandes, mientras que las áreas buenas (marrón) aparecen como secciones más pequeñas, más largas y que se envuelven alrededor de las áreas dañadas. Creo que cuando ves muchas áreas más pequeñas y áreas menos grandes, la percepción es que las áreas más grandes se sumarán para ser más grandes.
Un cálculo de error es una buena idea. Esta fue mi solución rápida (pero utilizable) para el cliente. Junto con esta solución, les di una serie de ideas sobre cómo podrían mejorarla. No quería quitarles toda su diversión.
! Gracias por los comentarios!
Scott Moore escribió: Muy bueno. Un par de pensamientos. El e... Scott Moore escribió:
Muy genial. Un par de pensamientos. El ojo es bastante bueno analizando patrones. Habría pensado que el marrón estaba más cerca del 35 por ciento mirando la foto. Habría sido interesante si hubiera hecho una hipótesis antes de su análisis, luego comparó. También me gustaría ver algún tipo de cálculo de error. Sin embargo, muy buen proceso y una gran manera de resolver un problema.