将Matlab的多幅图片制成GIF
用Matlab利用多幅图片生成GIF
友情提示,如果不想了解那么多只是用用可以直接看后面第三部分代码生成部分!
1. xx2ind函数
-
xx可以是rgb、gery等。也就是说,设原图像存在A中:若A是rgb格式(彩色)的,调用形式为rgb2ind(A);若A是灰度图(grey),调用形式为grey2ind(A)。
-
接下来以rgb2ind函数为例,grey2ind操作基本一致。rgb2ind 函数的主要作用是将真彩色图像转换成索引图像:
– 索引图像的定义是:索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。
– 对索引图像的理解:MATLAB自带的woman信号构成的图像的像素索引矩阵和调色板矩阵。woman图像是一幅典型的索引图像。其图像矩阵大小为256×256,表示有65535个像素点构成。调色板大小为256×3,表示有256种颜色。我们看到图像索引矩阵的(1,1)单元的内容为124,也就是说这一点像素的颜色就是调色板矩阵的第125行所定义的颜色。可以看到调色板矩阵的第125行为[0.60536,0.60536,0.60536],表示RGB三个分量的比重都比较重且在图像中的地位相同。
在实际操作中应该注意到,调色板通常与索引图像存储在一起;装载图像时,调色板将和图像数据一同自动装载。 -
调用格式: [X,map] = rgb2ind(A, n)。输入值:A为图像数据,n指定map中颜色项数,n最大不能超过65526。返回值:X为索引图像,map为索引图像的调色板。
2. imwrite函数
imwrite函数功能:将图像数据写入到图像文件中。
直接上调用格式们!
-
(1) imwrite(A,filename,fmt)
– A是图像数据, filename是目标图像名字, fmt是要生成的图片的格式。图像格式有:bmp(1-bit、8-bit和24-bit)、gif(8-bit)、hdf、jpg(或jpeg)(8-bit、12-bit和16-bit)、jp2或jpx、pbm、pcx(8-bit)、pgm、png、pnm、ppm、ras、tif(或tiff)、xwd。各种格式支持的图像位数不一样, 比如bmp格式不支持16-bit,而png格式支持, 又如gif只支持8-bit格式。 -
(2) imwrite(X,map,filename,fmt)
– 如果要存储一张索引图像, 需要指定颜色表,这样在硬盘上生成图像文件时指定的颜色表和图像数据将一起写入图像文件。 -
(3) imwrite(f,‘filename.jpg’,‘quality’,q)
– 一种常用但只适用于JPEG图像的imwrite函数语法, 其中,q是一个在0-100之间的整数,为图像质量因数。
3. 生成GIF
for i = 1:size(ImageSet, 2)
B = ImageSet(i);
[Im2,map2]= gray2ind(B,256);
%写gif
if(i==1)
imwrite(Im2,map2,'movefig2.gif','DelayTime',0.1,'LoopCount',Inf)%第一帧
else
imwrite(Im2,map2,'movefig2.gif','WriteMode','append','DelayTime',0.1) %其余帧
end
end
- 其中,ImageSet是你想做成gif的所有图片的顺序集合。