MATLAB画图分辨率、图像大小研究

MATLAB画图分辨率、图像大小研究

  • Figure属性中 InnerPosition Position OuterPosition区别
  • 画图与打印的分辨率和图像大小研究
    • 首先明确两个概念:
    • MATLAB实操画图

Figure属性中 InnerPosition Position OuterPosition区别

在画图的时候,我们经常需要设置Figure属性,其中就有三个属性是有关图像大小的。

在这里插入图片描述

通过测试和查阅资料,他们三者之间的区别可以这么概括:

Position和InnerPosition没有区别,不包括边框、菜单栏、工具栏和标题栏等的大小
OuterPosition则是包括了边框,菜单栏、工具栏和标题栏的大小。

如下图所示,蓝色框是InnerPosition或Position,红色框是OuterPosition。
由于我们画图的最终结果是不需要边框、菜单栏、工具栏的,所以我们一般设置InnerPosition或Position,而不去设置OuterPosition

在这里插入图片描述

画图与打印的分辨率和图像大小研究

首先明确两个概念:

一、对于一个已经确定的jpg或者png格式的图像:

  1. 当图像的大小单位“像素” 时,像素数永远是恒定的;
  2. 当图像的大小是cm inch这种单位时,其cm数或者inch数是变化的,这与系统分辨率、或者打印分辨率有关。

例如一个图像的大小以像素为单位时,是 300 × 300 300\times300 300×300
那么假设打印分辨率是300dpi,那么打印出来的图像大小就是 1 inch × 1 inch 1 \text{inch} \times1\text{inch} 1inch×1inch
假设打印分辨率是600dpi,那么打印出来的图像大小就是 0.5 inch × 0.5 inch 0.5 \text{inch} \times0.5\text{inch} 0.5inch×0.5inch


二、在使用MATLAB画图的时候,使用不同的分辨率保存图像,保存的分辨率不同,生成图像的像素数也就不同。(MATLAB画出来的图可以看作矢量图,保存的图像是位图,这个保存的过程可以看作矢量图向位图转换)

例如使用MATLAB画了一个 10 inch × 10 inch 10\text{inch}\times10\text{inch} 10inch×10inch的图,如果用 96 96 96dpi来打印成jpg格式,那么打印出来的图的大小就是 960 × 960 960\times960 960×960像素,如果用 192 192 192dpi来打印成jpg格式,那么打印出来的图的大小就是 1920 × 1920 1920\times1920 1920×1920像素


这两个概念对我们画图确定图像大小时至关重要。

MATLAB实操画图

在使用MATLAB画图的时候,最终输出的图像大小与画图时候设置打印输出设置二者有关。
画图时候设置也就是设置Figure对象的Position
打印输出设置也就是使用print函数时候调用的分辨率参数,例如'-r96'表示以96dpi分辨率打印。

举个例子:

这种情况下,使用设置Figure对象的Position的像素值为 800 × 600 800\times600 800×600,设置的打印分辨率是96dpi

clearx = 0:0.01:2*pi;
y = sin(x);% 创建一个新的图形窗口
fig = figure;
plot(x,y)dpi = 96;fig.Units = "pixels";
fig.Position = [100, 100, 800, 600]; % 设置图形窗口的位置和大小
fig.Color = [1, 1, 1]; % 设置图形窗口的背景颜色为白色print(fig, 'saved_figure1.jpg', '-djpeg', ['-r', num2str(dpi)]);

最终输出的图像大小像素值就是 800 × 600 800\times600 800×600,通过查看图像属性,发现确实如此:

在这里插入图片描述

如果我想以更高的分辨率打印,那么结果如何?请看下面的例子:

此时使用设置Figure对象的Position的像素值仍然为 800 × 600 800\times600 800×600,但是打印分辨率变成了600dpi。

clearx = 0:0.01:2*pi;
y = sin(x);% 创建一个新的图形窗口
fig = figure;
plot(x,y)dpi = 600;fig.Units = "pixels";
fig.Position = [100, 100, 800, 600]; % 设置图形窗口的位置和大小
fig.Color = [1, 1, 1]; % 设置图形窗口的背景颜色为白色print(fig, 'saved_figure1.jpg', '-djpeg', ['-r', num2str(dpi)]);

