Ich habe eine Reihe von Bildern, die die mittlere Krümmung einer menschlichen Rückenfläche darstellen.
Was ich tun möchte, ist, das Bild nach Punkten zu "scannen", die ähnliche, reflektierte "Gegenstücke" in einem anderen Teil des Bildes haben (höchstwahrscheinlich symmetrisch zur Mittellinie, aber nicht unbedingt, da es Deformitäten geben könnte). Einige Bildstichtechniken verwenden dies, um ähnliche Punkte zwischen Bildern automatisch zu erkennen, aber ich möchte sie für beide Seiten desselben Bildes erkennen.
Das ultimative Ziel ist es, eine kontinuierliche, höchstwahrscheinlich gekrümmte Längslinie zu finden, die den Rücken adaptiv in symmetrische "Hälften" unterteilt.
Ein Beispielbild ist unten platziert. Beachten Sie, dass nicht alle Bereiche symmetrisch sind (insbesondere weicht der rote vertikale "Streifen" direkt über der Bildmitte nach rechts ab). Diese Region sollte eine schlechte Bewertung erhalten, oder was auch immer, aber dann würde die lokale Symmetrie aus weiter entfernten symmetrischen Punkten definiert. In jedem Fall muss ich jeden Algorithmus an meine Anwendungsdomäne anpassen, aber ich bin auf der Suche nach einer Korrelations- / Faltungs- / Mustervergleichsstrategie. Ich denke, es muss bereits etwas in der Nähe sein.
(BEARBEITEN: Es gibt mehr Bilder unten und einige weitere Erklärungen)
BEARBEITEN: wie gewünscht, werde ich mehr typische Bilder einfügen, entweder gut erzogen oder problematisch. Anstelle von farbabgebildeten Bildern handelt es sich jedoch um Graustufenbilder, sodass die Farbe in direktem Zusammenhang mit der Datengröße steht, was bei farbigen Bildern nicht der Fall war (nur zur Kommunikation vorgesehen). Obwohl die grauen Bilder im Vergleich zu den farbigen scheinbar keinen Kontrast aufweisen, sind die Datengradienten vorhanden und können auf Wunsch mit einem adaptiven Kontrast versehen werden.
1) Bild eines sehr symmetrischen Motivs:
2) Bild des gleichen Motivs zu einem anderen Zeitpunkt. Obwohl es mehr "Features" (mehr Farbverläufe) gibt, "fühlt" es sich nicht so symmetrisch an wie zuvor:
3) Ein dünnes junges Motiv mit Konvexitäten (knöchernen Vorsprüngen, bezeichnet durch hellere Regionen) in der Mittellinie anstelle der häufigeren konkaven Mittellinie:
4) Ein Jugendlicher mit röntgenologisch bestätigter Wirbelsäulenabweichung (Asymmetrien beachten):
5) Das typische "gekippte" Objekt (obwohl es meistens symmetrisch um die gekrümmte Mittellinie liegt und als solches nicht richtig "deformiert" ist):
Jede Hilfe ist herzlich willkommen!
quelle
Antworten:
Wie ich in den Kommentaren gesagt habe, ist die Registrierung von medizinischen Bildern ein Thema, zu dem es viele Nachforschungen gibt, und ich bin kein Experte. Nach dem, was ich gelesen habe, besteht die häufig verwendete Grundidee darin, eine Zuordnung zwischen zwei Bildern (in Ihrem Fall ein Bild und sein Spiegelbild) zu definieren, dann Energiebegriffe für die Glätte und für die Bildähnlichkeit zu definieren, wenn die Zuordnung angewendet wird, und schließlich Optimieren Sie dieses Mapping mithilfe standardmäßiger (oder manchmal anwendungsspezifischer) Optimierungstechniken.
Ich habe in Mathematica einen schnellen Algorithmus gehackt, um dies zu demonstrieren. Dies ist kein Algorithmus, den Sie in einer medizinischen Anwendung verwenden sollten, sondern nur eine Demonstration der Grundideen.
Zuerst lade ich dein Bild, spiegele es und teile diese Bilder in kleine Blöcke auf:
Normalerweise würden wir eine ungefähre starre Registrierung durchführen (z. B. unter Verwendung von Schlüsselpunkten oder Bildmomenten), aber Ihr Bild ist fast zentriert, sodass ich dies überspringe.
Wenn wir uns einen Block und sein spiegelbildliches Gegenstück ansehen:
Wir können sehen, dass sie ähnlich, aber verschoben sind. Das Ausmaß und die Richtung der Verschiebung versuchen wir herauszufinden.
Um die Übereinstimmungsähnlichkeit zu quantifizieren, kann ich den quadratischen euklidischen Abstand verwenden:
Leider war die direkte Optimierung unter Verwendung dieser Daten schwieriger als ich dachte, daher habe ich stattdessen eine Approximation 2. Ordnung verwendet:
Die Funktion ist nicht mit der eigentlichen Korrelationsfunktion identisch, reicht jedoch für einen ersten Schritt aus. Berechnen wir dies für jedes Blockpaar:
Dies gibt uns unseren ersten Energiebegriff für die Optimierung:
variablesX/Y
enthält die Offsets für jeden Block undmatchEnergyFit
approximiert die quadratische euklidische Differenz zwischen dem Originalbild und dem gespiegelten Bild, wobei die Offsets angewendet werden.Die Optimierung dieser Energie allein würde schlechte Ergebnisse liefern (wenn sie überhaupt konvergiert). Wir möchten auch, dass die Offsets glatt sind, wobei die Blockähnlichkeit nichts über den Offset aussagt (z. B. entlang einer geraden Linie oder im weißen Hintergrund).
Also haben wir einen zweiten Energiebegriff für die Glätte aufgestellt:
Glücklicherweise ist in Mathematica eine eingeschränkte Optimierung integriert:
Schauen wir uns das Ergebnis an:
Der
0.1
vorhergehende FaktorsmoothnessEnergy
ist das relative Gewicht, das die Glättungsenergie in Bezug auf den Bildanpassungsenergieterm erhält. Dies sind Ergebnisse für verschiedene Gewichte:Mögliche Verbesserungen:
quelle
Interessante Frage. Erstens, vielleicht suchen Sie nach Ansätzen, die auf dem Erkennen und Anpassen von Schlüsselpunkten basieren. Dies umfasst SIFT (Skaleninvariante Feature-Transformation), SURF, ORB usw. oder sogar einen einfacheren Ansatz, der ausschließlich auf dem Harris-Operator basiert (csce.uark.edu/~jgauch/library/Features/Harris.1988.pdf) ). Aus Ihrem Beitrag geht nicht hervor, was Sie versucht haben. Es tut mir leid, wenn ich hier naiv bin.
Gestatten Sie mir zum Spaß einen einfacheren Ansatz mit Mathematical Morphology (MM) :) Bilder zur Visualisierung aller Schritte sind am Ende.
Ich habe Ihr Beispielbild genommen und es mit ImageMagick in den L a b * -Farbraum konvertiert und nur das L * -Band verwendet:
0.png entspricht dem L * -Band. Jetzt bin ich sicher, dass Sie die tatsächlichen Bilddaten haben, aber ich beschäftige mich mit JPG-Komprimierungsartefakten und was nicht. Um dieses Problem teilweise zu lösen, führte ich eine morphologische Öffnung durch, gefolgt von einer morphologischen Schließung mit einer flachen Scheibe mit Radius 5. Dies ist eine grundlegende Methode zur Reduzierung des Rauschens mit MM, und angesichts des Scheibenradius wird nicht viel am Bild geändert. Als nächstes basierte meine Idee auf diesem einzelnen Bild, das in anderen Fällen mit großer Wahrscheinlichkeit versagt. Ihre Region von Interesse zeichnet sich optisch dadurch aus, dass sie dunkler ("heißer" in Ihrem Farbbild) ist. Ich nahm also an, dass ein statistisch basierter Binärbildschirm eine gute Leistung bringen könnte. Ich habe den automatischen Ansatz von Otsu verwendet.
An dieser Stelle ist es möglich, den zentralen interessierenden Bereich klar zu visualisieren. Das Problem ist, dass ich in meinem Ansatz wollte, dass es eine geschlossene Komponente ist, aber nicht. Ich beginne damit, jede verbundene Komponente zu verwerfen, die kleiner als die größte ist (Hintergrund zählt nicht dazu). Dies hat eine größere Chance, in anderen Fällen zu funktionieren, wenn das Binärergebnis gut war. In Ihrem Beispielbild ist eine Komponente mit dem Hintergrund verbunden, sodass sie nicht verworfen wird, aber keine Probleme verursacht.
Wenn Sie mir noch folgen, müssen wir noch die eigentliche vermeintliche zentrale Region von Interesse finden. Hier ist meine Meinung dazu. Egal wie gekrümmt die Person ist (tatsächlich kann ich bestimmte Problemfälle sehen), die Region ähnelt einer vertikalen Linie. Zu diesem Zweck vereinfache ich das aktuelle Bild, indem ich eine morphologische Öffnung mit einer vertikalen Linie der Länge 100 durchführe. Diese Länge ist rein willkürlich. Wenn Sie keine Skalierungsprobleme haben, ist dies kein schwer zu bestimmender Wert. Jetzt verwerfen wir wieder Komponenten, aber ich war bei diesem Schritt etwas vorsichtiger. Ich habe das Öffnen nach Bereichen mit dem Bildkomplement verwendet, um die von mir als klein geltenden Bereiche zu verwerfen. Dies könnte auf kontrollierte Weise geschehen, indem etwas in Form einer Granulometrieanalyse (auch von MM) durchgeführt wird.
Wir haben jetzt ungefähr drei Teile: den linken Teil des Bildes, den mittleren Teil und den rechten Teil des Bildes. Es wird erwartet, dass der zentrale Teil die kleinere Komponente der drei ist, so dass er trivial erhalten wird.
Hier ist das Endergebnis: Das Bild unten rechts ist nur das Bild, das mit dem Originalbild links überlagert ist. Die einzelnen Figuren stimmen nicht alle überein, sorry für die Eile.
quelle