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

news2024/11/19 3:38:35

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

clear

x = 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。

clear

x = 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.coloradmin.cn/o/1226085.html

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

相关文章

记录一次较为完整的服务打包发布流程

文章目录 1. Spring Boot编程2. 打包成jar服务3. 使用Docker Compose发布服务 1. Spring Boot编程 使用Spring Initializr 选择基本工具 导入常用工具 配置多环境 参考https://blog.csdn.net/qq_37992410/article/details/121008415, https://blog.csdn.net/xiao…

mongodb——原理简介,docker单机部署

MongoDB noSQL数据库 特点 数据文件存储格式为 BSON (JSON 的扩展) {“name”:“joe”}这是 BSON 的例子,其中"name"是键,"joe"是值。键值对组成了 BSON 格式。面向集合…

【开源】基于Vue和SpringBoot的康复中心管理系统

项目编号: S 056 ,文末获取源码。 \color{red}{项目编号:S056,文末获取源码。} 项目编号:S056,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

C++之谓词

C之谓词 一元谓词 #include<iostream> using namespace std; #include<vector> #include<algorithm> //仿函数 返回值类型是boo1数据类型&#xff0c;称为谓词 //一元谓词class GreaterFive { public:bool operator()(int val){return val > 5;} };void …

Windows 下 Sublime Text 2.0.2 下载及配置

1 下载地址&#xff1a; https://www.sublimetext.com/2 Sublime Text 2.0.2 (此版本选择了 portable version)&#xff0c;直接解压就可以使用。 https://download.sublimetext.com/Sublime Text 2.0.2.zip 2 配置Python相关环境 (前提 Pyhon 已加入环境变量) 2.1 新建 py …

Java 某市教育局综合信息管理平台

1) 项目简介 “互联网智慧教育”管理平台&#xff0c;实现全市教育信息系统集中建设和教育数据在云平台的汇集&#xff0c;在全市中小学整体实现电子班牌、家校通等功能&#xff0c;选取部分重点学校进行一卡通系统试点建设&#xff0c;实现智能化门禁、道闸、实体卡等功能…

【小黑送书—第八期】>>别再吐槽大学教材了,来看看这些网友强推的数学神作!

导读&#xff1a;关于大学数学教材的吐槽似乎从来没停止过。有人慨叹&#xff1a;数学教材晦涩难懂。错&#xff01;难懂&#xff0c;起码还可以读懂。数学教材你根本读不懂&#xff1b;也有人说&#xff1a;数学教材简直就是天书。 数学教材有好有坏&#xff0c;这话不假&…

实验三 页面置换算法

一. 实验目的&#xff1a; 1、熟悉虚存管理的各种页面淘汰算法 二、实验环境&#xff1a; 硬件环境&#xff1a;计算机一台&#xff0c;局域网环境&#xff1b; 软件环境&#xff1a;Windows XP及以上版本 Professional操作系统平台&#xff0c;Visual C 6.0专业版或企业版…

企业计算机服务器中了mallox勒索病毒怎么解决,勒索病毒解密文件恢复

随着科技技术的不断发展&#xff0c;网络技术得到了快速提升&#xff0c;但网络安全威胁也不断增加&#xff0c;近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助信息&#xff0c;企业的计算机服务器遭到了mallox勒索病毒攻击&#xff0c;导致企业的所有业务中断&#…

网站被攻击怎么办

随着互联网的普及和网络攻击的日益增多&#xff0c;网站安全成为了众多企业和个人必须面对的重要问题。为了保护网站和用户数据的安全&#xff0c;内容分发网络&#xff08;CDN&#xff09;成为了一种有效的解决方案。本文将介绍CDN在保护网站安全、抵御网络攻击方面的作用和应…

C++之函数对象

C之函数对象 #include<iostream> using namespace std; #include<string> ///函数对象 (仿函数) //函数对象在使用时&#xff0c;可以像普通函数那样调用&#xff0c;可以有参数&#xff0c;可以有返回值 //函数对象超出普通函数的概念&#xff0c;函数对象可以有自…

优质好文链接

文章目录 1.开放源码有利于系统安全2.yum源配置&#xff0c;这一篇就够了&#xff01;(包括本地&#xff0c;网络&#xff0c;本地共享yum源)3.rpm包是什么4.SSH是什么意思&#xff1f;有什么功能&#xff1f; 1.开放源码有利于系统安全 开放源码有利于系统安全 2.yum源配置…

SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(七)

LEFT JOIN LEFT JOIN 同样用于关联两个表&#xff0c;ON 关键字后指定两个表共有的字段作为匹配条件&#xff0c;与 INNER JOIN 不同的地方在于匹配不上的数据行&#xff0c;INNER JOIN 对两表匹配不上的数据行不返回结果&#xff0c;而 LEFT JOIN 只对右表&#xff08;table2…

80C51单片机的七种寻址方式

首先理解这样的等式 地址是20H的寄存器中&#xff0c;存放的内容是01H (20H)#01H 符号指令的书写格式 单个操作数的指令&#xff1a; 操作助记符 [目的操作数] 两个操作数的指令&#xff1a; 操作助记符[目的操作数],[源操作数] 描述符号 Rn(n0~7)当前工作寄存器组中的寄…

Pandas分组聚合_Python数据分析与可视化

Pandas分组聚合 分组单列和多列分组Series 系列分组通过数据类型或者字典分组获取单个分组对分组进行迭代 聚合应用单个聚合函数应用多个聚合函数自定义函数传入 agg() 中对不同的列使用不同的聚合函数 分组聚合的流程主要有三步&#xff1a; 分割步骤将 DataFrame 按照指定的…

【如何将任何直流电机变成伺服电机】

【如何将任何直流电机变成伺服电机】 1 前沿2 伺服电机工作原理3 如何制作定制伺服电机4 AS5600 编码器 – 磁性旋转位置传感器5 定制伺服电机电路图6 PCB设计7 自定义伺服3D模型8 定制伺服齿轮箱的 3D 打印零件9 对控制器进行编程9.1 引导加载程序刻录9.2 代码上传9.3 源代码9…

echarts 中如何添加左右滚动条 数据如何进行堆叠如何配置那些数据使用那个数据轴

左右滚动条的效果 此项的具体配置可参考 https://echarts.apache.org/zh/option.html#dataZoom-inside.moveOnMouseWheel dataZoom: [{id: dataZoomX,type: inside,// start: 0,// end: this.xAxis.length > 5 ? 10 : 100,startValue: this.xAxis.length > 5 ? 5 : 0,/…

linux如何重置root密码

目录 当我们想要重置root管理员密码时&#xff0c;我们可以有两种方法进行&#xff1a; 方法一、init方法 1、重启系统&#xff0c;在下图所示界面按e键 2、随后进入以下界面&#xff0c;、将ro修改为rw&#xff0c;在行末尾添加init/bin/sh。​编辑 3、随后按Ctrlx启动到s…

Java集合大总结——Iterator(迭代器)接口

Iterator接口 在程序开发中&#xff0c;经常需要遍历集合中的所有元素。针对这种需求&#xff0c;JDK专门提供了一个接口java.util.Iterator。 Iterator接口也是Java集合中的一员&#xff0c;但它与Collection、Map接口有所不同。 Collection接口与Map接口主要用于存储元素Ite…