1

いくつかの画像をアルファ ブレンドしようとしていますが、いくつか問題が発生しています。私は他人のコードを開発しているようなものなので、意味をなさない可能性があることを前もってお詫びしますが、できるだけ明確にします.

もともと、それぞれに 1 つの画像を含む 2 つの異なるプロットを作成しました。最初の画像では、Figure を作成してから次の手順を実行してプロットを作成します。

%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

2 番目のイメージについては、まったく同じイメージの初期化を行い (以下に示す 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次元の違いに注意してください... 1 つは 2 次元マトリックスで、もう 1 つは 3 次元マトリックスです(ただし、これはまだ 2 次元イメージであり、RGB カラーの 3 つの余分な次元があるだけです)。アルファブレンディングを行うときに、これに対処する方法がわからないだけだと思います。画像をプロットする前に画像を結合し、前にアルファブレンディングを行ってから、最終的な図をプロットするだけだと思います。最初の画像は 3D で、RGB チャンネルが含まれていますが、2 番目の図には含まれていません。これらの 2 つの画像をアルファ ブレンディングしてからプロットするプロセスの次のステップを提供する助けがあれば、それは素晴らしいことです。ありがとう!

4

1 に答える 1

1

画像処理ツールボックスがある場合、matlab は以下を提供します

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

アルファ ブレンディングを使用して画像 A と B を重ね合わせます。

たとえば、次のコード (getframe関数に注意してください)、

h = figure('Color','w');

ha = サブプロット (1,3,1); 画像(ランド(720、1280、3)); Fa = getframe(は);

hb = サブプロット (1,3,2); imagesc(ones(720, 1280)); Fb = getframe(hb);

サブプロット (1,3,3); C = imfuse(Fa.cdata,Fb.cdata,'ブレンド'); imshow(C)

生産します

ここに画像の説明を入力

于 2013-08-30T08:42:10.033 に答える