2016-12-01 80 views
1

MATLAB和圖像處理新手。我需要知道如何將圖像分割成前景和背景,然後生成二進制圖像作爲輸出。 enter image description hereMATLAB:Segment Image

我需要以此爲輸出:

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'); 
+0

這看起來很漂亮,靠近我。這兩幅圖像有什麼區別? – beaker

+0

基本上,我保持在第三個圖像的顏色,我只需要它作爲黑色和白色在第二個圖像中顯示。 –

+0

這只是因爲您將蒙版應用於原始圖像。試試'imshow(〜Mask)' – beaker

回答

0

爲了更好的噪聲去除處理的前景和背景之間的清晰分離,你還可以添加像形態學操作:

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

您可以嘗試不同的變化'strel'類也。下面的圖片是以2像素的正方形進行拼接操作之後的enter image description here