1

I have some code that produces a series of grayscale images. I am then able to save the images individually in a loop and save them with a colormap applied. i.e.

file = sprintf('image_%04d.png',x);
imwrite(image1,jet,file,'png');

So i get my images out the other end and they have the correct colormapping which is colormap(jet).

However, when in my next program, I try to cobble these images together to form a short animation (yes I know I should just make the movie in the same loop as above), I get a grayscale movie!!! How does that happen when the source images are color?

Further more I notice that if I load an individual image and then type:

imshow(A)

i get a grayscale image too! but if I type:

image(A)

it gives me what I wanted, which is the colormapped image.

Why does it do this? how can I get it to make a movie with the correct colormap? and is there a way I can add the colormap to the image before saving it (as above I add the map during imwrite)?

p.s. I have tried using :

video = videowriter(VideoFileName,'MPEG-4')
video.Colormap = jet  (or) colormap(jet) or 'jet'

matlab doesnt like that. :(

4

1 回答 1

2

Alex,VideoWriter 有一个名为“Indexed AVI”的配置文件,它允许您使用颜色图信息保存图像。您可以使用以下代码:

vwObj = VideoWriter('myfile.avi', 'Indexed AVI');
vwObj.Colormap = jet(256);
open(vwObj);
writeVideo(vwObj, image1);   % Repeat for all images that you want
close(vwObj);

MPEG-4 文件不接受 Colormap 属性。但是,您可以在撰写本文时通过提供如下所示的 MATLAB 框架来指定颜色图:

vwObj = VideoWriter('myfile', 'MPEG-4');
open(vwObj);
f.cdata = image1;
f.colormap = jet(256);
% The colormap will be applied before writing the data to the MPEG4 file
writeVideo(vwObj, f); 
close(vwObj);

希望这可以帮助。

迪内什

于 2013-08-18T02:53:35.530 回答