Suchen Sie in MATLAB nach Umrissen / Rändern des Beschriftungsbildes

8

Ich habe mich gefragt, ob es eine einfache Möglichkeit gibt, eine Etikettenmatrix in eine Matrix zu konvertieren, in der Linien an zwei Stellen übereinstimmen und an anderen Stellen Nullen enthalten, sodass Sie die Grenzen von Regionen auf das Originalbild der Etiketten überlagern können generiert als eine weitere Visualisierungsalternative zu der beliebten Funktion label2rgb.

Der Grund, warum ich frage, ist, dass ich gerade mit etwas Superpixel-Code arbeite, also habe ich viele markierte Regionen (500 bis 5.000). Ich habe rgbabel benutzt, um die Superpixel-Beschriftungen in farbige Bereiche umzuwandeln, indem ich sie festhielt und sie dann über dem Originalbild mit 'AlphaData' nach unten zeigte, um sie halbtransparent zu machen. Bei so vielen Regionen ist es jedoch schwierig, diese visuell zu analysieren, und ich denke, dass einfache Grenzen der Regionen besser funktionieren würden. Danke.

[EDIT] @O_O: Ich habe eine Muster-Etikett-Matrix mit dem Ziel-Ergebnis angefügt, obwohl ich jetzt mit dem zweiten Vorschlag von Jonas ziemlich zufrieden bin. Will am nächsten Tag auch die Methode von user616736 ausprobieren. Ich habe auch hier die Beispielbilder im .mat-Format hochgeladen, falls jemand anders damit experimentieren möchte Sie.

Etikettenmatrix:

Gewünschtes Ergebnis:

    
SSilk 10.03.2011, 20:59
quelle

3 Antworten

7

Eine Möglichkeit besteht darin, alle Beschriftungen zu durchlaufen und alle außer dem Rahmen zu entfernen, wie dies hier der Fall ist (wobei lblImg Ihre Beschriftungsmatrix ist)

%Vor%

BEARBEITEN

Eine schnellere Methode, um Grenzen zu finden, besteht darin, den Gradienten des beschrifteten Bildes zu verwenden

%Vor%     
Jonas 10.03.2011, 21:13
quelle
5

Wenn Sie Zugriff auf die Toolbox für die Bildbearbeitung haben (ich nehme an, Sie tun dies, da Sie mit Label-Matrizen zu tun haben), können Sie die Funktion edge verwenden. Hier ist ein einfaches Beispiel

%Vor%

rice.png ist das Bild von Matlab, so dass Sie diesen Code auf Ihrem Computer ausführen können. Das Bild sieht so aus.

Bekommen Sie jetzt labelmatrix

%Vor%

lblMatrix sieht so aus

Jetzt erhalten wir die Kanten der Etikettenmatrix. Hier habe ich die Laplace-of-Gauss-Methode verwendet, aber Sie können einen beliebigen anderen Algorithmus wählen (weitere Informationen finden Sie in der Hilfe).

%Vor%

Damit werden alle Kanten gefunden, die größer sind als 0 , was Sie brauchen. Sie können dies dann beliebig in Ihrer Verarbeitung manipulieren und auf andere Figuren überlagern. In der Praxis benötigen Sie etwas, das etwas höher als Null ist, so dass Sie diese kleinen Kreise (die nur auf Rauschen zurückzuführen sind) nicht erhalten und nur wiederherstellen, was Sie wollen. Du kannst basteln und die Schwelle auf etwas anderes einstellen, bis du es genau richtig machst. Obwohl dies automatisiert werden kann, kann ich nicht viel sagen, ohne das eigentliche Problem zu kennen. Wie auch immer, das ist nur um dich in die richtige Richtung zu bringen.

    
abcd 10.03.2011 22:59
quelle
1

Schnelle Folge:

Ich stellte diese Frage auch auf Steve Eddins Blog und angeboten eine sehr schnelle Möglichkeit, die Kanten des Etikettenbildes zu finden:

%Vor%

Ich mag diese Option, weil mein Hauptgrund für die Suche nach den Grenzen Visualisierung ist, und dies gibt etwas dickere Grenzen. Außerdem ist seine Funktion imoverlay eine praktische Möglichkeit, um die Grenzen anzuzeigen, die Sie über dem Original gefunden haben Bild, aus dem die Etiketten generiert wurden.

    
SSilk 14.03.2011 00:52
quelle

Tags und Links