Finden Sie die Umrisse/ Grenzen der label-Bild in MATLAB
Ich Frage mich, ob es eine einfache Möglichkeit zu konvertieren label matrix in eine matrix, wo Sie Linien haben überall beiden markierten Regionen treffen und Nullen woanders, so dass man im Grunde überlagern die Grenzen der Regionen auf das ursprüngliche Bild, aus dem die Etiketten erzeugt wurden, als ein weiteres Visualisierungs-alternative zu der beliebten label2rgb Funktion.
Der Grund warum ich Frage ist, dass ich gerade auf Arbeit bin mit einigen superpixel-code, so habe ich viele beschriftet Regionen (500 bis 5000). Ich habe mit rgblabel zu konvertieren, die superpixel-Etiketten auf farbigen Regionen, drehen, halten, dann zeigt Sie über dem ursprünglichen Bild mit 'AlphaData' nach unten gedreht, um Sie semi-transparent. Jedoch, mit so vielen Regionen, kann dies schwierig sein zu analysieren, visuell und ich denke, dass einfach die Grenzen der Regionen besser funktionieren würde. Danke.
[EDIT] @O_O: ich habe schonmal ein Beispiel-label-matrix zusammen mit der Ziel-Ergebnis zwar bin ich jetzt Recht zufrieden mit dem Jonas ' s zweiten Vorschlag. Werde versuchen, die Methode von user616736 als gut in den nächsten Tag. Ich habe auch hochgeladen die Beispiel-Bilder in .mat-format hier im Fall, jemand will mit Ihnen zu Experimentieren.
Label-Matrix:
Gewünschte Ergebnis:
- Bitte geben Sie ein Beispiel, Bild wenn möglich! Ich kann nicht wirklich visualisieren, was Sie Fragen.
- beide Antworten, die Ihr problem lösen, obwohl user616736 das ist, was ich am häufigsten verwendet (einfach weil es weniger Linien, und die Absicht ist klar)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein Weg ist, um eine Schleife durch alle labels und beseitigen Sie alle, aber die Grenze, wie hier (wo
lblImg
ist Ihr label matrix)BEARBEITEN
Eine schnellere Methode zu finden, die Grenzen, ist die Verwendung des Gradienten des beschrifteten Bildes
lblImg(lblImg>0) = 1;
zu machen, die daraus resultierenden Kante binäres Bild. Gibt es eine Möglichkeit zu integrieren, die mit der LinielblImg((gx.^2+gy.^2)==0) = 0;
Rollen Sie in ein? Es ist ein kleines detail, so dass keine sorgen wenn nicht. Nochmals vielen Dank.lblImg = (lblImg > 0) & ((gx.^2+gy.^2)>0);
Wenn Sie Zugriff auf die image processing toolbox (ich nehme an, Sie tun, da Sie den Umgang mit den label-Matrizen) verwenden, können Sie die
edge
Funktion. Hier ist ein einfaches Beispielrice.png
ist Matlab das stock-Bild, so können Sie diesen code ausführen auf Ihrem Computer. Das Bild sieht so aus.Nun bekommen labelmatrix
lblMatrix
sieht wie folgt ausNun bekommen wir die Kanten der label-matrix. Hier habe ich die Laplace of Gaussian-Methode, aber Sie können einen anderen Algorithmus (siehe Hilfe für weitere Informationen)
Findet alle Kanten, die größer sind als
0
, das ist, was Sie brauchen. Sie können dann manipulieren Sie diese, aber Sie wollen, in Ihrer Verarbeitung und überlagerung auf der Oberseite der anderen Figuren. In der Praxis müssen Sie etwas höher als null, so dass Sie nicht bekommen, die kleinen Kreise (die sind nur wegen Lärm), und nur wiederherstellen, was Sie wollen. Sie können basteln und passen Sie die Schwelle zu etwas anderem, bis Sie es genau richtig. Dies kann zwar automatisiert werden, kann ich nicht viel sagen, ohne zu wissen, das eigentliche problem. Wie auch immer, dies ist nur um Ihnen den Einstieg in die richtige Richtung.edgeMatrix=edges(lblMatrix,'roberts',0);
Hier ist, was es sieht aus wie i.imgur.com/yUOEe.jpg Diese Methode liefert auch eine binäre map, so können Sie direkt in Ihrer Anwendung verwenden. Ich würde empfehlen, geht mit'roberts'
im Allgemeinen. Ich habe gerade'log'
aus der Spitze von meinem Kopf, als ein Beispiel.Schnelle follow-up:
Ich auch diese Frage stellte Steve Eddins' blog, und er angeboten eine sehr schnelle Möglichkeit zu finden, die Ränder der Beschriftung Bild:
Ich mag diese option, weil mein Hauptgrund für die Suche nach den Grenzen ist für die Visualisierung Zwecke, und das gibt etwas dicker Grenzen. Auch seine Funktion
imoverlay
ist ein praktischer Weg, um die Grenzen, die Sie gefunden haben auf der Oberseite des ursprünglichen Bildes ist, dass das Etikett generiert wurden, aus.