Sie dies durch Schleifen über die einzigartigen Werte in Ihrem Bild erreichen kann, eine Maske von der Schaffung Objekte mit diesem Wert und Ausführen von bwlabel
für jede solche Maske. Dies wird Ihnen einzigartige Etiketten für jede angeschlossene Komponente in der Maske, und Sie können die Etiketten aus allen Masken sammeln, indem Sie die Anzahl der Etiketten bereits zuvor festgestellt:
img = imread('i5WLA.png');
index = zeros(size(img));
for iGray = unique(img(:)).' %'
mask = (img == iGray);
L = bwlabel(mask, 4);
index(mask) = L(mask)+max(index(:));
end
subplot(2,1,1);
imshow(img, []);
title('Original');
subplot(2,1,2);
imshow(index, []);
title('Each region labeled uniquely');
Und hier ist die Handlung dies macht:
Sie können jetzt sehen, dass jedes verbundene Objekt seinen eigenen eindeutigen Grauwert hat. Sie können dann ein Farbbild von dieser neuen indexierten Bild erstellen entweder mit ind2rgb
oder label2rgb
und Auswahl eines colormap (hier verwende ich hsv
) zu verwenden:
rgbImage = ind2rgb(index, hsv(max(index(:))));
imshow(rgbImage);
% Or...
rgbImage = label2rgb(index, @hsv);
imshow(rgbImage);
Hast du bei 'bwlabel' aussehen ? Möchten Sie auch eine MATLAB- oder Python-Lösung? Es gibt keine "Einheitsgröße". – Suever
Ja, das Problem ist, dass in meinem Bild alle Regionen verbunden sind. bwlabel gibt eine Matrix zurück, die nur Einsen enthält. Eigentlich habe ich ein segmentiertes Bild, das mit zufälligen Werten beschriftet ist (einige von ihnen werden wiederholt) und ich möchte jedes Segment mit eindeutigen Labels beschriften. Es spielt keine Rolle, ob es sich um MATLAB, Python oder andere Lösungen handelt. – john518
'bwlabel' gibt ** nicht ** eine Matrix zurück, die nur Einsen enthält. Sie enthält eine ganzzahlige Matrix von "0" bis "N", wobei "1, 2, ..., N" die Zugehörigkeit eines in einer Region enthaltenen Pixels bezeichnet. '0' ist der Hintergrund. Könnten Sie nicht einfach jedes einzelne Etikett durchlaufen und das Ergebnis einfärben? Ich kann eine Antwort geben, wenn Sie noch unklar sind. – rayryeng