此时查看图片属性,发现如下此时宽度为 5000 5000 5000像素,高度为 3750 3750 3750像素,而且分辨率仍然是96dpi,和设置的完全不一样这是咋回事?
在这里插入图片描述

我的理解是这样:

  1. 首先,画图时候设置宽和高分别是 800 800 800 600 600 600像素,由于windows系统一个像素是1/96inch,所以,画出来的矢量图的大小就是 800 ÷ 96 = 8.33 800\div96=8.33 800÷96=8.33inch宽和 600 ÷ 96 = 6.25 600\div96=6.25 600÷96=6.25inch高。(MATLAB画的是矢量图,矢量图不存在分辨率、像素这种说法,只有多少inch大小这种说法;而画图时候设置的像素只是为了确定这个矢量图的inch大小)。

  2. 然后,由于以600dpi进行打印,那么打印出来的像素数就是 8.33 × 600 = 5000 8.33\times600=5000 8.33×600=5000宽和 6.25 × 600 = 3750 6.25\times600=3750 6.25×600=3750高。所以打印得到的图像的 5000 5000 5000 3750 3750 3750是这么来的。

那么为什么这里分辨率还是96dpi?而不是600dpi?
因为这里600dpi只是用来打印,确定jpg图的像素数的,而windows系统分辨率默认是96dpi,所以这里仍然是显示96dpi。这就与前面提到的第一个概念“确定图像的像素数恒定不变,但是大小、分辨率会随着系统、打印分辨率而变化”是一致的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据处理】Python:实现求条件分布函数 | 求平均值方差和协方差 | 求函数函数期望值的函数 | 概率论

猛戳订阅! 👉 《一起玩蛇》🐍 💭 写在前面:本章我们将通过 Python 手动实现条件分布函数的计算,实现求平均值,方差和协方差函数,实现求函数期望值的函数。部署的测试代码放到文后了,运行所需环境 python version >= 3.6,numpy >= 1.15,nltk >= 3.4,tqd…

Git 提交竟然还能这么用?

大家好,我是鱼皮。Git 是主流的代码版本控制系统,是团队协作开发中必不可少的工具。 之前已经给大家分享过 Git / GitHub 的学习指南,感兴趣的同学可以先看视频了解:https://www.bilibili.com/video/BV1KZ4y1e7cG。 这篇文章&am…

BUG:编写springboot单元测试,自动注入实体类报空指针异常

原因:修饰测试方法的Test注解导入错误 造成错误的原因是 import org.junit.Test;正确的应该是 import org.junit.jupiter.api.Test前者是Junit4,后者是Junit5 junit4的使用似乎要在测试类除了添加SpringbootTest还要添加RunWith(SpringRunner.class) 同时要注意spring-boot-s…

【Seata源码学习 】篇三 seata客户端全局事务开启、提交与回滚

1.GlobalTransactionalInterceptor 对事务方法对增强 我们已经知道 GlobalTransactionScanner 会给bean的类或方法上面标注有GlobalTransactional 注解 和 GlobalLock的 添加一个 advisor (DefaultPointcutAdvisor ,advisor 绑定了PointCut 的 advise) 而此处的 …

工业基础类IFC—材质和纹理

在我们的 IFC技术交流群(788206534)里,经常会有人提问“如何学习 IFC文档或者其开发”的问题。对于这个问题,我一直没有机会做一个完整的回答,这次我认真回忆了自己关于IFC的学习经历,在此与大家分享。一是…

Wireshark 截取指定端口海量包分析

有个应用要分析一下协议,但是8939,8940传输一下子几个G的数据,但是要分析的端口8939实际上只有几个MB最多,如果用wireshark有界面的程序一截取就会卡死,于是使用命令行方式,截取指定端口的 tshark -i &quo…

Flume的安装部署及常见问题解决

1.安装地址 (1) Flume官网地址:http://flume.apache.org/ (2)文档查看地址:http://flume.apache.org/FlumeUserGuide.html (3)下载地址:http://archive.apache.org/dist…

基于Qt QList和QMap容器类示例

