2013-08-30 2 views
1

Я пытаюсь альфа-смесь нескольких изображений, но я сталкиваюсь с несколькими проблемами. Я как бы разрабатываю чей-то код, поэтому заранее извиняюсь за то, что, возможно, не имел смысла, но я буду как можно более ясным.MATLAB: Alpha blend 2 изображения с различными размерами матриц

Первоначально мы сделали два разных участка, содержащих по одному изображению в каждом. Для первого изображения, сюжет сделан, создавая фигуру, а затем выполните следующие действия:

%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

Для второго изображения, мы делаем точно так же initilization изображения (кроме 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. Обратите внимание на разницу между размерами ... одна является двумерной матрицей, а другая представляет собой трехмерную матрицу (хотя обратите внимание, что она по-прежнему представляет собой двухмерное изображение, она имеет только 3 дополнительных размера для цветов RGB) , Наверное, я просто не знаю, как с этим бороться, когда я перехожу к альфа-смешению. Я предполагаю, что мне захочется совместить образы до, показывая их, альфа-смешивание до и затем просто рисует финальную фигуру. Я не знаю, как это сделать, хотя, поскольку для моего первого изображения это 3-D и включает в себя каналы RGB, где моя вторая фигура не делает! Любая помощь, дающая следующие шаги в процессе альфа-смешивания этих двух изображений, а затем их построение будет отличной. Благодаря!

+0

Вы уверены, что 3D не о том, что 3 не, чтобы обеспечить пространство для RGB, а другое изображение монохромный? –

+0

Извините, вы совершенно правы. Я не обязательно имел в виду, что изображение было 3-D, я просто имел в виду, что это было двухмерное изображение, а цвета RGB были разделены на разные размеры. Так что да, это именно то, что вы говорите. Я все еще не знаю, как справиться с этой разницей. – spaderdabomb

+0

Я думаю, что я могу просто создать RGB-изображение из монохромного, чтобы они имели одинаковые размеры .... – spaderdabomb

ответ

1

Если у вас есть набор инструментов для обработки изображений, MATLAB предлагает

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

, что перекрывает изображения А и В, используя альфа-смешивание.

Например, следующий код (обратите внимание на функцию getframe),

час = цифра ('Color', 'W');

ha = subplot (1,3,1); изображение (rand (720, 1280,3)); Fa = getframe (ha);

hb = subplot (1,3,2); imagesc (единицы (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

Смежные вопросы