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.hqwc.cn/news/191444.html

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

相关文章

迪杰斯特拉算法(C++)

目录 介绍: 代码: 结果: 介绍: 迪杰斯特拉算法(Dijkstras algorithm)是一种用于计算加权图的单点最短路径的算法。它是由荷兰计算机科学家Edsger W. Dijkstra在1956年发明的。 该算法的思路是&#xf…

合成事件在san.js中的应用

一、 什么是合成事件 DOM3 Event 新增了合成事件(CompositionEvent ), 用于处理通常使用 IME 输入时的复杂输入序列。 二、合成事件常见事件 compositionstart:文本合成系统如 IME(即输入法编辑器)开始新的输入合成时会触发 compositionst…

SUID提权教程

SUID提权方法 一、SUID是什么?二、如何设置SUID权限?三、已知的具有SUID权限的二进制可执行文件四、查找具有root权限的SUID的文件1.find命令提权2.nmap命令提权3.more命令提权4.less命令提权5.bash命令提权6.vim命令提权7.awk命令提权8.cp命令提权 五、…

springcloudalibaba-3

一、Nacos Config入门 1. 搭建nacos环境【使用现有的nacos环境即可】 使用之前的即可 2. 在微服务中引入nacos的依赖 <!-- nacos配置依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-…

【动态规划】求解编辑距离问题

目录 问题描述递推关系运行实例时空复杂度优化Hirschberg 算法 问题描述 编辑距离问题是求解将⼀个字符串转换为另⼀个字符串所需的插⼊、删除、替换的最小次数。 C O M M O M → s u b C O M M U M → s u b C O M M U N → i n s C O M M U N E \mathbb{COMMOM} \overset{sub…

HarmonyOS真机调试报错:INSTALL_PARSE_FAILED_USESDK_ERROR处理

1、 新建应用时选择与自己真机匹配的sdk版本 查看自己设备sdk版本 创建时先择匹配版本&#xff1a; 2、 根据报错提示连接打开处理方案 3、查询真机版本对应的compileSdkVersion 和 compatibleSdkVersion 提示3.1版本之后和3.1版本之前的不同命令&#xff08;此处为3.0版…

Scrum框架中的Sprint

上图就是sprint里要做的事。Sprint是scrum框架的核心&#xff0c;是所有的想法、主意转换为价值的地方。所有实现产品目标的必要工作都在sprint里完成&#xff0c;这些工作主要包括Sprint 计划&#xff08;Sprint planning&#xff09;、每日站会&#xff08;Daily Scrum&#…

异地工业设备集中运维、数据采集,一招搞定

为了提升运维效率&#xff0c;能够及时发现和响应设备的故障、异常和潜在问题。 越来越多的企业都在搭建“集中式”的远程智慧运维体系&#xff0c;以提高运维效率和降低成本。 异地工业设备远程运维&#xff0c;提升响应效率、降低运维成本 以国内陕西某机床公司为例&#xff…

vue+element实现多级表头加树结构

标题两种展示方式 方式一 完整代码: <template><div class"box"><el-tableref"areaPointTable":data"tableData"border:span-method"objectSpanMethod":header-cell-style"tableHeaderMerge"><el-ta…

【10套模拟】【6】

关键字&#xff1a; 有向图入度、无向图度、一次深度优先、快速排序平均性能、折半查找、判断是否是二叉排序树、链式直接入插入排序

现在的各类解释非常混乱,到底什么是智慧城市?

智慧城市&#xff0c;简单来说&#xff0c;就是运用先进的信息和通信技术&#xff0c;让城市管理更加智能、高效&#xff0c;让市民的生活更加便捷、舒适。 在我们日常生活中&#xff0c;智慧城市带来的改变无处不在。 想象一下&#xff0c;当你早上醒来&#xff0c;你的手机已…

腾讯云新用户优惠活动有哪些可以参加?腾讯云新人服务器优惠活动

腾讯云作为国内领先的云服务提供商&#xff0c;不仅为用户提供稳定可靠的云服务器&#xff0c;还为新用户带来了一系列的优惠活动和代金券&#xff0c;以降低购买成本&#xff0c;提高业务效益。在这里&#xff0c;我们将为您详细介绍腾讯云服务器的新人优惠活动及代金券&#…