在Matlab中由多边形指定的RGB图像的填充区域

时间:2016-10-05 11:37:55

标签: matlab image-processing

在RGB图像中找到感兴趣区域的边界后,我想用原始图片上的特定颜色填充它们

img=imread('I.png');
BW=~im2bw(img,0.5);
B = bwboundaries(a2);
for k = 1:length(B)
   boundary = B{k};

   % here should color everything inside boundary in blue

end

我可以用什么功能来做这件事?我也尝试使用 imshow()而不是在其上绘制区域,但不知道如何以原始分辨率保存它。

1 个答案:

答案 0 :(得分:1)

如果您坚持使用多边形填充,可以使用fill,但随后可能会遇到一些问题:

img = imread('Prueba.jpg');
figure;
imshow(img)

enter image description here

BW = ~im2bw(img, 0.55);
B = bwboundaries(BW);
hold on
for k = 1:length(B)
   boundary = B{k};
   fill(boundary(:, 2), boundary(:, 1), 'b')
end

enter image description here

如本例所示,图像的某些区域被边界包围,但它们实际上应该是边界之外。

相反,通过这种方式,您可以避免此问题:

imgR = img(:, :, 1);
imgG = img(:, :, 2);
imgB = img(:, :, 3);
imgR(BW) = 0;
imgG(BW) = 0;
imgB(BW) = intmax(class(imgB));
IMG = cat(3, imgR, imgG, imgB);
figure; imshow(IMG)

enter image description here