我已经开始在Matlab中学习图像处理了,我遇到了一个小问题。
我正在尝试可视化图像的FFT。当我提供空矩阵时,函数imshow可以满足我的需要(例如sintax imshow(image,[])。
现在,imshow做得很好,因为当提供空矩阵时,它会将图片中的最低值显示为黑色,最高值显示为白色,并相应地调整所有其他值。 (至少这是我理解的方式)。
imshow做的缩放是很好的,我想知道是否有一个Matlab函数可以拍摄图像并执行这种缩放?我想在使用imshow后手动保存图片,但我想以编程方式执行此操作。
我认为有一个很好的Matlab功能可以做到这一点,但在谷歌搜索后,我找不到任何解决方案。
答案 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
以获取更多信息。