MATLAB:段图像

时间:2016-12-01 19:46:48

标签: matlab image-processing binary image-segmentation

MATLAB和图像处理的新手。我需要知道如何将图像分割为前景和背景,然后生成二进制图像作为输出。 enter image description here

我需要这个作为输出:

enter image description here

我已经尝试使用在线教程完成此操作,这是我设法得到的: enter image description here

这是一个良好的开端,但不完全是我需要的。

我的代码:

I = imread('AssignmentInput.jpg');
figure;
imshow(I);
title('Step-1: Load input image');


img_filtered = I;
for c = 1 : 3
    img_filtered(:, :, c) = medfilt2(I(:, :, c), [3, 3]);
end
figure; 
imshow(img_filtered);
title('Step-3:Noise Removal');

H = fspecial('gaussian'); % Create the filter kernel.
img_filtered = imfilter(img_filtered,H); % Blur the image.
Mask = im2bw(img_filtered, 0.9); % Now we are generating the binary mask.
img_filtered([Mask, Mask, Mask]) = 0; % Now we have the image.
figure;
imshow(img_filtered);
title('Step-5:Segmented Image');

1 个答案:

答案 0 :(得分:0)

为了更好地去除噪音并清除前景和背景之间的分离,您还可以添加以下形态操作:

se = strel('square',2);
I = imclose(I,se);

您可以尝试不同的“变体”变体'上课也。下面的图像是在使用2像素enter image description here

的正方形进行imclose操作之后