图像与蒙版混合

标签 image matlab image-processing matrix indexing

我正在尝试根据掩模中的信息组合两个图像。如果蒙版为 0,我将使用背景图像中的颜色信息;如果蒙版为 1,我将使用前景图像中的颜色信息。因为蒙版和两者 图像大小相同,我想使用矩阵的逻辑索引来实现这一点。

我的尝试:

mask = imread('mask.png');
foreground = imread('fg.jpg');
background = imread('bg.jpg');
[r,c,~]=size(mask);
A = zeros(size(mask));

for i=1:r    
  for j=1:c        
    if mask(i,j) == 0
        A(i,j,:) = background(i,j,:);
    end
    if mask(i,j) > 0
        A(i,j,:) = foreground(i,j,:);
    end       
  end
end

imshow(A);

结果看起来像闪烁的蓝色图像,但我不想要这样。请帮忙。

最佳答案

您可以更简洁地做到这一点:

f = double(foreground).*double(mask);
b = double(background).*double(~mask);
blend = f+b;
imshow(blend, []);

使用逻辑索引你也可以这样做

foreground(logical(mask)) = 0;
background(logical(~mask)) = 0;
blend = foreground+background;

ISNOT 运算符“~”反转第二行中的矩阵,因此您可以剪掉想要作为背景的区域。

注意:这适用于黑白(一个 channel )。对于彩色图像,请参阅 rayryeng 的解决方案。

关于图像与蒙版混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905709/

相关文章:

android - 从图库中挑选照片并在 ImageView 中显示

matlab - dlmwrite 循环使用

python - 频率响应:Matlab Vs Python

android - 如何在 Android 中扭曲图像?

c++ - 空结构元素的 OpenCV 腐 eclipse /膨胀错误输出?

java - 使用 ClassLoader 检索资源的路径

python - 在 Pygame 中拉伸(stretch)图像,同时保留角点

ios - 从 JSON 中一张一张加载照片

xml - 使用 Matlab 发送 SOAP 请求

Python OpenCV putText() 显示(非ascii、unicode、utf)字符符号