如何在MATLAB中乘以二进制图像和RGB图像?
问题描述:
我有一个二进制图像,这是另一种彩色图像的分割形式。如何在MATLAB中乘以二进制图像和RGB图像?
如您所知,二进制图像是2-d,但rgb图像是3-d,我如何将它们相乘?
我想这代码产生了奇怪的图片
function skinCrop(bwSkin,colorSkin)
for i = 1:size(colorSkin,1)
for j = 1:size(colorSkin,1)
if bwSkin(i,j) == 0
colorSkin(i,j,:) = 0;
end
end
end
imshow(colorSkin);
end
原始图像
产生的图像是:
我希望它是一个反对黑暗背景的手,那么为什么右边部分会出现这种方式呢?
答
您使用了错误的尺寸长度为你的第二个维度:
for j = 1:size(colorSkin,1)
应该
for j = 1:size(colorSkin,2)
答
一种更有效的方式做乘法是
function mult = skinCrop(bwSkin, colorSkin)
%
% multiplying 3D color image with 2D mask
%
mult = nsxfun(@times, bwSkin, colorSkin);
% show the result
imshow(mult); title('skin cropped image');
由于@zenopy注意,你可能需要您的变量转换为double
类型。
谢谢,这工作! – 2012-02-25 21:01:06