MATLAB:Alpha混合2个具有不同尺寸矩阵的图像

时间:2013-08-30 08:06:11

标签: image matlab alphablending

我正在试图将几个图像混合在一起,但我遇到了一些问题。我正在开发其他人的代码,所以我提前道歉可能没有意义,但我会尽可能清楚。

最初我们制作了两个不同的图,每个图包含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

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

%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注意尺寸之间的差异...一个是二维矩阵,另一个是三维矩阵(虽然注意,它仍然是一个二维图像,它只有3个额外的维度对于RGB颜色)。我想当我进行alpha混合时,我只是不知道如何处理这个问题。我猜我要将之前的图像组合在一起,然后才能绘制最终的数字。我不知道如何去做,因为我的第一张图片是3-D并包含RGB通道,我的第二个数字没有!任何帮助给出alpha混合这两个图像的过程中的下一步,然后绘制它们将是很好的。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

使用Alpha混合覆盖图像A和B.

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

  

h =数字('颜色','w');

     

ha = subplot(1,3,1); image(rand(720,1280,3)); Fa = getframe(ha);

     

hb = subplot(1,3,2); imagesc(ones(720,1280)); Fb = getframe(hb);

     

副区(1,3,3); C = imfuse(Fa.cdata,Fb.cdata,'blend'); imshow(C)

将产生

enter image description here