1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab如何去除图像白边_matlab 图像保存时去除白边

matlab如何去除图像白边_matlab 图像保存时去除白边

时间:2020-04-06 11:02:10

相关推荐

matlab如何去除图像白边_matlab 图像保存时去除白边

很是讨厌MATLAB输出图像时自带的白边,尤其是当导出.eps格式时,很难通过编辑图片来去掉白边。网上有很多代码但是没有注释,有很多坑要填。这里提供一个去除白边的代码,自己在别人的基础上修改了而且加了注释。

MATLAB 坐标图

XLabel -- 标签

Title -- 标题

XTick -- 刻度线

XTickLable -- 刻度标签

下图显示了一个二维视图,其中 OuterPosition 值定义红色区域、Position 值定义蓝色区域,TightInset 值定义的品红色区域到蓝色之间的阴影区域。

OuterPosition和Position是一个四元素的向量:[left bottom width height],均为0-1的小数,且均相对于整个绘图区域来说的,即figure的大小。

这四个值的作用:left和bottom确定左下角的坐标,即[0.25 0.25]表示左下角在1/4处,width和height确定区域所占的高度和宽度,[0.5 0.5]表示区域的高度和宽度为整个绘图区域的一半。[0.25 0.25 0.5 0.5]表示将区域的长和宽设为整个绘图区域的一半并放在正中间(自己计算一下位置就知道)。

TightInset是也是一个四元素的向量,但是有些区别:[left bottom right top],其代表的是左下右上四个方向上的Position的margin,也就是Lable和Title所在区域(即阴影区域),其值也是0-1的小数,且均相对于整个绘图区域来说的。TightInest是只读属性,故只能通过设置Position来改变图像区域大小。

去白边代码

%%%%%%%%%%%%%%%%%%%%%%

% fn -- 图像,可通过“f=figure;”获得

% fan -- 图像坐标,可通过“fa=gca”获得

%%%%%%%%%%%%%%%%%%%%%%

f=[f1 f2 f3 f4]; % 四个不同图像

axs = [fa1,fa2,fa3,fa4]; % 四个不同图像的坐标对象

for i=1:4

% 图像保存去掉白边代码

ax = axs(i); % 获取一个坐标对象

set(ax,'LineWidth',1.5); % 设置坐标线宽

% set(ax, 'FontWeight','bold');

figure_FontSize=12; % 设置一个字号变量,方便统一更改

set(get(ax,'XLabel'),'FontSize',figure_FontSize); % 设置标签字号

set(get(ax,'YLabel'),'FontSize',figure_FontSize);

% 通过findobj更改对象的属性

set(findobj(get(ax,'Children'),'LineWidth',0.5),'LineWidth',1.5);

set(findobj('FontSize',10),'FontSize',figure_FontSize);

grid(ax,'on'); % 网格开

set(ax,'GridLineStyle',':','GridColor','k','GridAlpha',0.3); % 网格样式

% 删除白边的主体代码

% 注意在删除白边之后不可以再调整字号等属性,否则会将图像上的边缘上的内容剪裁掉

outerpos = ax.OuterPosition; % 获取外部框位置

ti = ax.TightInset; % 获取内容框位置

left = outerpos(1) + ti(1); % 把Position的left值设为左边margin的值

bottom = outerpos(2) + ti(2); % 把Position的bottom值设为右边margin的值

ax_width = outerpos(3) - ti(1) - ti(3); % 设置对应的宽度

ax_height = outerpos(4) - ti(2) - ti(4); % 设置对应的高度

ax.Position = [left bottom ax_width-0.01 ax_height-0.01]; % 可以微调一下,以保证边缘没有被剪裁掉。

fig = f(i);

fig.PaperPositionMode = 'auto';

fig_pos = fig.PaperPosition;

fig.PaperSize = [fig_pos(3)+1 fig_pos(4)+1];

end

% 保存图像为eps格式,psc2表示支持彩色

saveas(f1,'plot_img/example1.eps','psc2');

saveas(f2,'plot_img/example2.eps','psc2');

saveas(f3,'plot_img/example3.eps','psc2');

saveas(f4,'plot_img/example4.eps','psc2');

另外,如果保存的eps文件出现放大后模糊的问题,原因可能有两个:

图像中存在透明性质的点:取消透明即可

渲染方式为opengl:set(gcf, 'Renderer', 'Painters');更改渲染方式。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。