欢迎来到数据表示:图像表示!

各位未来的计算机科学家,大家好!本章节将带你了解计算机是如何在只懂得 0 和 1(二进制)的情况下,成功呈现出精美且复杂的图像。

不必担心数学或物理不是你的强项,我们会将图像表示法拆解成简单的构成要素。在本节结束时,你将掌握数字存储任何图片所需的三大关键要素:像素 (pixels)分辨率 (resolution)色彩深度 (colour depth) 以及 元数据 (metadata)

重点摘要:为什么这很重要?

理解图像表示非常关键,因为它直接影响文件大小图像质量。这些知识能帮助我们计算存储需求,这是计算机科学中的一项核心技能。

1. 位图与像素:数字图像的基础

当计算机存储一张照片时,它并不是存储照片中的场景,而是存储一张巨大的“地图”,用来描述构成图片的每一个微小点。这类图像被称为位图 (Bitmap)(即位组成的地图)。

类比:方格纸绘图

想象一下,试着只用一张方格纸来重现一幅名画。你将每个小方格填上一种颜色,直到整幅画显现出来。数字位图的运作方式正是如此。

什么是像素 (Pixel)?

数字图像中最小的元素称为像素 (Pixel)(是 Picture Element 的缩写)。

• 像素是一个单一、微小且均匀的颜色方块(或点)。
• 每个像素都会被分配一个二进制代码(一串 0 和 1),告诉计算机它应该呈现什么颜色。
• 计算机会读取这张“地图”(位图),并根据存储的二进制代码来设定屏幕上每个像素的显示状态。

快速检查: 如果你在手机或电脑屏幕上将照片放大到极致,最终会看到一个个独立的方格,那就是像素!

快速回顾:位图 vs. 像素

位图 (Bitmap): 所有像素组成的整个网格或地图。
像素 (Pixel): 网格内的一个单一彩色点。

2. 分辨率:网格的大小

决定图像质量和文件大小的第一个因素是分辨率 (Resolution)

分辨率是指建立图像所使用的像素总数。通常以“宽度乘高度”来表示。

计算分辨率

如果一张图片的宽度为 1200 像素,高度为 800 像素,其分辨率就是 \(1200 \times 800\)。

要找出图像中的总像素数,只需将宽度乘以高度:
\(\text{总像素} = \text{宽度} \times \text{高度}\)
例子: \(1200 \times 800 = 960,000\) 像素。

分辨率的影响

高分辨率: 意味着图像有更多的像素,这会带来更精细的细节和清晰度(图像更锐利)。
低分辨率: 意味着像素较少。如果你试图在大屏幕上显示低分辨率图像,像素会变得明显(使图像看起来有“格子感”或像素化/起格)。
文件大小: 更高的分辨率需要存储更多的像素数据,导致文件大小更大

别担心! 当人们说屏幕是“Full HD 1080p”时,指的是 \(1920 \times 1080\) 像素(宽乘高)的分辨率。那可是超过 200 万个像素呢!

3. 色彩深度:定义每个点的颜色

我们知道像素是一个单一的彩色点,但计算机如何知道它是什么颜色?这由色彩深度 (Colour Depth) 来决定。

什么是色彩深度(每像素位数 - BPP)?

色彩深度是用来存储单个像素颜色信息的位 (bits) 数量。有时也称为每像素位数 (Bits Per Pixel, BPP)

由于一个位只能是 0 或 1,使用更多的位可以创造出更多的组合,从而呈现更多的颜色。

计算可显示yaml的颜色数量

可呈现的颜色数量可以使用以下公式计算:
\(\text{颜色数量} = 2^{\text{色彩深度(以位为单位)}}\)

色彩深度的分步范例

让我们看看增加 BPP 如何大幅增加颜色选项:

范例 1:1-bit 色彩深度
BPP: 1 bit
计算: \(2^1 = 2\) 种颜色
结果: 这张图像只能显示 2 种颜色(通常是黑与白)。
范例 2:8-bit 色彩深度
BPP: 8 bits
计算: \(2^8 = 256\) 种颜色
结果: 这在旧型电脑游戏中很常见。它允许有限的颜色范围,但不足以达到照片般的写实质量。
范例 3:24-bit 色彩深度(全彩/真彩色)
BPP: 24 bits
计算: \(2^{24} = 16,777,216\) 种颜色(约 1670 万种)
结果: 这被称为全彩 (True Colour)。由于人眼只能分辨约 1000 万种颜色,因此 24-bit 的深度被认为已达到照片级的真实感,是现代数码摄影和显示器的标准。

