Analisi dell'immagine del piede di un elefante in JMPQuesta è una foto del fondo del piede di un elefante. Come puoi immaginare guardando questa immagine, questo non è un elefante molto felice. Gli elefanti tenuti in cattività spesso trascorrono il loro tempo camminando sul marciapiede o su altre superfici dure. Questo non è il substrato a cui sono abituati, e non è quello per cui è stato progettato il piede di un elefante. Di conseguenza, questo elefante ha sviluppato piaghe sul suo piede e, in alcuni casi, quelle piaghe sono persino state infettate. Il custode di questo elefante fornisce trattamenti, ma l'elefante continua a camminare sul piede, causando ulteriori danni. Quindi il custode viene lasciato a chiedersi se i trattamenti stanno aiutando affatto.

Mi è stata data una copia di questa foto con questa domanda sull'analisi delle immagini: C'è un modo per misurare in modo quantificabile le condizioni del piede in modo che nel tempo possa essere determinato se il trattamento sta avendo un effetto positivo?
Guardando l'immagine, posso vedere che tutte le aree del piede rientrano fondamentalmente in una delle tre categorie:
Ci sono le aree che sono di colore brunastro, che rappresentano il normale colore del piede dell'elefante. Quelle aree sono salutariCi sono aree che hanno una certa sfumatura di arancione. Queste sono le aree che hanno sviluppato piaghe.Poi ci sono le aree biancastre all'interno delle piaghe. Queste sono le aree in cui le piaghe si sono sviluppate in un'infezione e ora sono piene di pus.Classificando l'intero piede in quei tre secchi, ho sentito che potevamo ottenere una misura delle condizioni del piede. È importante ignorare lo sfondo, quelle aree dell'immagine che non mostrano la parte inferiore del piede, in modo da non distorcere i nostri risultati.
Ho letto l'immagine in JSL (JMP Scripting Language) e ho ottenuto i valori dei pixel dall'immagine come rosso , verde e blu ( RGB ) valori come matrici separate. Potrei quindi convertire queste singole matrici in una matrice, rappresentando tutte e tre le componenti del colore.
img = nuova immagine ( "ElephantFoot.jpg" );
{r, g, b} = img << getPixels ( "Rgb" );
colr = RGBColor (r, g, b);
Ma spesso è meglio analizzare il colore in una combinazione di colori diversa da RGB. Quindi voglio davvero che i colori di uno schema di colori vengano chiamati HLS , che sta per colore , leggerezza e saturazione . La tonalità è fondamentalmente la tonalità del colore, la luminosità è la luminosità e la saturazione è quanto colore c'è rispetto a quanto bianco. Fortunatamente, JMP fornisce un metodo per la conversione da RGB a HLS.
{hue, lit, sat} = ColorToHLS (COLR);
Ora che ho il mio colore in HLS, posso creare una tabella di dati JMP dei miei valori di pixel.
dt = Nuova tabella ( "Pixel Data" ,
newColumn ( "Hue" , imposta valori (tonalità)),
newColumn ( "Illuminato" , imposta valori (acceso)),
newColumn ( "Sat" , imposta valori (sat))
);
La ragione per farlo è che posso utilizzare parte della potenza statistica di JMP per analizzare i miei dati. Sono curioso di conoscere i valori dei miei colori, quindi ho deciso di creare un Distribuzione di ciascuna delle componenti di colore.
Distribuzione (distribuzione continua ( Colonna (: tonalità), trama casella anomalo ( 0 )));
Distribuzione (distribuzione continua ( Colonna (: illuminato), Trama casella Outlier ( 0 )));
Distribuzione (distribuzione continua ( Colonna (: sat), Outlier Box Plot ( 0 )));
Ecco il risultato.

Guardando le mie distribuzioni, posso fare una buona ipotesi su quali valori cercare nei miei dati per identificare quali pixel sono marrone, arancione o bianco. Elaboro ogni pixel, rappresentato da una fila di dati nella mia tabella di dati, e sono in grado di categorizzare ciascuno di essi. Allora posso denunciare il mio risultati .

