使用imwrite写出imagesc输出的真实颜色

时间:2018-01-22 01:48:58

标签: image matlab

是否可以从imagesc的输出中将图像写入rgb,因为肉眼可以看到?例如:

image=imagesc(rand(100,100)); %This is technically incorrect, but to show you what I meant
imwrite(image,'filename.bmp');

提前致谢!

2 个答案:

答案 0 :(得分:3)

以下是Cris Luengo方法的替代方法,该方法不依赖于imagesc生成的实际情节。

% load a test image
I = rgb2gray(imread('peppers.png'));

% recreate image
cmap = colormap();          % grab current colormap
ncolors = size(cmap,1);
% do what imagesc does
Iind = double(I) - double(min(I(:)));
Iind = Iind / max(Iind(:));
% quantize image
Iind = round(Iind * ncolors + 0.5);
Iind(Iind > ncolors) = ncolors;
Iind(Iind < 1) = 1;
% convert to RGB from indexed image using cmap as palette
Irgb = ind2rgb(Iind,cmap);

imwrite(Irgb, 'filename.bmp');

imagesc filename.bmp

的比较

enter image description here

enter image description here

答案 1 :(得分:1)

使用print功能。如果你给它一个正确的“设备”,它会将图形窗口的内容写入图像文件:

print -r0 -dbmp filename.bmp

对图形窗口大小和轴位置的一些调整将使图像在一个屏幕像素上显示一个图像像素,并且轴周围没有空间:

set(gca,'units','normalized','position',[0,0,1,1]);
set(gcf,'units','pixels','position',[10,10,100,100])

(两个100值表示图像的宽度和高度。)