004--学Matplotlib需要拧清的概念之Inches, PPI, DPI

2023-12-23 23:48

本文主要是介绍004--学Matplotlib需要拧清的概念之Inches, PPI, DPI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先问两个问题,你是否思考过:

  1. 为什么matplotlib绘图,有一个“figure"图形对象,还需要“canvas"画布对象?又不是真的在画布上绘画!
  2. matplotlib中绘图时是如何实现坐标定位的?

在photoshop中也是如此,在学习计算机绘图时,经常见到一些概念,如:

  • DPI
  • PPI
  • 图像
  • 画布
  • 图像尺寸
  • 画布尺寸
  • 分辩率
  • inches
  • 像素(pixels)
  • Axes
  • Axis
  • …等

像我这样的草根,初期常拧不清它们,并且困惑于:为什么要弄出这么多“差不多”(相似)的概念?

我也很长时间停留在对它们的一知半解上,因为那时也认为,大致知道这此概念就“差不多了”,我只要能画出图形来即可!

其实理清这些概念很重要,它是输出图像质量、绘图坐标设置、matplotlib一些参数设置等的基础,甚至有时直接决定了你自由操控matplotlib的能力(如坐标变换)。在对它们模糊的时候,使用matplotlib,很多参数设置的目的和产生的结果也就是模糊的。

等我花一些时间理清楚它们后,过去对matplotlib中一些不能理解的地方也豁然开朗了。

本打算把类似上面的一些基础性概念在一篇文章中做个总结,因篇幅的限制,需要分几篇了。

显示器的尺寸

计算机绘图过程中,绝大多数时间,我们都是在显示器(本文以液晶显示器为例)上操作、查看图像。

显示器有一个最直接、固定的参数,就是经常说的屏幕尺寸

屏幕尺寸(物理尺寸),用英寸 inches表示,它是矩形"液晶面板"的对角线长度。比如,17寸显示器,23.1寸显示器…等。

矩形的对角线是23.1 inches,显示器的长、宽是多少呢?这就引入了屏幕比例的概念,如标准的4:3,16:9。

1 英寸 = 2.54 厘米。

我正在用的台式机的显示器是:23.1英寸,16:9。

用 l 、w 分别表示液晶面板的长和宽,有:
在这里插入图片描述
解上面的方程组即可大概地计算出显示器屏幕的长和宽了,单位是厘米。

计算结果是:

  • l = 51.55556 ≈ 51 厘米
  • w = 28.76559 ≈ 29 厘米

我们可以用尺子量一下屏幕显示区的长和宽。更精确的是使用硬件检测软件获取显示器的详细信息,我的显示器检测结果如下:
在这里插入图片描述
小结:

  1. 用液晶面板的对角线长度,用英寸、inches作单位,表示显示器的尺寸 ;
  2. 屏幕的长宽比叫屏幕比例,如 16:9;
  3. 基于上面的约定计算出屏幕的物理长、宽,一般用厘米或英寸表示。

在matplotlib中,有一个**display**坐标系统,就是基于这个屏幕构建的坐标,所以用inches或像素标识。

后面会专题讨论matplotlib中的各种坐标系,上面的知识会有助于你的理解。

液晶显示器的“像素”pixel

液晶是一种特殊的有机化合物, 在常温条件下,它呈现出既有液体的流动性,又有晶体的光学各向异性,因而称为“液晶”。

液晶的物理特性是:当通电时,排列变得有秩序,使光线容易通过(看起来就是亮);不通电时排列混乱,阻止光线通过(看起来就是灰暗)。让液晶如闸门般地阻隔或让光线穿透。

液晶层中的液滴都被包含在细小的单元格结构中,**一个或多个单元格构成屏幕上的一个像素。**在玻璃板与液晶材料之间是透明的电极,电极分为行和列,在行与列的交叉点上,通过改变电压而改变液晶的旋光状态,液晶材料的作用类似于一个个小光阀。这样就可以控制每个像素的亮度和颜色了。

显然,相同尺寸的液晶层上划分的单元格(像素)越多,显示器的显示精度就越高,显示出来的图像就越细腻,但这种显示器的制作工艺难度就会增加,成本也会增加。

显示器就是通过在一个一个单元格(像素)中填充不同的颜色来表达图像的。
在这里插入图片描述
像素就是最小的显示单元格,在一个单元格中只能显示相同的颜色。
在这里插入图片描述

分辨率 resolution

我们在选购显示器时,非常关注的"分辨率"参数,它就与”像素“有关。像素常用字母PX表示。

