如何在matlab中将图像叠加在背景上

时间:2014-03-09 18:13:09

标签: matlab image-processing overlay

我有一个图像,其中某些像素是黑色的。我还有一个背景图像,我想在其上覆盖我的图像。但我希望背景只出现在主图像中像素为黑色的位置。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

如果你的图像大小相同,这很容易。假设您有两个灰度图像,mainImagebackImage。然后,您可以通过编写以下内容将mainImage黑色像素设置为backImage值:

mainImage(mainImage == 0) = backImage(mainImage == 0);

这将设置mainImage黑色像素backImage

如果图像是彩色的,那么你必须要小心一些。在我的脑海中,最简单,最容易理解的方法是在每个颜色平面中找到零值,然后将mainImage设置为零backImage。我做了一点点凌乱,转换为线性空间并按如下方式设置像素:

[Ny, Nx, Nz] = size(mainImage);
dSize = Ny*Nx;

% Get the location of the black pixels:
bR = mainImage(:,:,1) == 0;
bG = mainImage(:,:,2) == 0;
bB = mainImage(:,:,3) == 0;

blackPixels = find(bR & bG & bB);

mainImage(blackPixels) = backImage(blackPixels);
mainImage(blackPixels + dSize) = backImage(blackPixels+dSize);
mainImage(blackPixels + 2*dSize) = backImage(blackPixels+dSize*2);