图像处理:细分"斑马"超出图片

时间:2017-04-08 17:16:27

标签: image-processing image-segmentation

嘿,我正在尝试解决这个问题。你被要求分割出来的地方"斑马"出于图像。下面是给定的图像。

"Zebra"

输出应该是这样的。

Output

好吧,我被困在" strip"斑马因为它们可能被分割成单独的物体。

1 个答案:

答案 0 :(得分:0)

在图像处理中,重要的是要查看您的图像并尝试了解您感兴趣的区域(即斑马)与其余区域(即背景)之间的差异。

在这个例子中,一个明显的区别是背景是绿色的,斑马是黑色和白色。因此,图像的绿色通道可用于提取背景。然后,可以使用一些扩张和侵蚀步骤(非线性)清理结果。

一种简单且非完美的分割技术(在Matlab中):

I = imread('lA196m.jpg');

% plot the original image
figure
subplot(2,2,1)
imshow(I)

% calculate the green channel (relative green value)
greenChannel = double(I(:,:, 2))./mean(I(:,:,:), 3);
binary = greenChannel > 1; % apply a thresshold
subplot(2,2,2)
imshow(binary);

% remove false positives (backgrounds)
se1 = strel('sphere',20);
binary2 = imdilate(imerode(binary,se1), se1);
subplot(2,2,3)
imshow(binary2);

% add false negatives
se2 = strel('sphere',10);
binary3 = imerode(imdilate(binary2,se2), se2);
subplot(2,2,4)
imshow(binary3);

% calculate & plot the boundary on the original image
subplot(2,2,1)
Bs = bwboundaries(~binary3);
B = Bs{1};
hold on
plot(B(:, 2), B(:, 1), 'LineWidth', 2);

enter image description here