分辨率,又称解析度、解像度。即显示屏幕区域被分解为多少个像素(单元格)。

虽然在系统中有设置显示器分辨的地方,但液晶显示器的最大分辨率在出厂后就是固定的了。能设置的仅是当前分辨率。下图是windows 10 系统设置显示分辨率的界面。

在这里插入图片描述
在这里插入图片描述
我的显示器最大分辨率是 1920*1080,即长向上有1920个PX,宽向上有1080PX

总的有 2073600 个像素,它就是我的显示器的的分辨率了。这个数字太大,不好理解,所以一般直接用类似 1920PX * 1080PX这样的形式来表示屏幕的分辨率,手机屏幕也是如此。

**题外话:**液晶面板的单元格划分在出厂时就固定了,为什么还能设置当前分辨率呢?

假如我将当前分辨率调整为1280px*960px,按照定义,长向就是1280个像素,宽向就是960个像素。其实并不是你改变了显示器分辨率,而是操作系统欺骗了你。操作系统通过一系列运算将1920*1080个单元格矩阵变换为1280*960个模拟像素矩阵呈现给你。所以,就有了当前分辨率和最大分辨。

PPI 是什么?

基于分辨率的含义,人们还用每英寸长度上像素个数来表示屏幕分辨率,即 Pixels per inches,缩写为 PPI。

我的显示器长向上最大为1920像素,物理长度是51厘米(折合20.078英寸),每英寸长度上有1920 px / 20.078 inches ≈ 96 PPI。

所以,有时又说我的显示器分辨率是 96 PPI。

也有人把他说成 96 DPI,这是不严格的。对于显示器分辨率,严格来说应该用 96 PPI。当然你很清楚它们的含义时,反而混用也没有关系了。

DPI 又是什么?

DPI 是 Dots per inches的缩写。DPI是一个与打印机、印刷紧密相关的概念。

打印机是通过一个一个的墨点来打印图像的,每个墨点的色彩只能是一样的,打印机在每英寸上可打印的点数就是DPI。显然DPI越大,打印出来的图像就越细腻。所以,常用DPI作为打印机的分辨率来表示打印机的最大可打印质量。

为什么说是最大可打印质量呢?即这台打印机最大打印分辨率,但实际打印分辨率还与图像的分辨率有关。

一般打印机的分辨在150-300DPI,高的能达到600DPI。

我们用100%的比例打印图像:

  • 假如有一台打印机的分辨率是600DPI,要打印一幅分辨率(后面会讨论图像分辨率)为300DPI的图像,打印机是不可能改变图像分辨率的,打印到纸上的照片的分辨率就是300DPI,因为图像的原始点是这么大,即使打印机用了两个点表达图像中的一个点,但这两个点是一样的色彩。
  • 反过来,用一台300DPI的打印机,打印一幅600DPI的图像,打印出来的照片也只能是300DPI的。因为打印机无法表达更小的点。

总结:

严格来说:

  • 像素就是显示器、图像被分割成的最小格子;
  • 单个格子越小,每英寸上格子就越多,即像素越大,显示就越细腻;
  • 单个格子越大,每英寸上格子就越少,即像素越小,显示就越粗糙;
  • 显示分辨率用PPI,Pixels Per Inches;
  • 打印分辨率用DPI,Dots Per Inches。

理解这些概念有助于你自由操控 matplotlib 。

(This end.)

这篇关于004--学Matplotlib需要拧清的概念之Inches, PPI, DPI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/529890

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

【机器学习-一-基础概念篇】

机器学习 定义分类算法 应用 定义 机器学习最早是被Arthur Samuel 提出的一个概念,指计算机无需明确编程即可学习的研究领域。1950年他发明的跳棋程序,这个人机对弈游戏让他的声名鹊起,机器学习这个概念才进入大众的是视线。 在这个跳棋程序里,他编程了一种算法,这个程序与Arthur下了数万次跳棋,计算机逐渐学会了下在哪里有更大的可能会赢得比赛,哪里会输,通过这种方法,最

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

matplotlib绘图中插入图片

在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。 一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。 经

AI辅助编程里的 Atom Group 的概念和使用

背景 在我们实际的开发当中,一个需求往往会涉及到多个文件修改,而需求也往往有相似性。 举个例子,我经常需要在 auto-coder中需要添加命令行参数,通常是这样的: /coding 添加一个新的命令行参数 --chat_model 默认值为空 实际上这个需求涉及到以下文件列表: /Users/allwefantasy/projects/auto-coder/src/autocoder/auto