MATLAB用rgb图像覆盖二进制图像的白色区域

时间:2016-10-08 18:00:24

标签: matlab image-segmentation imagefilter

我正在使用MATLAB 2012b。

我能够在图像中获得对象轮廓: image
使用活动轮廓分割的方法,结果是二进制掩码:

如何用原始rgb图像填充二进制图像的白色区域?

基本上我想要的是让背景完全变黑。

这是我的代码:

gambarOri = imread(pathGambar);
A = rgb2gray(gambarOri ); 
mask = zeros(size(A)); mask(10:end-10,10:end-10) = 1; 
BW = activecontour(A, mask, 500);
figure, subplot(1, 2, 1), imshow(A), title('Grayscale'); 
subplot(1, 2, 2), imshow(BW), title('Segmented image in Binary');

2 个答案:

答案 0 :(得分:0)

您可以在二进制图像上叠加RGB,因为数据类型不匹配。您可以做的是根据二进制图像修改RGB图像。例如,您可以用{0}替换false BW区域中RGB图像的值:

% separating RGB channels:
R = gambarOri(:, :, 1);
G = gambarOri(:, :, 2);
B = gambarOri(:, :, 3);
% placing zeros where BW is FALSE:
R(~BW) = 0;
G(~BW) = 0;
B(~BW) = 0;
% concatenate color layers into final result:
blackBG = cat(3, R, G, B);
% figure; imshow(blackBG)

根据您提供的图片显示此结果: enter image description here

答案 1 :(得分:0)

您可以使用

blackBG = uint8(bsxfun(@times, double(gambarOri), BW));