Per generare il mio rapporto ho selezionato tutti i miei valori mancanti (tutti i pixel che rappresentavano l'area di sfondo) e li ho impostati per nascondere / escludere. Ho quindi generato una tabella di riepilogo dalla mia tabella di dati pixel. Posso quindi utilizzare Graph Builder per generare il mio grafico.
Il risultato è che circa la metà del piede è in buone condizioni. Per la metà non è normale, circa il 30% ha sviluppato piaghe e l'altro 20% è infetto. Ora abbiamo una misura quantificabile della condizione del piede. Facendo questo nel tempo, possiamo determinare le condizioni del piede e sapere se i trattamenti stanno aiutando o meno.
L'immagine del piede dell'elefante venne da me attraverso un'organizzazione chiamata Wildtrack . WildTrack è dedicato alla conservazione delle specie in via di estinzione e al benessere generale degli animali allo stato selvatico.
WildTrack è un cliente JMP che sarà presentato in un prossimo webcast, Parlando analiticamente . Se hai trovato interessante questo post sul blog, ti incoraggio a registrarti e partecipare al webcast. Posso assicurarti che i loro discorsi sono sempre affascinanti e istruttivi. E come sempre, per favore fatemi sapere cosa ne pensate.
John Ponte ha scritto: Sandeep, il link postato nel mio precedente ... John Ponte ha scritto:
Sandeep, il collegamento pubblicato nella mia risposta precedente è un collegamento a un video che descrive la tecnica ( https://www.youtube.com/watch?v=wSkUwgNbv2g ). Puoi anche trovare del codice JSL su Scambio file JMP che ti aiuterà. Cerca ImageToDatatable.jsl in Script ( https://community.jmp.com/docs/DOC-6100 ). Questo ti mostrerà come aprire un'immagine e generare la tabella dei dati dai valori dei pixel. In alternativa, puoi usare Image Analyzer per generare la tabella dati per te ( https://community.jmp.com/docs/DOC-7181 ).
A proposito, se venite a Discovery (a Cary, NC tra due settimane) per favore vieni a parlare con me e io posso aiutarti. Sarò alle workstation degli sviluppatori e andrò in giro.
Sandeep ha scritto: John, c'è un video tutorial che tu ... Sandeep ha scritto:
John, c'è un video tutorial che hai fatto per me per imparare questa tecnica?
John Ponte ha scritto: A proposito, JMP ha rilasciato un video su YouTube ... John Ponte ha scritto:
A proposito, JMP ha pubblicato un video su YouTube di me che descrive il processo di analisi del piede dell'elefante. Contiene maggiori dettagli sul processo. Se hai trovato interessante questo post, potresti anche goderti il video.
Può essere trovato qui: https://www.youtube.com/watch?v=wSkUwgNbv2g
Godere!
John Ponte ha scritto: Rodrigo, JMP lavora in un col ... John Ponte ha scritto:
Rodrigo,
JMP funziona in uno spazio colore normalizzato, il che significa che tutti i valori sono compresi tra 0.0 e 1.0. Guardando la mia distribuzione per la tonalità, vedo che la maggior parte dei miei valori è inferiore a 0,125. Tuttavia, vedo anche alcuni valori sopra 0.9. Quindi mi dà un'idea di quali valori dovrei cercare per separare i miei colori.
Quello che devi fare, in JSL, è passare in rassegna ogni riga (che rappresenta un pixel) osservando il valore di tonalità e luce. Nel tuo caso, cercherai verde, giallo e marrone. Il giallo e il marrone hanno un valore molto simile per la tonalità, poiché sono entrambi costituiti da una quantità uguale di rosso e verde. Si distinguono per la loro luminosità, o in questo caso il valore della luce. Il giallo avrà un valore più alto per la leggerezza rispetto al marrone. Il verde avrà un valore di tonalità più alto rispetto al giallo e al marrone. Quindi, usando i valori di tonalità e luminosità, dovresti essere in grado di distinguere i colori.
Guarda la tua distribuzione per la luce e vedi se hai tre raggruppamenti in qualche modo distinti. I valori più alti sono probabilmente i tuoi pixel gialli, i valori più bassi sono probabilmente i tuoi pixel marroni e quelli intermedi sono probabilmente i tuoi pixel verdi. Inizia con quello e vedi se questo ti dà la risposta giusta. Puoi produrre una nuova immagine nello stesso modo in cui ho fatto con il piede di elefante per convalidare la tua risposta. Se non ottieni la risposta giusta, puoi modificare i tuoi intervalli di valori nei tuoi confronti.
Spero che questo possa essere d'aiuto!
Rodrigo ha scritto: Caro John, ho seguito la tua sceneggiatura e ho ... Rodrigo ha scritto:
Caro John,
Ho seguito il tuo script e ottenuto i valori dei pixel per H, L, S. Ora, ho bisogno di elaborare ogni pixel e riconoscere ciò che è verde, giallo e marrone. Come faccio questo? Mi sono perso in questa parte: "Guardando le mie distribuzioni, posso fare una buona ipotesi su quali valori cercare nei miei dati per identificare quali pixel sono marrone, arancione o bianco. Elaboro ogni pixel, rappresentato da una fila di dati nella mia tabella di dati, e sono in grado di categorizzare ciascuno di essi. Quindi posso segnalare i miei risultati. "
Qualsiasi consiglio sarà apprezzato. Grazie!
John Ponte ha scritto: In una parola: manualmente! Ricevo un sacco di ... John Ponte ha scritto:
In una parola - manualmente! Ricevo molte immagini da persone che chiedono come possono identificare un'area di interesse all'interno dell'immagine. Sfortunatamente non posso dedicare il tempo necessario o necessario per sviluppare una soluzione completa. Così provo a dare loro una soluzione rapida insieme a idee su come potrebbero svilupparlo ulteriormente. La soluzione rapida era semplicemente oscurare lo sfondo usando un altro pacchetto software (io ho usato Gimp). Ma in JMP / JSL potresti sviluppare diverse tecniche per il rilevamento dei bordi che potrebbero identificare il bordo del piede dell'elefante per te. In effetti, ne ho dimostrato un esempio in alcuni lavori che ho fatto per WildTrack, in cui identificano l'impronta di un animale in un'immagine. Puoi trovare un video su questo qui: http://www.youtube.com/watch?v=VjjcdCDXx9M
Scott ha scritto: Ottimo lavoro John! Sono sorpreso che JMP possa ... Scott ha scritto:
Ottimo lavoro John! Sono sorpreso che JMP possa essere usato per applicazioni così diverse.
Sono curioso di sapere come hai rimosso lo sfondo dell'immagine. Come hai identificato i pixel di sfondo quando lo sfondo non è uniforme?
John Ponte ha scritto: Beh, prima lascia che io disprezzi il mito che ... John Ponte ha scritto:
Bene, prima lasciami dissipare il mito che sono un esperto! Anche se, se vedi il mio capo, ti incoraggio a dirgli che pensi che io sia. E grazie per averlo detto.
In secondo luogo, mentre conosco MATLAB, non mi sento di conoscerne abbastanza per fare un valido confronto tra i due prodotti. Ho parlato con un numero di utenti JMP che usano MATLAB e sembrano soddisfatti. A quegli utenti (avviso teaser), assicurati di controllare alcune delle nuove funzionalità nella versione 11 di JMP.
Oltre alle capacità statistiche, una delle funzionalità che mi piace molto in JMP è il linguaggio di scripting di JMP, JSL. Questo post mostra come portare un'immagine in JMP e convertirla in una tabella dati usando JSL. Una volta che hai l'immagine come dati, hai a disposizione tutta la potenza statistica di JMP. Ad esempio, è possibile analizzare l'immagine utilizzando Analisi discriminante o Clustering. Attualmente sto leggendo un libro su questo argomento. Si chiama Measuring Shape, di F. Brent Neal e John C. Russ. Quindi penso che la combinazione di queste caratteristiche rende JMP un potente strumento per l'elaborazione delle immagini. Permette all'utente di creare le proprie soluzioni senza dover realmente implementare la funzionalità.
Amit Bothra ha scritto: Ciao John, ottimo post. Sono stupito con ... amit bothra ha scritto:
Ciao John,
ottimo post. Sono stupito dalle capacità di JMP. Come esperto, come confrontare le capacità di elaborazione delle immagini di JMP con alcuni software dedicati come Matlab.
Sky & Zoe ha scritto: Questo è un grande esempio di come l'analisi ... Sky e Zoe ha scritto:
Questo è un grande esempio di come il potere analitico di JMP possa essere utilizzato per migliorare il processo decisionale nel trattamento della patologia. Tanto l'imaging medico dipende ancora dalla valutazione visiva di esperti piuttosto che dalla quantificazione.
Questa applicazione, una volta perfezionata, potrebbe avere una grande applicazione nella standardizzazione delle valutazioni sul modo in cui la guarigione delle ferite sta progredendo (o meno) nel tempo. John ha un vero talento per pensare fuori dagli schemi e crediamo che il lavoro che sta facendo per l'imaging JMP avrà un'enorme applicazione in una vasta gamma di aree.
John Ponte ha scritto: Sono rimasto un po 'sorpreso quando la risposta c ... John Ponte ha scritto:
Sono rimasto un po 'sorpreso quando la risposta è stata del 50% normale. Ma poi mi sono reso conto che le aree danneggiate (arancione e bianco) appaiono come aree più grandi dove le aree buone (marrone) appaiono come sezioni più piccole, più lunghe e avvolte attorno alle aree danneggiate. Penso che quando vedi un sacco di aree più piccole e aree meno grandi, la percezione è che le aree più grandi si sommano per essere più grandi.
Un calcolo degli errori è una buona idea. Questa era la mia soluzione rapida (ma utilizzabile) per il cliente. Insieme a questa soluzione ho dato loro una serie di idee su come migliorarlo. Non volevo portar via tutto il loro divertimento.
Grazie per i commenti!
Scott Moore ha scritto: Molto bello. Un paio di pensieri. L'e ... Scott Moore ha scritto:
Molto bello Un paio di pensieri. L'occhio è abbastanza bravo nell'analizzare i modelli. Avrei pensato che il marrone fosse più vicino al 35 percento guardando l'immagine. Sarebbe stato interessante se tu avessi fatto un'ipotesi prima della tua analisi, poi confrontato. Mi piacerebbe anche vedere una sorta di calcolo degli errori. Ottimo processo e un ottimo modo per risolvere un problema.