Ich habe ein Bild, in dem ich seine Kanten glätten möchte. Es war eine kleine Herausforderung, eine genauere Segmentierung zu erreichen. Ich habe jedoch eine Lösung gefunden, indem ich den Vorschlag von What can I do to enhance my image quality? angepasst habe.Wie glätte ich die Kanten eines Mehrkomponentenbildes?
und segmentierte Bild als auch
Der i-Code verwendet wird, ist wie folgt:
%# Read in image
Img = imread('image_name.png');
%# Apply filter
h = fspecial('average');
Img = imfilter(Img, h);
%# Segment image
Img = rgb2gray(Img);
thresh = multithresh(Img, 2);
Iseg = imquantize(Img, thresh);
figure, imshow(Iseg,[]), title('Segmented Image');
%# separate channels
blackPixels = (Iseg == 1);
grayPixels = (Iseg == 2);
whitePixels = (Iseg == 3);
%# grow white channel
whitePixels_dilated = imdilate(whitePixels, strel('disk', 4, 4));
%# Add all channels
Iseg(whitePixels | whitePixels_dilated) = 3;
figure, imshow(Iseg,[]);
Meine Herausforderung das glätten ist gerade jetzt Kanten des Volumenkörpers (whitePixels) oder die Kanten aller Objekte. Ich habe keine Ahnung, wie ich das machen soll. Ich habe versucht zu filtern, aber das nimmt nur die kleinen Flecken. Bitte jede Hilfe, Ideen, Anregungen oder Ratschläge werden sehr geschätzt. Vielen Dank.
Welche Art von Filterung haben Sie versucht? – Max
Wenn Sie die Kanten glätten, wird es kein segmentiertes (indiziertes) Bild mehr sein. Ist es das was du willst? – beaker
@ user2201 Anstatt die Kanten zu glätten, sollten Sie versuchen, einen Kreis-Algorithmus auf Ihr indiziertes Bild anzuwenden. Dann können Sie die Kreise, die Sie über Ihr indiziertes Bild gefunden haben, mit einer etwas dickeren 'LineWidth' plotten, und Sie erhalten schärfere Konturen auf Ihren Kreisen. Und dann - abhängig von der Genauigkeit, die Sie benötigen - können Sie die Pixel im Kreis als entweder innerhalb oder außerhalb des Segments indizieren. – Max