我正在使用MATLAB 2012b。
我能够在图像中获得对象轮廓:
使用活动轮廓分割的方法,结果是二进制掩码:
如何用原始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');
答案 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)
答案 1 :(得分:0)
您可以使用bsxfun:
blackBG = uint8(bsxfun(@times, double(gambarOri), BW));