我有一個圖像,我想平滑其邊緣。獲得更準確的分割有一些挑戰。然而,我通過改編來自What can I do to enhance my image quality?的建議得到了解決方案。我如何平滑多分量圖像的邊緣?
我使用的代碼如下:現在
%# 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,[]);
我的挑戰是理順實體(whitePixels)的邊緣或所有對象的邊緣。我不知道如何做到這一點。我嘗試了過濾,但只是取消了小點。 請大家非常感謝任何幫助,想法或建議或建議。謝謝。
你試過什麼樣的過濾? – Max
如果您平滑邊緣,它將不再是分段(索引)圖像。那是你要的嗎? – beaker
@ user2201可能不是平滑邊緣,而應嘗試在索引圖像上應用圓擬合算法。比你可以在你的索引圖像上找到的圓圈更厚一點'LineWidth',你會在你的圓圈上得到更清晰的輪廓。然後 - 根據您需要的精度 - 您可以將鑲嵌圓的像素索引爲片段內部或外部。 – Max