记忆口诀: 更多的每像素位数 (BPP) = 更深的颜色 = 更好的质量 = 更大的文件大小。

你知道吗? 24-bit 色彩深度是通过将 8 个位分配给光的三原色:红、绿、蓝 (RGB) 来实现的。\(8 \text{ bits} + 8 \text{ bits} + 8 \text{ bits} = 24 \text{ bits}\)。

4. 元数据:与图像一同存储的信息

除了原始像素数据外,图像文件还必须存储元数据 (Metadata)

元数据被定义为关于数据的数据 (data about data)。如果没有元数据,计算机只会看到一长串二进制数字,无法得知网格应该绘制多宽,或者每个像素由多少个位组成。

常见图像元数据例子

宽度与高度: 以像素为单位的图像尺寸(分辨率)。
色彩深度: 所使用的每像素位数 (BPP)。
文件格式: 文件类型(例如 BMP、PNG、JPEG)。
创建日期与时间: 图像创建或拍摄的时间。

计算备注: 当使用公式 \(\text{分辨率} \times \text{色彩深度}\) 计算存储需求时,计算出的是不包括元数据的原始图像大小。

5. 计算图像文件大小

现在我们将分辨率和色彩深度结合起来,计算未经压缩的文件大小(不包括元数据,以位、字节、KB 或 MB 为单位)。

核心公式

\(\text{文件大小(以位为单位)} = \text{总像素数} \times \text{色彩深度 (BPP)}\)

分步计算过程

请依照这四个关键步骤准确计算文件大小:

步骤 1:计算总像素数(分辨率)

将图像宽度乘以图像高度。
例子: 一张图片宽度为 400 像素,高度为 300 像素。
\(400 \times 300 = 120,000\) 像素

步骤 2:计算总位数(以位为单位的文件大小)

将总像素数乘以色彩深度 (BPP)。
例子: 上述图片的色彩深度为 8 bits (8 BPP)。
\(120,000 \times 8 = 960,000\) 位

步骤 3:将位转换为字节 (Bytes)

由于 8 bits 等于 1 byte,将总位数除以 8。
\(960,000 \div 8 = 120,000\) 字节

步骤 4:转换为千字节 (KB) 或 兆字节 (MB)

对于大文件,我们会转换成更大的单位。请记住,对于存储空间计算:
\(1 \text{ Kilobyte (KB)} = 1024 \text{ Bytes}\)
\(1 \text{ Megabyte (MB)} = 1024 \text{ KB}\)

将步骤 3 的结果(120,000 字节)转换为千字节 (KB):
\(120,000 \div 1024 \approx 117.19\) KB

🚨 常见错误警告 🚨

在计算机科学中,将字节转换为 KB,或 KB 转换为 MB 等单位时,请务必记得除以 1024(而不是 1000),因为这是二进制的单位转换!

计算总结

计算文件大小能显示质量与存储空间之间的取舍:

• 如果你将分辨率翻倍(例如从 \(400 \times 300\) 变为 \(800 \times 600\)),像素总数会增加为原来的 4 倍,文件大小也随之增加为 4 倍
• 如果你将色彩深度翻倍(例如从 8 BPP 变为 16 BPP),文件大小会翻倍

这解释了为什么高分辨率、高色彩的图片在手机上会占用那么多空间!

本章重点总结
• 数字图像以位图 (Bitmaps) 存储,是由单个像素 (Pixels) 组成的网格。
分辨率 (Resolution)(\(\text{宽度} \times \text{高度}\))决定了像素总数。
色彩深度 (Colour Depth) (BPP) 决定了每个像素所使用的位数,影响颜色忠实度(\(2^{\text{BPP}}\) 种颜色)。
元数据 (Metadata) 是关于数据的数据(例如尺寸、色彩深度、文件格式),用以正确重现图像。
文件大小(位) = \(\text{分辨率} \times \text{色彩深度}\)(不包括元数据)。
• 转换单位:\(8 \text{ bits} = 1 \text{ Byte}\);\(1024 \text{ Bytes} = 1 \text{ KB}\)。

你已经掌握了计算机如何看待和存储图片了!做得好!现在你已经准备好挑战数据计算的练习题了。