2013-08-30 139 views
1

我試圖alpha混合幾個圖像,但我遇到了一些問題。我有點開發別人的代碼,所以我提前道歉可能沒有道理,但我會盡可能清楚。MATLAB:Alpha混合2個不同尺寸矩陣的圖像

最初我們做了兩個不同的情節,每個情節包含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注意尺寸之間的差別......一個是二維矩陣,另一個是三維矩陣(儘管注意,它仍然是一個二維圖像,它只是有三個額外的RGB顏色尺寸) 。我想我只是不知道如何處理這個問題,當我開始alpha混合。我猜想我想要結合之前的圖片繪製它們,alpha混合之前,然後只是繪製最終的數字。我不知道如何去做這件事,因爲我的第一張圖片是3-D,包括RGB通道,而我的第二張圖片卻沒有!在alpha混合這兩幅圖像的過程中給出下一步驟的任何幫助,然後繪製它們將非常棒。謝謝!

+0

你確定這是3D不說,3不爲RGB提供空間和其他圖像是monocrome? –

+0

對不起,你完全正確。我並不一定意味着圖像是3D圖像,而只是意味着它是一個二維圖像,並且RGB顏色已被分成不同的維度。所以是的,這正是你所說的。我仍然不知道如何處理這種差異。 – spaderdabomb

+0

我想我可以創建一個RGB圖像,使其具有相同的尺寸...... – spaderdabomb

回答

1

如果您有圖像處理工具箱,MATLAB提供

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

是覆蓋Alpha混合圖像A和B。

例如,下面的代碼(請注意getframe功能),

H =數字( '顏色', 'W');

ha =子圖(1,3,1);圖像(蘭特(720,1280,3)); Fa = getframe(ha);

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

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

會產生

enter image description here

+0

這不起作用,因爲A和B是不同的尺寸 – spaderdabomb

+0

您可以使用'getframe'獲取圖像。請參閱編輯。 – marsei

+0

好吧,我做了這個和史蒂夫巴恩斯的最後評論告訴我要做的結合,它的工作=)謝謝 – spaderdabomb