Bildanalyse eines Elefantenfußes in JMPDies ist ein Bild von der Unterseite eines Elefantenfußes. Wie Sie sich vielleicht beim Betrachten dieses Bildes vorstellen können, ist dies kein sehr glücklicher Elefant. In Gefangenschaft gehaltene Elefanten gehen oft auf Gehsteigen oder anderen harten Oberflächen. Dies ist nicht das Substrat, an das sie gewöhnt sind, und es ist nicht das, wofür ein Elefantenfuß konzipiert wurde. Folglich hat dieser Elefant Wunden an seinem Fuß entwickelt, und in einigen Fällen haben sich diese Wunden sogar infiziert. Der Hausmeister für diesen Elefanten bietet Behandlungen an, aber der Elefant läuft weiter auf seinem Fuß und verursacht weitere Schäden. Der Hausmeister fragt sich also, ob die Behandlungen überhaupt helfen.

Ich erhielt eine Kopie dieses Fotos mit dieser Frage zur Bildanalyse: Gibt es eine Möglichkeit, den Zustand des Fußes quantitativ zu messen, so dass im Laufe der Zeit festgestellt werden kann, ob sich die Behandlung positiv auswirkt?
Beim Betrachten des Bildes sehe ich, dass alle Bereiche des Fußes im Wesentlichen in eine von drei Kategorien fallen:
Es gibt Bereiche, die bräunlich sind und die normale Farbe des Elefantenfußes darstellen. Diese Bereiche sind gesund.Es gibt Bereiche, die etwas Orange enthalten. Das sind die Bereiche, die Wunden entwickelt haben.Dann gibt es die weißlichen Bereiche innerhalb der Wunden. Dies sind die Bereiche, in denen sich die Wunden zu einer Infektion entwickelt haben und jetzt voller Puss sind.Durch die Kategorisierung des gesamten Fußes in diese drei Eimer konnte ich ein Gefühl für den Zustand des Fußes bekommen. Es ist wichtig, den Hintergrund und die Bereiche im Bild zu ignorieren, die den Fuß nicht zeigen, um die Ergebnisse nicht zu verzerren.
Ich habe das Bild in JSL (JMP Scripting Language) gelesen und die Pixelwerte aus dem Bild erhalten rot . Grün und Blau ( RGB ) Werte als separate Matrizen. Ich könnte dann diese einzelnen Matrizen in eine Matrix umwandeln, die alle drei Farbkomponenten darstellt.
img = neues Bild ( "elephantFoot.jpg" );
{r, g, b} = img << getPixels ( "rgb" );
colr = RGBColor (r, g, b);
Häufig ist es jedoch besser, Farben in einem anderen Farbschema als RGB zu analysieren. Ich möchte also wirklich die Farben in einem Farbschema nennen HLS , welches dafür steht Farbton . Leichtigkeit und Sättigung . Der Farbton ist im Wesentlichen der Farbton der Farbe, die Helligkeit ist die Helligkeit und die Sättigung ist, wie viel Farbe vorhanden ist, im Gegensatz zu wie viel Weiß. Glücklicherweise bietet JMP eine Methode zum Konvertieren von RGB nach HLS.
{Farbton, beleuchtet, gesessen} = ColorToHLS (colr);
Nun, da ich meine Farbe in HLS habe, kann ich eine JMP-Datentabelle mit meinen Pixelwerten erstellen.
dt = Neue Tabelle ( "Pixeldaten" .
newColumn ( "Farbton" , Einstellwerte (Farbton)),
newColumn ( "Zündete" , eingestellte Werte (leuchtet),
newColumn ( "Sat" , Werte setzen (sat))
);
Der Grund dafür ist, dass ich die statistische Leistungsfähigkeit von JMP zur Analyse meiner Daten nutzen kann. Ich bin neugierig auf die Aufteilung meiner Farbwerte, also entschied ich mich, eine zu erstellen Verteilung von jeder der Farbkomponenten.
Verteilung (fortlaufende Verteilung ( Säule (: Farbton), Outlier Box Plot ( 0 )));
Verteilung (fortlaufende Verteilung ( Säule (: leuchtet), Outlier Box Plot ( 0 )));
Verteilung (fortlaufende Verteilung ( Säule (: sat), Outlier Box Plot ( 0 )));
Hier ist das Ergebnis.

Wenn ich mir meine Distributionen ansehe, kann ich gut raten, nach welchen Werten in meinen Daten gesucht werden muss, um zu ermitteln, welche Pixel braun, orange oder weiß sind. Ich verarbeite jedes Pixel, dargestellt durch eine Datenzeile in meiner Datentabelle, und ich kann jedes Pixel kategorisieren. Ich kann dann meine melden Ergebnisse .

Um meinen Bericht zu erstellen, habe ich alle meine fehlenden Werte (alle Pixel, die den Hintergrundbereich darstellten) ausgewählt und sie so eingestellt, dass sie ausgeblendet / ausgeschlossen werden. Ich habe dann aus meiner Pixeldatentabelle eine Übersichtstabelle generiert. Ich kann dann den Graph Builder verwenden, um mein Diagramm zu generieren.
Das Ergebnis ist, dass ungefähr die Hälfte des Fußes in gutem Zustand ist. Für die Hälfte, die nicht normal ist, haben etwa 30% Wunden entwickelt, und die anderen 20% sind infiziert. Wir haben jetzt ein quantifizierbares Maß für den Zustand des Fußes. Auf diese Weise können wir im Laufe der Zeit den Zustand des Fußes bestimmen und wissen, ob die Behandlungen helfen.
Das Bild des Elefantenfußes kam mir durch eine Organisation namens WildTrack . WildTrack widmet sich der Erhaltung bedrohter Tierarten sowie dem allgemeinen Wohlbefinden von Tieren in freier Wildbahn.
WildTrack ist ein JMP-Kunde, der in einem kommenden Webcast vorgestellt wird. Analytisch sprechen . Wenn Sie diesen Blogbeitrag interessant fanden, empfehle ich Sie, sich zu registrieren und am Webcast teilzunehmen. Ich kann Ihnen versichern, dass ihre Gespräche immer faszinierend und informativ sind. Und wie immer, lassen Sie mich wissen, was Sie denken.
John Ponte hat geschrieben: Sandeep, der Link in meinem vorherigen ... John Ponte schrieb:
Sandeep, der Link in meiner vorherigen Antwort ist ein Link zu einem Video, das die Technik beschreibt ( https://www.youtube.com/watch?v=wSkUwgNbv2g ). Sie können auch JSL-Code in JMP File Exchange finden, der Ihnen dabei helfen wird. Suchen Sie nach ImageToDatatable.jsl unter Scripts ( https://community.jmp.com/docs/DOC-6100 ). Hier erfahren Sie, wie Sie ein Bild öffnen und aus den Pixelwerten die Datentabelle generieren. Alternativ können Sie den Image Analyzer verwenden, um die Datentabelle für Sie zu generieren ( https://community.jmp.com/docs/DOC-7181 ).
Übrigens, wenn Sie zu Discovery kommen (in zwei Wochen in Cary, NC), kommen Sie bitte mit mir und ich kann Ihnen helfen. Ich werde an den Developer-Workstations sein und durch die Gegend laufen.
Sandeep hat geschrieben: John, gibt es ein Tutorial-Video, das Sie h ... Sandeep schrieb:
John, gibt es ein Tutorial-Video, das du für mich gemacht hast, um diese Technik zu erlernen?
John Ponte hat geschrieben: Übrigens hat JMP ein YouTube-Video veröffentlicht ... John Ponte schrieb:
JMP hat übrigens ein YouTube-Video von mir veröffentlicht, in dem der Prozess der Analyse des Fußes des Elefanten beschrieben wird. Es enthält weitere Details zum Prozess. Wenn Sie diesen Beitrag interessant fanden, können Sie auch das Video genießen.
Es kann hier gefunden werden: https://www.youtube.com/watch?v=wSkUwgNbv2g
Genießen!
John Ponte hat geschrieben: Rodrigo, JMP arbeitet in einer normal ... John Ponte schrieb:
Rodrigo,
JMP arbeitet in einem normalisierten Farbraum, dh alle Werte liegen zwischen 0,0 und 1,0. Wenn ich meine Verteilung nach Farbton betrachte, sehe ich, dass die meisten meiner Werte unter 0,125 liegen. Ich sehe jedoch auch einige Werte über 0,9. Das gibt mir eine Vorstellung davon, nach welchen Werten ich meine Farben trennen sollte.
Was Sie in JSL tun müssen, ist eine Schleife durch jede Zeile (die ein Pixel darstellt), wobei Sie den Wert für Farbton und Licht betrachten. In Ihrem Fall suchen Sie nach Grün, Gelb und Braun. Gelb und Braun haben einen sehr ähnlichen Wert für den Farbton, da beide zu gleichen Teilen aus Rot und Grün bestehen. Sie unterscheiden sich durch ihre Helligkeit oder in diesem Fall den Lichtwert. Gelb hat einen höheren Helligkeitswert als Braun. Grün hat einen höheren Farbtonwert als Gelb und Braun. Wenn Sie also die Farbton- und Helligkeitswerte verwenden, sollten Sie die Farben unterscheiden können.
Schauen Sie sich Ihre Verteilung nach Licht an und prüfen Sie, ob Sie drei verschiedene Gruppen haben. Die höchsten Werte sind wahrscheinlich Ihre gelben Pixel, die niedrigsten Werte sind wahrscheinlich Ihre braunen Pixel und die dazwischen liegenden sind wahrscheinlich Ihre grünen Pixel. Beginnen Sie damit und sehen Sie, ob Sie die richtige Antwort erhalten. Sie können ein neues Bild auf dieselbe Weise wie mit dem Elefantenfuß erstellen, um Ihre Antwort zu bestätigen. Wenn Sie nicht die richtige Antwort erhalten, können Sie Ihre Wertebereiche in Ihren Vergleichen anpassen.
Ich hoffe das hilft!
Rodrigo hat geschrieben: Lieber John, ich folgte deinem Skript und bekam ... Rodrigo schrieb:
Lieber John,
Ich bin Ihrem Skript gefolgt und habe die Pixelwerte für H, L, S erhalten. Jetzt muss ich jedes Pixel verarbeiten und erkennen, was grün, gelb und braun ist. Wie mache ich das? Ich verliere mich in diesem Teil: "Wenn ich mir meine Distributionen anschaue, kann ich gut raten, nach welchen Werten in meinen Daten gesucht werden muss, um zu ermitteln, welche Pixel braun, orange oder weiß sind. Ich verarbeite jedes Pixel, dargestellt durch eine Datenzeile in meiner Datentabelle, und ich kann jedes Pixel kategorisieren. Ich kann dann meine Ergebnisse melden. "
Jeder Rat wird geschätzt. Vielen Dank!
John Ponte hat geschrieben: In einem Wort - manuell! Ich bekomme viele ... John Ponte schrieb:
In einem Wort - manuell! Ich erhalte viele Bilder von Leuten, die mich fragen, wie sie einen Interessenbereich innerhalb des Bildes identifizieren können. Leider kann ich nicht so viel Zeit aufwenden, wie ich eine komplette Lösung entwickeln möchte oder muss. Deshalb versuche ich, ihnen eine schnelle Lösung zu geben, zusammen mit Ideen, wie sie diese weiterentwickeln können. Die schnelle Lösung bestand darin, den Hintergrund mit einem anderen Softwarepaket (ich verwendete Gimp) einfach auszublenden. In JMP / JSL können Sie jedoch verschiedene Techniken zur Kantenerkennung entwickeln, die die Fußkante des Elefanten für Sie identifizieren könnten. In der Tat habe ich dies in einigen Arbeiten gezeigt, die ich für WildTrack gemacht habe, wo sie den Fußabdruck eines Tieres in einem Bild identifizieren. Ein Video dazu finden Sie hier: http://www.youtube.com/watch?v=VjjcdCDXx9M
Scott hat geschrieben: Gute Arbeit, John! Ich bin überrascht, dass JMP ... Scott schrieb:
Großartige Arbeit, John! Ich bin überrascht, dass JMP für so unterschiedliche Anwendungen verwendet werden kann.
Ich bin gespannt, wie Sie den Hintergrund des Bildes entfernt haben. Wie haben Sie Hintergrundpixel identifiziert, wenn der Hintergrund nicht einheitlich ist?
John Ponte hat geschrieben: Nun, lassen Sie mich zuerst den Mythos zerstreuen, dass ... John Ponte schrieb:
Nun, lassen Sie mich zuerst den Mythos zerstreuen, dass ich ein Experte bin! Wenn Sie meinen Chef sehen, ermutige ich Sie, ihm zu sagen, dass Sie denken, dass ich bin. Und danke, dass du es sagst.
Zweitens, obwohl ich mit MATLAB vertraut bin, habe ich nicht das Gefühl, genug darüber zu wissen, um einen validen Vergleich zwischen den beiden Produkten anzustellen. Ich habe mit einer Reihe von JMP-Benutzern gesprochen, die ebenfalls MATLAB verwenden, und sie scheinen zufrieden damit zu sein. Um diese Benutzer (Teaser-Alarm) zu testen, sollten Sie sich einige der neuen Funktionen in Version 11 von JMP ansehen.
Neben den statistischen Fähigkeiten ist JMPs Skriptsprache JSL eine der Funktionen, die ich in JMP wirklich mag. Dieser Beitrag zeigt, wie Sie ein Bild in JMP einfügen und es mithilfe von JSL in eine Datentabelle konvertieren. Sobald Sie das Bild als Daten haben, stehen Ihnen alle statistischen Möglichkeiten von JMP zur Verfügung. Jetzt können Sie Ihr Bild analysieren, indem Sie beispielsweise Diskriminanzanalyse oder Clustering verwenden. Ich lese gerade ein Buch zu diesem Thema. Es wird Measuring Shape von F. Brent Neal und John C. Russ genannt. Ich denke, die Kombination dieser Funktionen macht JMP zu einem leistungsstarken Werkzeug für die Bildverarbeitung. Der Benutzer kann seine eigenen Lösungen erstellen, ohne die Funktionalität tatsächlich implementieren zu müssen.
amit bothra hat geschrieben: Hallo John, toller Beitrag. Ich bin begeistert von ... Amit Bothra schrieb:
Hallo John,
guter Eintrag. Ich bin erstaunt über die Möglichkeiten von JMP. Wie würden Sie als Experte die Bildverarbeitungsfunktionen von JMP mit speziellen Softwareprodukten wie Matlab vergleichen?
Sky & Zoe hat geschrieben: Dies ist ein großartiges Beispiel dafür, wie die Analyse ... Sky & Zoe schrieb:
Dies ist ein hervorragendes Beispiel dafür, wie die analytische Leistungsfähigkeit von JMP genutzt werden könnte, um die Entscheidungsfindung bei der Behandlung von Pathologien zu verbessern. So viel medizinisches Imaging ist immer noch von der visuellen Beurteilung durch Experten und nicht von der Quantifizierung abhängig.
Sobald diese Anwendung verfeinert wurde, könnte sie eine große Anwendung bei der Standardisierung von Bewertungen des Verlaufs der Wundheilung (oder auf andere Weise) im Laufe der Zeit finden. John hat ein echtes Talent, um über den Tellerrand zu denken, und wir glauben, dass die Arbeit, die er für JMP-Imaging leistet, eine große Anwendung in einer ganzen Reihe von Bereichen haben wird.
John Ponte hat geschrieben: Ich war ein bisschen überrascht, als die Antwort ... John Ponte schrieb:
Ich war ein bisschen überrascht, als sich die Antwort auch zu ungefähr 50% als normal herausstellte. Aber dann wurde mir klar, dass die schlechten Bereiche (orange und weiß) als größere Bereiche erscheinen, während die guten Bereiche (braun) als kleinere Bereiche erscheinen, die länger sind und die schlechten Bereiche umschließen. Ich denke, wenn Sie viele kleinere Bereiche und weniger große Bereiche sehen, ist die Wahrnehmung, dass die größeren Bereiche größer werden.
Eine Fehlerberechnung ist eine gute Idee. Dies war meine schnelle (aber brauchbare) Lösung für den Kunden. Zusammen mit dieser Lösung gab ich ihnen eine Reihe von Ideen, wie sie diese verbessern könnten. Ich wollte ihren ganzen Spaß nicht mitnehmen.
Danke für die Kommentare!
Scott Moore hat geschrieben: Sehr cool. Ein paar Gedanken. Die e ... Scott Moore schrieb:
Sehr cool. Ein paar Gedanken. Das Auge ist ziemlich gut darin, Muster zu analysieren. Ich hätte gedacht, dass das Braun näher bei 35 Prozent liegt. Es wäre interessant gewesen, wenn Sie vor Ihrer Analyse zuerst eine Hypothese aufgestellt und dann verglichen hätten. Ich möchte auch eine Art Fehlerberechnung sehen. Sehr guter Prozess und ein guter Weg, um ein Problem zu lösen.