我在此过程之后在图像上施加掩码时遇到问题:
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方法更快。