我正在试图将几个图像混合在一起,但我遇到了一些问题。我正在开发其他人的代码,所以我提前道歉可能没有意义,但我会尽可能清楚。
最初我们制作了两个不同的图,每个图包含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混合这两个图像的过程中的下一步,然后绘制它们将是很好的。谢谢!
答案 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)
将产生