我们的目标就是:用最小的箱子(最少的数据量),装下所有衣服(图像信息),并且打开后衣服要基本能用(图像可看)。
核心思想:扔掉人眼看不出的信息,并用聪明的方法打包剩下的信息。
常见的编码方式可以分为三大类:
第一类:基础篇——直接给每个像素“贴标签”
这就像给你的每件衣服(像素)都用一个固定长度的标签(比如8位二进制数)来记录颜色。
是什么:最简单的编码。例如,一张黑白照片,纯黑是0,纯白是255,灰色是中间值。每个像素都用一个数表示。
优点:非常简单,原汁原味。
缺点:非常“占箱子”。一件薄T恤和一件厚羽绒服都用一样大的袋子装,很浪费。图像中大片相同颜色(如蓝天)也被重复记录无数次。
典型代表:BMP位图格式就是类似这样(略有优化)。
第二类:进阶篇——找到规律,合并同类项
这类方法开始“偷懒”,寻找图像中的重复模式。
1. 游程编码:对付“条纹衫”
怎么做:如果连续100个像素都是“天蓝色”,它不会记100次“天蓝”,而是记“天蓝,100次”。
场景:非常适合颜色单一、有大片连续相同区域的图像,比如卡通、图标、部分屏幕截图。
现实例子:就像打包袜子时,你不会一只一只卷,而是把相同颜色和款式的袜子配对卷起来,然后标上“同款袜子,5双”。
2. 词典编码:建立“常用短语手册”
怎么做:编码器一边看图像,一边建立一个“常用图案词典”。比如,“蓝-蓝-白”这个组合出现了50次,就给它一个短编号#01。之后遇到这个组合,就用#01代替,大大缩短了码长。
场景:适用于各种有重复纹理的图像,比如砖墙、织物、自然风景。
现实例子:你和朋友约饭,不用每次都写“老地方第三家火锅店靠窗第二桌”,而是直接说“老位子”三个字。GIF格式就用了类似思想。
第三类:高手篇——转换视角,抓大放小(现代图像压缩核心)
这类方法最厉害,也是JPEG等主流格式的基础。它分三步走,像一个“图像处理流水线”:
第一步:色彩空间转换与采样 —— “人眼对亮度更敏感”
先把图像从红绿蓝模式,转换成“亮度 + 色度”模式。
关键操作:对色度信息进行“下采样”(比如把4个像素的色度信息合并成1个)。因为人眼对颜色细节不敏感,对明暗细节敏感。这步直接扔掉了一半以上的颜色数据,但人眼几乎察觉不到。
第二步:离散余弦变换 —— “抓大放小,保留主干”
把图像分成8x8的小块,对每个小块进行一种数学变换(DCT)。这个变换能把像素信息,转换成一系列不同频率的“波形”。
关键理解:图像的大部分能量(主要特征)都集中在少数几个低频波形上。高频波形代表边缘、纹理等细节。
这就好比一段音乐的主旋律(低频)和其中的细微装饰音(高频)。
第三步:量化和熵编码 —— “丢弃装饰音,并用终极秘籍打包”
量化(有损压缩的核心):用一个“量化表”去衡量每个频率波形的重要性。像对待“装饰音”一样,把那些不重要的高频分量直接归零。量化表越“狠”,归零越多,压缩率越高,但细节损失也越大(图片会变模糊、出现马赛克)。
熵编码(无损打包):对量化后剩下的一大串数字(很多是0),用最精简的编码方式(如哈夫曼编码)进行最终打包。给出现频率高的数字组合短码,给出现频率低的组合长码。
总结与类比
| 编码思想 | 生活比喻 | 常见格式/应用 |
|---|---|---|
| 基础像素记录 | 每件衣服单独装一个标准袋 | BMP |
| 游程编码 | “同款袜子,5双”这样记录 | PCX, 部分TIFF |
| 词典编码 | 用“老位子”代替一长串描述 | GIF |
| 变换+量化+熵编码 | 1. 只关注衣服款式,忽略线头(转换采样) 2. 保留主要几件外套衬衫,舍弃大部分配饰(DCT+量化) 3. 用真空压缩袋终极打包(熵编码) | JPEG (照片), MPEG/HEVC/H.264 (视频) |
给初学者的核心建议:
无损编码(前两类):追求精确还原,像用Zip压缩文件,解压后一模一样。压缩比有限。
有损编码(第三类):追求极致压缩,允许信息丢失。像把音乐转成MP3,大部分人听不出区别。JPEG就是典型的有损编码,它巧妙地利用了人眼的视觉特性来大幅压缩数据。
所以,当你保存一张JPEG图片,选择“高质量”或“低质量”时,你本质上是在调整那个量化表的“严格程度”,决定了要扔掉多少“装饰音”(高频细节)。
框图要点解读:
1.三大技术路径
基础编码:保真但低效,作为其他格式的基础层
无损压缩:完全还原,适合图形、医疗图像等
有损压缩:智能取舍,适合照片、视频等多媒体
2.JPEG核心三步曲(现代压缩典范)
色彩处理:
RGB → YCbCr + 色度采样→ 立即减少约50%数据变换与筛选:
DCT变换 + 量化→ 分离主次信息,丢弃人眼不敏感的细节高效编码:
之字形扫描 + 熵编码→ 用最经济的代码表示剩余信息
3.两个核心权衡
压缩比 vs 图像质量:在JPEG量化步骤中直接体现,质量滑块本质是量化表的严格程度
编码复杂度 vs 解码速度:通常编码复杂耗时,解码简单快速(利于传播查看)
4.一个统一思想
所有方法都围绕“消除冗余”展开:
空间冗余:相邻像素相似性(游程、DCT利用)
视觉冗余:人眼特性(色度采样、量化利用)
统计冗余:数据出现概率不均(熵编码利用)
给初学者的实践建议:
当你在手机或电脑上保存图片时:
选PNG:相当于走“无损压缩”路径,适合线条图、文字截图
选JPEG:就是走完上面完整的“有损压缩”三步骤,适合照片
调整JPEG质量滑块:就是在调整“量化表”的严格程度
保存为WebP/HEIF:使用了更先进的变换和预测技术,但基本思想一致