1

我正在尝试对几张图像进行 alpha 混合,但遇到了一些问题。我有点开发别人的代码,所以我提前道歉可能没有意义,但我会尽可能清楚。

最初我们制作了两个不同的图,每个图包含 1 张图像。对于第一张图片,绘图是通过创建图形然后执行以下操作来制作的:

%part of initializing the figure
Fig.figim=image(double(zeros(RGBparam.height, RGBparam.width,3)));
...
%later we have a loop, then we do:
set(Fig.figim, 'CData', imresize(RGBparam.image,[RGBparam.height, RGBparam.width]);

图像的大小在(RGBparam.image)哪里720x1280x3

对于第二张图像,我们对图像进行完全相同的初始化(除了我将在下面放置的 1 部分)并执行以下操作:

%the only different in initialization of the figure
Fig.figim=imagesc(double(zeros(RGBparam.height, RGBparam.width)));
...
%and here is the same loop again
set(Fig.figim, 'cdata', outImage)

图像的大小在(outImage)哪里720x1280请注意维度之间的差异……一个是 2-D 矩阵,另一个是 3-D 矩阵(请注意,它仍然是 2-D 图像,它只有 RGB 颜色的这 3 个额外维度)。我想当我进行 alpha 混合时,我只是不知道如何处理这个问题。我猜我想在绘制它们之前组合图像,在之前进行 alpha 混合,然后只绘制最终的图形。不过我不知道该怎么做,因为对于我的第一张图像,它是 3-D 并且包括 RGB 通道,而我的第二张图没有!在 alpha 混合这两个图像的过程中提供下一步的任何帮助,然后绘制它们会很棒。谢谢!

4

1 回答 1

1

如果你有图像处理工具箱,matlab 提供

C = imfuse(A,B,'blend')

使用 alpha 混合覆盖图像 A 和 B。

例如下面的代码(请注意getframe函数),

h = 图('颜色','w');

ha = subplot(1,3,1); 图像(兰德(720、1280,3));Fa = getframe(ha);

hb = 子图(1,3,2);图像(一个(720、1280));Fb = getframe(hb);

子图(1,3,3);C = imfuse(Fa.cdata,Fb.cdata,'混合'); 显示(C)

会产生

在此处输入图像描述

于 2013-08-30T08:42:10.033 回答