File io 保存Imshow()输出-缩放图像保存到磁盘

File io 保存Imshow()输出-缩放图像保存到磁盘,file-io,fft,matlab,File Io,Fft,Matlab,我已经开始在Matlab中学习图像处理,我有一个小问题 我试图将图像的FFT可视化。当我提供空矩阵时,函数imshow会满足我的需要(例如sintax imshow(图,[]) 现在,imshow做得很好,因为当提供空矩阵时,它会将图片中的最低值显示为黑色,最高值显示为白色,并相应地调整所有其他值(至少我是这样理解的) imshow的缩放效果非常好,我想知道是否有一个Matlab函数可以拍摄图像并执行这种缩放?我想在使用imshow后手动保存图片,但我想通过编程实现 我假设有一个很好的Matla

我已经开始在Matlab中学习图像处理,我有一个小问题

我试图将图像的FFT可视化。当我提供空矩阵时,函数imshow会满足我的需要(例如sintax imshow(图,[])

现在,imshow做得很好,因为当提供空矩阵时,它会将图片中的最低值显示为黑色,最高值显示为白色,并相应地调整所有其他值(至少我是这样理解的)

imshow的缩放效果非常好,我想知道是否有一个Matlab函数可以拍摄图像并执行这种缩放?我想在使用imshow后手动保存图片,但我想通过编程实现


我假设有一个很好的Matlab功能可以做到这一点,但是在谷歌搜索之后,我找不到任何解决方案。

听起来像是
imagesc
是你想要的。但是自然地,要显示FFT,你必须去掉复杂的值,例如,做一些像分别创建幅值、相位图之类的事情。但是这是说,
imshow
已经是一个可以缩放的Matlab函数,所以我不太清楚为什么需要一个新函数;
imagesc
至少可以让您获得颜色


然后,为了保存,使用
imwrite

听起来像
imagesc
是你想要的。但是自然地,要显示FFT,你必须去除复杂的值,例如,分别创建幅值、相位图。但是这意味着,
imshow
已经是一个Matlab函数,可以进行缩放,所以我不太喜欢了解您为什么需要一个新函数;
imagesc
至少可以让您获得颜色


然后,为了保存,使用
imwrite

在调用
imwrite
之前,您需要重新缩放图像,使其最小值为零,最大值为255(对于8位图像)

例如:

img = randn(100);
figure,imshow(img,[]); %# show the image

mx = max(img(:));
mn = min(img(:));

imgScaled = (img-mn)/(mx-mn);

%# convert to uint8 and save
imwrite( uint8(round(imgScaled*255))), 'test.tif');

%# reload and display without scaling 
%# if we have done everything correctly
%# the images before and after should look alike
imgLoaded = imread('test.tif');
figure,imshow(imgLoaded)

在调用
imwrite
之前,您需要重新缩放图像,使其最小值为零,最大值为255(对于8位图像)

例如:

img = randn(100);
figure,imshow(img,[]); %# show the image

mx = max(img(:));
mn = min(img(:));

imgScaled = (img-mn)/(mx-mn);

%# convert to uint8 and save
imwrite( uint8(round(imgScaled*255))), 'test.tif');

%# reload and display without scaling 
%# if we have done everything correctly
%# the images before and after should look alike
imgLoaded = imread('test.tif');
figure,imshow(imgLoaded)

有很多很好的答案,但是对于快速破解,你可能想打印你在图中看到的内容,更多信息请参见
doc print

有很多很好的答案,但是对于快速破解,你可能想打印你在图中看到的内容,更多信息请参见
doc print
信息。

imshow所做的对我来说很好。但是,保存图像是我的问题,因为如果我只使用imwrite,它将保存图像,而不使用imshow提供的缩放。另外,我使用FFT的大小来可视化它是否重要。基本上,我想要的是保存imshow的输出,但要从Matlab代码中保存,而不是having单击“另存为…”等,因为我有很多图片要保存。@我明白了。所以正如Jonas所指出的,你可以自己提前缩放图像数据。imshow的功能对我来说很好。但是,保存图像是我的问题,因为如果我只使用imwrite,它会按原样保存图像,而不会像imshow那样缩放ers.p.s.我使用FFT的大小来可视化它是否重要。基本上,我想要的是保存imshow的输出,但要从Matlab代码中保存,而不是单击“另存为…”等,因为我有很多图片要保存。@Matlabuser先生,我明白了。然后正如Jonas指出的,你可以自己在ad中缩放图像数据万斯。我希望有一个Matlab的内置解决方案,但是这很好,而且正是我想要的。谢谢你的帮助!@ MrMatLaPube:不客气。如果你觉得它有用的话,请考虑接受我的答案。我希望有一个Matlab的内置解决方案,但是这很好地工作,正是我想要的。谢谢HEL。“谢谢!”如果你觉得它有用的话,请考虑接受我的回答。