像素与图像

小学计算机科学一种索引色光栅图像,每像素使用 1 至 3 位,并明确指定固定宽度的游程编码数据量

像素工作室

每个方格都是一个数字

选择一种墨色并在网格上绘制。使用键盘时,可聚焦到一个单元格并按 Enter 键。

从左向右、再从上向下读取。游程编码将每个游程存储为一个颜色索引和一个固定宽度的长度值。

测量记录本

更改设置、测试预测并保存结果。最多保留 12 个快照。

关于此实验

绘制一张图片,其中最小的方格以调色板索引的形式存储。更改分辨率和色深,查看二进制代码,并比较未压缩数据大小与简单游程表示的大小。将精确的像素网格导出为 PNG,看看图像信息与实际文件格式有何不同。

学习目标

  • 将图像像素关联到一个数字调色板索引。
  • 根据尺寸和每像素位数计算原始存储量。
  • 测试哪些排列适合使用游程编码进行压缩。

使用方法

  1. 1绘制一张 8×8 的图片,并读取像素内显示的二进制调色板代码。
  2. 2将每像素位数从 3 改为 1。比较可用颜色和原始存储量。
  3. 3比较一张空白图片和一张带有垂直条纹的图片。保持尺寸和色深不变,并说明运行段数量。
  4. 4使用“撤消”比较编辑内容,记录测得的载荷数量,然后导出 PNG。

模型

索引像素原始比特数
固定宽度的游程编码载荷

假设

  • 像素按每一行从左到右读取,然后从上到下读取。每个像素都使用所选的固定比特数。
  • RLE 模型将每个运行段存储为一个颜色索引和一个长度,各使用 ceil(log2(像素数 + 1)) 比特。运行段可以跨越行边界。
  • 调色板表、尺寸、文件头和填充均不计入载荷数量。PNG 使用不同的压缩方案,因此下载的文件大小不一定与这些数量相等。

在课堂上试试这个实验

  1. Q1为什么尺寸相同的两张图片可能需要不同大小的 RLE 载荷?
  2. Q2为什么宽度和高度都加倍时,原始存储量会变为四倍?

常见问题

RLE 总能让图片变小吗?

不能。颜色频繁变化会产生许多运行段,所需比特数可能超过原始光栅数据。

PNG 文件为什么会比显示的载荷更大或更小?

文件包含头部并使用 PNG 压缩,而本实验统计的是刻意简化的像素或 RLE 载荷。