加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用Matlab的saveas另存图像无白边的方法

(2014-03-23 17:01:55)

图像处理的时候,有时候需要把中间结果或者最终结果存下来。如果是普通的图像,那可以直接用imwrite来存储。但有时候,我们显示了图像以后,又在上面plot了一些结果。这样,存储figure的时候用到的就是saveas函数。这个函数存储的图像默认有一个很宽的边。例如

1
2
3
4
h = figure(1);
imshow(img)hold on;
plot(x,y,'r*');
saveas(h, filename);

这里,我提供一个小函数,可以将图像以真正的尺寸保存下来。这样有两个好处

1. 美观,便于浏览,也便于贴到文档里

2. 没有多余的像素,可以继续进行后处理,不用担心像素坐标对不上号的问题。

这个函数如下:

1
2
3
4
5
6
7
8
9
10
function saveas_center(h, save_file, width, height)
% saveas_center(h, save_file, width, height)

set(0,'CurrentFigure',h);

set(gcf,'PaperPositionMode','auto');
set(gca,'position',[0,0,1,1]);
set(gcf,'position',[1,1,width,height]);

saveas(h, save_file);

只要知道了尺寸,通过使用这个saveas_center函数,就可以保存没有多余边界的图像了。

另外,文章发出后,评论中有网友提供了一种更好的方法。在matlab的files exchange里面有一个工具箱,叫做export_fig (链接)。这个工具箱专门用来导出matlab绘制的图像,功能包括重建坐标轴,保存成多种格式,多种颜色空间,背景透明,多种线性等,当然也包括上面提到的裁剪边缘。

感谢热心网友!

http://www.bfcat.com/wp-content/uploads/auto_save_image/2012/04/005939DBx.png

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有