分辨率 - 像素密度 - HiDPI
对于电子显示屏而言,第一要务是要显示信息。与信息显示直接相关的硬件,是光源。每一个光源称为【物理像素】。
光源 - 像素密度 - 物理像素
像素本身是没有大小和尺寸的。同一个显示屏,可以有 100 * 100 个像素(光源),也可以有 10000 * 10000 个像素。但是显示屏的大小并没有改变,改变的是 光源 的多少。如果显示屏有更多的 光源,那么就可以显示更加细腻的画面。这是【像素密度】。
对于硬件来说,提升【像素密度】,可以在单个面积上,展示更加丰富的色彩。这需要制作工艺的提升,iPhone 4 首次将其商业化,开发出了 Retina (HiDPI)屏幕。当时称为 2 倍屏,和 iPhone 3G 相比,屏幕的物理尺寸没有改变,但是像素密度提升了 4 倍,即 宽、高 的密度提升了 2 倍。
这是硬件制作工艺上的提升,但如何有效的使用塞了更多光源的屏幕,是软件来工作的。实际上,很多复杂的逻辑,都是软件来规定的。毕竟硬件只提供了【像素密度】更高、更多的【光源】,其他并没有做。比如软件开发中如何实现 0.5px 的宽高、如何调整设置系统的分辨率等等。
光源,也称为【物理像素】,是真实的提供发光和色彩的源头。
分辨率 - 虚拟像素
px 的定义
随着制作工艺的提升,光源 会趋向于越来越小。所以 光源 是没有尺寸概念的,但是开发人员需要有这个概念,不然怎么设置一个图片的大小或者一个矩形的宽高呢?
所有的软件都是在操作系统上运行的,而操作系统对像素进行了抽象,即【分辨率】。
对于同一台电脑,可以在系统设置中调整不同的分辨率,如 100 *100 或者 1000 * 1000。这些分辨率是【虚拟像素】,即把当前屏幕的宽度分割成 100 或者 1000 份,每一份就是 1px。
如果一台笔记本的屏幕光源(物理像素)是 2000 * 2000,系统设置分辨率为 2 * 2,即将整个屏幕的宽度和高度分割成 2 份。那么开发人员设置一个矩形的大小是 1 * 1,这个矩形就占据整个屏幕的 1/4,且使用了 500 * 500 个光源
px 是虚拟的
通过上面的定义,可以看出 px 是操作系统层面根据当前屏幕的大小分割成 n 份后虚拟出来的尺寸。同样的分辨率,如果屏幕大小不同,那么 1px 的大小也是不同的。
px 是和 光源 直接相关的,如果 px 是真实的,那么就和 光源 绑定。而我们可以设置 0.5px,但 1 个光源 是不可能只亮一半的。
根据上面的例子 (2000 * 2000 物理像素的例子),如果设置 0.5px,实际上是使用 250 * 250 个光源。
像素软件化
之前提到物理硬件上,只需要提高制作工艺来增加单位面积内的 光源 数量,即【物理像素密度】。除此之外,光源 出了提供不同色彩的亮度之外,并没有更多的变化性。
而软件,将对 光源 进行复杂的设定,来实现 高清晰度 等不同场景的使用效果。
准确来说,软件层面对 光源 最根本的对接是:对于需要展示的内容,如何更有效的使用 光源 来展示更加细腻、丰富的色彩。对接的不好,内容会有锯齿。对接的好,内容会很细腻。
单纯提高硬件制成
对于同一个尺寸大小的显示器,因为制成的提升,我们来看下渲染的变化,假设现在需要展示 100 * 100 大小的花朵:
原始:1000 * 1000 物理像素。设定屏幕分辨率(虚拟像素)为 500 * 500。一个虚拟像素需要 2 个物理像素。此时花朵的视觉效果是:宽度和高度都是屏幕的 1/5,占用 200 * 200 个光源。
制成提升:10000 * 10000 物理像素。
- 如果屏幕分辨率保持 500 * 500 不变,一个虚拟像素需要 20 个物理像素。此时花朵的视觉效果是:宽度和高度都是屏幕的 1/5,占用 2000 * 2000 个光源。此时,在花朵的边缘部分因为有更多的光源,会变得清晰(清晰是加强原始的表现。若花朵像素不佳,这里的清晰会变成锯齿)。
- 如果屏幕分辨率调整 1000 * 1000,一个虚拟像素需要 10 个物理像素。此时花朵的视觉效果是:宽度和高度都是屏幕的 1/10,占用 1000 * 1000 个光源。此时,花朵在屏幕上看起来非常小。无法正常浏览。
- 在 2 的基础上,把屏幕设置 scale,即 200% 放大。此时花朵的视觉效果是:宽度和高度都是屏幕的 1/5,回到了正常效果。占用 2000 * 2000 个光源。此时,和 1 情况基本没有变化。
通过上面的观察,可以发现单纯提高硬件制成,并不能有效的带来清晰度的提升。一来无法提高分辨率(导致无法使用),二来无法有效的提高清晰度(本来渲染内容的质量就不佳)。
此时,还会无效的增加 CPU、GPU 的算力。渲染成指数的增加,但没有实际的视觉产出。
这时候就需要软件的配合。在 iPhone 4 的 Retina 屏幕商用前,也有其他厂商提高了物理像素密度,但并没有 Retina 的效果。
HiDPI - Retina
我们把具有物理像素高密度的屏幕,称为 HiDPI 屏幕,苹果把它叫做 Retina 屏幕,一样的。
实际上,并不是说需要单独制作 HiDPI 屏幕,而是只要一个屏幕的像素密度达到了一个标准,那么它就是 HiDPI 屏幕了。HiDPI 并不是一个功能开关,而是对具有高像素密度的屏幕的总称。
前面说到提高硬件制成并不能有效的带来视觉效果的提升,即 软件 需要参与进来。如果软件不主动的使用高密度,那就像前面(屏幕分辨率保持 500 * 500 不变)的例子中说明的,并不会带来显著的变化。
软件提升视觉质量
使用 HiDPI,即创建了一个 N 倍虚拟分辨率来更加高效的使用高密度的光源。
假设有原始 10 * 10 图像,需要在 50 * 50 分辨率的显示屏上显示,显示屏的物理光源也是 50 * 50。
在这种情况下不开启 HiDPI,前面已经介绍过。下面说下开启 2 倍 HiDPI 的流程:
- 原始图像中的 10 * 10 像素区域首先被放大到 20 * 20 的渲染像素。软件层面会使用插值算法 (如双线性插值) 来创建新的像素,提供了更多的颜色过渡空间,使过渡更平滑。
- 然后这个 20 * 20 的渲染区域被映射到 50 * 50 的物理像素区域。
下面是对比效果:
1 | // raw px |
在这个例子中:
- 原始的单一颜色区域 (如纯红色) 仍然保持清晰。
- 颜色过渡区域 (如红色到绿色的边界) 有更多的中间色,使得过渡更加平滑。
- 边缘和细节更加平滑,减少了锯齿感。
这种渲染方法的优势:
- 更多的渲染像素允许更精细的颜色渐变。
- 插值算法可以创建原始图像中不存在的中间色,使边缘更平滑。
- 当这些渲染像素映射到物理像素时,即使不是完全一一对应,也能保留更多细节。
480p
对于一个 480p 的视频,它的具体尺寸是多少?没有具体的尺寸,多大多小都可以。
480p 表示 640 * 480 px,即宽 640 个像素,高 480 个像素。每个像素存储的是 RGB 色彩信息,是数字信息。
480p 表示共计 640 * 480 个色彩点位的数字信息。具体到渲染的时候,可以放大缩小,放的太大了,就会模糊了。因为当使用 3000 个光源来表达 640 个色彩点,肯定有很多地方是填充补位的,那些光源并没有实际表达视频色彩,只是填充了过度色彩(甚至没有过度,锯齿会更加厉害)。
High Dynamic Range - from ai
HDR(高动态范围)技术允许显示器在更宽的亮度范围内展示图像,能够同时提供更深的黑色和更亮的白色。这种技术增强了图像的总体对比度,使得色彩更加丰富和深邃。HDR 显示器可以更精确地展示从暗部到亮部的细节,这在标准动态范围(SDR)显示器中往往无法实现。
Extreme Dynamic Range (XDR)
XDR(极致动态范围)是 Apple 公司对 HDR 技术的一种营销称呼,用于其某些显示产品。XDR 旨在提供比传统 HDR 更高的亮度和对比度水平,以达到更加出色的视觉效果。这种技术特别适合专业视频编辑和高端图像处理,其中对色彩准确性和细节展示的需求极高。