在matlab中应用蒙版

时间:2014-03-12 12:11:24

标签: matlab image-processing graphics mask gaussian

在此过程之后,我在将图像应用到图像时出现问题:

1]我使用roipoly在matlab中创建了一个掩码。

2]我将它从逻辑转换为双,因此我可以应用高斯模糊。

3]我对面具应用了高斯模糊。

然后我想将一个图像与这个蒙版相乘,以便“切出”由蒙版定义的区域(但由于高斯模糊,它应该看起来很混合)。这是问题发生的地方。我收到以下错误:

Error using  .* 
Matrix dimensions must agree.

图片尺寸为480x640x3,而面具尺寸仅为480x640。我该如何组合这些图像?任何帮助将不胜感激。

function blendedImage = BlendImages(pyr1, pyr2, mask, level)

maskImage = double(mask);
pyr1_mask = GaussianPyramid(maskImage, level);
pyr2_mask = GaussianPyramid(1 - mask, level);
pyr_combined = cell(level, 1);
for i=1:level
    % this is where the error is:
    pyr_combined{i} = (pyr1{i} .* pyr1_mask{i}) + (pyr2{i} .* pyr2_mask{i});
    figure; imshow(pyr_combined{i});
end

figure; imshow((pyr1_mask{level}));

1 个答案:

答案 0 :(得分:1)

尝试使用此错误部分 -

pyr_combined{i} = bsxfun(@times,pyr1{i},pyr1_mask{i}) + bsxfun(@times,pyr2{i},pyr2_mask{i});

BSXFUN可能比使用here使用的REPMAT方法更快。