matlab imwrite函数保存图片问题。imwrite(X,map,filename,fmt) 中着重说一下map是什么意思,怎么用?

读取一个三维图片,保存图片时用到函数 imwrite(X,map,filename,fmt) ,函数中map是什么意思,怎么用? 好像不加入这个map参数,只能保存灰度图像,我想保存的是三维图像。举个具体例子最好。3Q~

map 是一个列数为3的矩阵,表示颜色表,每行代表一个颜色,每行3个元素代表rgb的亮度
map可以在读取的时候随图像一起读进来
[X,map]=imread('abc.tif');
我不知道你现在有什么要存,不过有问题可以问我。、追问

[X,map]=imread('abc.tif'); 中,我对X用某函数计算完后,再X=uint8(X);imwrite(X,'E:\XX.bmp');保存的图片比与用imshow(X)的图片颜色暗很多,是因为我没有加入map调色的原因吗? 不过我随后又加入了 colormap(map);imwrite(X,colormap,'E:\XX.bmp'); 效果依然那样。这我就不懂了。求指点~谢谢了~

追答

试一下X=uint8(X-1);
如果X是双精度类型的,需要这样再网文件里面写。

追问

比如这个代码, imshow出来的图和imwrite出的图亮度就不一样。我试了你的方法了,还是老样子。麻烦了。
[I,map]=imread('E:\A.bmp');
I=rgb2gray(I);
noisy=imnoise(I,'salt & pepper',0.05);
myfilt1=[0 1 0;1 1 1;0 1 0];
myfilt1=myfilt1/9; filtered1=filter2(myfilt1,noisy);
filtered1=uint8(filtered1);
imshow(filtered1,map),title('4邻域平均滤波模板');
imwrite(filtered1, 'E:\A_4邻域平均滤波.bmp');

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-22
参考这个例子吧,都说的听明白的http://baike.baidu.com/view/5781713.htm
% 本例子展示如何将一张真彩色jpg格式图片转换为灰度图像、索引图像、二值图像   imgrgb = imread('flower.jpg');   imwrite(imgrgb, 'flower.bmp', 'bmp'); % jpg格式转换为bmp格式   imggray = rgb2gray(imgrgb);   imwrite(imggray, 'flower_grayscale.bmp', 'bmp'); % 存储为灰度图像   [imgind, map] = rgb2ind(imgrgb, 256); % 转换为256色的索引图像   % 如果转换为65536色图像, imwrite函数无法写入到文件, 这是因为: 65536色的   % 索引图像数据类型是uint16(16-bit), 而imwrite函数的bmp文件格式仅仅支持   % 1-bit, 8-bit, 和 24-bit。png格式支持uint16。   imwrite(imgind, map, 'flower_index.bmp', 'bmp');