我有一个图像,其中某些像素是黑色的。我还有一个背景图像,我想在其上覆盖我的图像。但我希望背景只出现在主图像中像素为黑色的位置。谢谢你的帮助。
答案 0 :(得分:2)
如果你的图像大小相同,这很容易。假设您有两个灰度图像,mainImage
和backImage
。然后,您可以通过编写以下内容将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);