matlab 去除图片坐标值和白边,并用saveas函数按需要分辨率(尺寸)保存

问题场景:

使用matlab生成训练图像,想将所画图像去除坐标值和白边,并按一定长宽(分辨率)输出,在这个过程中遇到了几个问题,记录一下解决过程。

用saveas函数输出指定256x256大小的图像


问题描述

首先相当的是利用图像句柄的‘Position’属性进行设置

set(gcf,'Position',[0,0,256,256]);
set(gca,'Position',[0,0,1,1]);		%去除白边
axis off;  %关闭坐标
saveas(f,'pic0.png');

但查看输出图像却是400x400的,与想要的分辨率不同,就很疑惑,查看saveas函数的说明
在这里插入图片描述
说明saveas并不是按照设置的Position属性进行输出的,而是进行了转换,通过PaperPosition可以查看,因此我们查看这个属性。
在这里插入图片描述
在figure的属性中可以看到PaperPosition值,它的含义如下图所示:
在这里插入图片描述
于是可以通过PaperPositon的Width:6.7733cm,转换成英寸:
6.7733 / 2.54 = 2.6666 i n c h 6.7733/2.54=2.6666inch 6.7733/2.54=2.6666inch
而saveas的分辨率是150dpi,150×2.6666=399.99 由此得到了400*400图像的形成经过。经过反推可以知道,想要得到分辨率256x256的图像,其PaperPosition的Width为
256 / 150 = 1.70667 i n c h 256/150 = 1.70667inch 256/150=1.70667inch
对比两个PaperPosition的尺寸可以知道,将Position参数设置成
256 ∗ 1.70667 2.66667 = 163.8383 256*\frac{1.70667}{2.66667}=163.8383 2562.666671.70667=163.8383
即set(gcf,‘Position’,[0,0,163.84,163.84])
观察结果
在这里插入图片描述
在这里插入图片描述

输出是256×256的,满足要求,并且是纯图、不包含横纵坐标。至此问题得到解决。

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值