matlab - 对象分割

matlab - object segmentaion

如何使用蒙版操作和形态学滤波器对对象进行分割,如图c所示: 其中 a 是给定的图像,b 是背景(不知道为什么会这样),c 是我们的目标:

我认为将图像二值化会有所帮助,但结果是这样的:

否则,我凭直觉不明白这怎么可能

我想到了“使用形态学分水岭进行分割”,但我不确定这是否是正确的方法

实际上有了背景会让这一切变得容易得多:

A = im2double(rgb2gray(imread('a.png'))); % image
B = im2double(rgb2gray(imread('b.png'))); % background

D = abs(A-B)>0.12; % difference > threshold
D = imerode(D, strel('rectangle', [2 2])); % reducing spots
C = A;
C(D)=1; 
subplot 121, imshow(D)
subplot 122, imshow(C)