在MATLAB中涂上口罩



我在此过程之后在图像上施加掩码时遇到问题:

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}));

尝试以错误零件 -

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

bsxfun可能比使用此处使用的repmat方法更快。

相关内容

  • 没有找到相关文章

最新更新