## QList<T> QList<T>容器是一个数组列表,特点如下: 1.大多数情况下可以用QList。像prepend()、append()和insert()这种操作,通常QList比QVector快的多。这是因为QList是基于index标签存储它的元素项在内存中(虽然内存不连续,这点与STL的list 是一样的),比…

【机器学习基础】K-Means聚类算法

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;相对完整的机器学习基础教学&#xff01; ⭐特别提醒&#xff1a;针对机器学习&#xff0c;特别开始专栏&#xff1a;机器学习python实战…

linux镜像的下载,系统下载(个人使用)

文章目录 一、系统之家二、国内镜像源三、Centos官网四、安装成功截图五、镜像类型的区别参考文档 一、系统之家 系统之家官网 二、国内镜像源 下载镜像地址&#xff1a; 1、官网地址&#xff1a;https://www.centos.org/ 2、阿里镜像站&#xff1a;https://mirrors.aliyu…

一文读懂:testcafe框架和页面元素交互

一、互动要求 使用 TestCafe 与元素进行交互操作&#xff0c;元素需满足以下条件&#xff1a;☟ 元素在 body 页面窗口或 iframe 窗口的元素内。如果某个元素在视口之外&#xff0c;则 TestCafe 通过滚动可以滚动到元素可见。 元素是可见的&#xff0c;具有以下属性&#…

实力认证|易知微上榜中国信息通信研究院数字孪生城市产业图谱!

近期&#xff0c;中国通信院就数字孪生技术在城市层面的广泛应用&#xff0c;根据数字孪生产业框架&#xff0c;结合产业发展动态和企业综合实力评估&#xff0c;选取了核心产业、关联产业和辐射产业等各领域业务代表性较强的企业&#xff08;机构&#xff09;&#xff0c;形成…

Flink(六)【DataFrame 转换算子(下)】

前言 今天学习剩下的转换算子&#xff1a;分区、分流、合流。 每天出来自学是一件孤独又充实的事情&#xff0c;希望多年以后回望自己的大学生活&#xff0c;不会因为自己的懒惰与懈怠而悔恨。 回答之所以起到了作用&#xff0c;原因是他们自己很努力。 …

FPGA系列:1、FPGA/verilog源代码保护:基于Quartus13.1平台保护verilog源码发给第三方但不泄露源码

catlog 需求具体步骤工程描述去掉相关调试文件切换顶层模块并导出相应模块为网表文件切换回原顶层模块并添加相应保护模块的qxp文件再次编译工程 参考&#xff1a; 需求 有时需要将源码交付给第三方&#xff0c;但是源码中部分模块涉及到的核心代码无法暴漏给第三方。因此&…

2023年【高处安装、维护、拆除】模拟考试题及高处安装、维护、拆除模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年【高处安装、维护、拆除】模拟考试题及高处安装、维护、拆除模拟考试题库&#xff0c;包含高处安装、维护、拆除模拟考试题答案和解析及高处安装、维护、拆除模拟考试题库练习。安全生产模拟考试一点通结合国家…

C语言之qsort()函数的模拟实现

C语言之qsort()函数的模拟实现 文章目录 C语言之qsort()函数的模拟实现1. 简介2. 冒泡排序3. 对冒泡排序进行改造4. 改造部分4.1 保留部分的冒泡排序4.2 比较部分4.3 交换部分 5. bubble_sort2完整代码6. 使用bubble_sort2来排序整型数组7. 使用bubble_sort2来排序结构体数组7.…

golang学习笔记——接口interfaces

文章目录 Go 语言接口例子空接口空接口的定义空接口的应用空接口作为函数的参数空接口作为map的值 类型断言接口值 类型断言例子001类型断言例子002类型断言例子003巩固练习 Go 语言接口 接口&#xff08;interface&#xff09;定义了一个对象的行为规范&#xff0c;只定义规范…

基于java web个人财务管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

stable-diffusion-webui之webui.py

主要就是webui的启动这块&#xff0c;需要初始化的地方&#xff0c;东西还是挺多的。

8年资深测试,自动化测试常见问题总结,惊险避坑...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、自动化测试简介…