Ich habe viel recherchiert und Methoden wie adaptives Thresholding, Wasserscheide usw. herausgefunden, mit denen sich Venen in Blättern nachweisen lassen. Die Schwellenwerte sind jedoch nicht gut, da sie viel Lärm verursachen
Alle meine Bilder sind Graubilder, bitte könnte jemand vorschlagen, welche Ansätze zu übernehmen sind, während ich dieses Problem in Betracht ziehe, das dringend Hilfe benötigt
EDIT: Mein Originalbild
Nach dem Schwellenwert
Wie in der Antwort vorgeschlagen, habe ich die folgende Kantenerkennung versucht
- Canny
Zu viel Lärm und unerwünschte Störungen
- Sobel
- Roberts
BEARBEITEN: Versuchte eine weitere Operation, ich erhalte das folgende Ergebnis, das besser ist als das, was ich mit schlau und anpassungsfähig versucht habe. Was fühlst du?
Antworten:
Sie sind nicht auf der Suche nach Kanten (= Grenzen zwischen ausgedehnten Gebieten mit hohem und niedrigem Grauwert), sind Sie auf der Suche nach Stegen (dünne Linien , die dunkler oder heller als ihre Umgebung), so Kantenfilter nicht ideal sein könnte: Ein Kantenfilter wird Gib dir zwei Flanken (eine auf jeder Seite der Linie) und eine niedrige Reaktion in der Mitte der Linie:
ADD : If've gebeten worden , den Unterschied zwischen einem Kantendetektor und ein Grat Detektor deutlicher zu erklären. Ich entschuldige mich im Voraus, wenn diese Antwort sehr lang wird.
Ein Kantendetektor ist (normalerweise) ein Operator der ersten Ableitung: Wenn Sie sich das Eingabebild als 3D-Landschaft vorstellen, misst ein Kantendetektor die Steilheit der Steigung an jedem Punkt dieser Landschaft:
Wenn Sie den Rand eines erweiterten hellen oder dunklen Bereichs erkennen möchten, ist dies in Ordnung. Aber für die Venen im OP-Bild erhalten Sie genau das Gleiche: die Umrisse links und rechts von jeder Vene:
Das erklärt auch das "doppelte Linienmuster" in den Ergebnissen des Canny-Kantendetektors:
Wie erkennt man dann diese dünnen Linien (dh Grate)? Die Idee ist, dass die Pixelwerte (lokal) durch ein Polynom 2. Ordnung angenähert werden können, dh wenn die Bildfunktion , dann für kleine Werte von und :g x y
oder in Matrixform:
Die Ableitungsmatrix zweiter Ordnung heißt " Hessische Matrix ". Es beschreibt die Struktur 2. Ordnung, an der wir interessiert sind.⎛⎝⎜∂2g∂x2∂2g∂x∂y∂2g∂x∂y∂2g∂y2⎞⎠⎟
Der Teil 2. Ordnung dieser Funktion kann in die Summe von zwei um einen bestimmten Winkel gedrehten Parabeln werden, indem die obige hessische Matrix in eine Rotation mal einer diagonalen Matrix ihrer Eigenwerte zerlegt wird ( Matrixzerlegung ). Wir kümmern uns nicht um die Rotation (wir möchten Kanten in jeder Ausrichtung erkennen), also sind wir nur an und interessiertλ1x2+λ2y2 λ1 λ2
Welche Formen kann diese Funktionsnäherung haben? Eigentlich nicht so viele:
Um Grate zu erkennen, möchten wir Bereiche im Bild finden, die wie der letzte der obigen Diagramme aussehen. Daher suchen wir nach Bereichen, in denen der Haupteigenwert des Hessischen (im Vergleich zum Nebeneigenwert) groß ist. Der einfachste Weg, dies zu erkennen, besteht darin, den Haupteigenwert für jedes Pixel zu berechnen - und genau das macht der Ridge-Filter unten.
Ein Firstfilter liefert wahrscheinlich bessere Ergebnisse. Ich habe Mathematics eingebaute Methode
RidgeFilter
(die den Haupteigenwert der Hessischen Matrix für jedes Pixel berechnet) in Ihrem Bild ausprobiert :Wie Sie sehen, gibt es für jede dünne dunkle Linie nur einen einzigen Peak. Ausbeuten binarisieren und skelettieren:
Nachdem ich das Skelett beschnitten und kleine Komponenten (Rauschen) aus dem Bild entfernt habe, erhalte ich das folgende endgültige Skelett:
Vollständiger Mathematica-Code:
HINZUFÜGEN:
Ich bin kein Matlab-Experte, ich weiß nicht, ob es einen eingebauten Kantenfilter gibt, aber ich kann Ihnen zeigen, wie Sie ihn "von Hand" implementieren (ebenfalls mit Matematica). Wie gesagt, der Gratfilter ist der Haupteigenwert der Hessischen Matrix. Diesen Eigenwert kann ich in Mathematica symbolisch berechnen:
=>12(Hxx+Hyy+H2xx+4H2xy−2HxxHyy+H2yy−−−−−−−−−−−−−−−−−−−−−−−√)
Sie müssen also die zweiten Ableitungen , , (mit einem Sobel oder einer Ableitung des Gaußschen Filters) berechnen und einfügen Geben Sie den Ausdruck oben ein und Sie haben Ihren Kantenfilter. H xy H yyHxx Hxy Hyy
quelle
Bei Verwendung der Canny-Kantenerkennung (in Halcon) mit Alpha = 1 und der unteren Schwelle 8 und der oberen Schwelle 13 (auf einer Skala von 1 bis 255) erhalte ich das folgende Ergebnis:
Durch die Optimierung der Parameter können Sie das Ergebnis von Canny deutlich verbessern. Mit diesem Bild können Sie die kurzen Kanten überspringen, um das Rauschen zu beseitigen, und die langen Kanten verbinden, um das Endergebnis zu erzielen.
Übrigens: Eine andere Farbe zeigt eine andere Kante an.
Mit diesem Online-Canny-Kantendetektor kann ich ein ziemlich ähnliches Ergebnis erzielen :
quelle
In Anlehnung an die obige hervorragende Antwort erfahren Sie hier, wie Sie mit Hilfe von Scikit-Funktionen in Python vorgehen.
quelle
img
soll sein Ich habe einepng
Datei und es funktioniert nicht.i1
der größere der Eigenwerte, so sollten Sie diesen verwenden.Anstelle von Schwellenwerten habe ich eine einfache Kantenerkennung angewendet.
Verwendetes GIMP mit Gaußscher Differenz - Radious Outer: 3.0 und Inner: 1.0.
Hier sieht es so aus.
Sie können außerdem einen Medianfilter oder eine Erosion / Dilatation anwenden, um körnige Geräusche zu entfernen.
Hier ist die Seite , die die Implementierung von gimp erklärt.
Sie sollten sich auf verschiedene Techniken beziehen, z. B. Laplace nach Gauß oder Differenz nach Gauß usw. Siehe hierzu: http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm#7
Und diese Antwort. Wie wird der Laplace für die Unscharfe Maske verwendet?
quelle
Dieses Thema hat seit jeher großes Interesse auf sich gezogen, und dennoch besteht kein wirklicher Konsens zu diesem Thema. Deshalb habe ich beschlossen, ein paar Worte fallen zu lassen.
Meine Antworten auf zuvor gestellte ähnliche Fragen zum Stapelaustausch ( Q1 und Q2 ) enthielten einen Subpixel-Algorithmus zur Extraktion krummliniger Strukturen von Steger. Diese Methode hat in vielen Fällen einigermaßen gute Ergebnisse erzielt, zum Glück auch diese. Deshalb poste ich das Ausgabebild hier: und hier mit einer anderen Parametereinstellung und ohne Verknüpfungsfarbe : Für die Details und korrekten Verweise siehe bitte die Stapelwechselpfosten, auf die ich verwiesen habe.
quelle
Im Rahmen meines letzten Studienjahres musste ich Segmentierungsmethoden für Blutgefäße in Augenhintergrundbildern untersuchen. Ich fand diese Baumrekonstruktionsmethode (von Cohen, Laurent D. und Mille, Julien) besonders interessant, um sie zusammen mit Fast-Marching-Methoden zu verwenden.
Weitere Artikel, die Sie möglicherweise lesen möchten:
Nützliche Links: - Frontausbreitung in 2D und 3D
Ich hoffe, das hilft ein bisschen, obwohl es nicht gerade auf dem neuesten Stand der Technik ist.
quelle