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

时间:2012-02-12 14:06:32

标签: file-io fft matlab

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

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

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

imshow做的缩放是很好​​的,我想知道是否有一个Matlab函数可以拍摄图像并执行这种缩放?我想在使用imshow后手动保存图片,但我想以编程方式执行此操作。

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

3 个答案:

答案 0 :(得分:1)

你想要的是重新缩放你的图像,使它的最小值为零,并且在调用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)

答案 1 :(得分:0)

imagesc就像你想要的那样here。但是,自然地要显示FFT,你必须摆脱复杂的值,例如做一些事情,比如分别创建幅度,相位图。但是这样说,imshow已经是一个Matlab函数,它可以进行缩放,所以我不太清楚你为什么需要一个新函数; imagesc让你获得色彩,至少。

然后保存,请使用imwrite

答案 2 :(得分:0)

对此有很多好的答案,但是对于快速黑客攻击,您可能希望print在图中看到的内容,请参阅doc print以获取更多信息。