在Matlab中保存imagesc输出

时间:2012-08-27 16:48:11

标签: image matlab save

我正在使用imagesc来获得整体图像。但是,我只是设法显示它,然后我必须手动保存它,我无法找到一种方法来保存脚本中的图像与imwrite或imsave。它有可能吗?

代码:

image='C:\image.jpg';
in1= imread((image));
in=rgb2gray(in1);
in_in= cumsum(cumsum(double(in)), 2);
figure, imagesc(in_in); 

3 个答案:

答案 0 :(得分:6)

您还可以使用 print 命令。例如,如果您正在运行多个图像并想要序列化并保存它们,则可以执行以下操作:

% Create a new figure
figure (fig_ct)
% Plot your figure

% save the figure to your working directory
eval(['print -djpeg99 '  num2str(fig_ct)]);
% increment the counter for the next figure
fig_ct = fig_ct+1;

其中fig_ct只是一个计数器。如果您有兴趣以不同于jpeg的其他格式保存它,请查看文档,您可以执行tiff,eps等等。

希望这有帮助

答案 1 :(得分:4)

我相信您的问题可能在于您正在保存不在[0 1]范围内的双矩阵。如果您阅读documentation,就会看到

  

如果输入数组是double类,并且图像是灰度或   RGB彩色图像,imwrite假设动态范围是[0,1]和   在将数据写入文件之前自动将数据缩放255   8位值。

你可以将它自己转换为支持的类型(即逻辑,uint8,uint16或double)或者在[0 1]范围内将其转换为例如将其除以max:

imwrite (in_in / max (in_in(:)), 'out.jpg');

您可能仍希望进一步增加所保存图像的动态范围。例如,在除以最大值之前减去最小值

in_in = in_in - min (in_in(:));
in_in = in_in / max (in_in(:));
imwrite (in_in, 'out.jpg');

如果您想要imagesc显示

  

imagesc功能可将图像数据缩放到当前色彩映射的整个范围。

我不知道具体到底是什么意思,但是调用imagesc请求1变量,并检查图像句柄以查看colormap并将其传递给imwrite()

答案 2 :(得分:1)

我是一个非常新的程序员,如果这不是很有帮助,请提前道歉,但我遇到了同样的问题,并设法解决了问题。我使用uint8将其转换为:

imwrite(uint8(in_in), 'in_in.jpg', 'jpg');