把一张 50MB 的 RAW 照片存成 JPEG,体积能从 50MB 瘦身到 2MB,缩了 96%。可你再把这张 JPEG 打开,每一个像素的位置都还在,亮度也几乎没变。这中间凭空消失的几十兆数据到底去了哪?这是 Branch Education 这支视频最迷人的地方——它没有用一堆术语把你吓退,而是把 JPEG 的整条流水线一层一层拆开,让你亲眼看见:JPEG 从头到尾没有删除任何一个像素,它删的是你的眼睛根本看不清的"频率"。
更反常识的是,这套算法里真正"丢数据"的步骤只有一步,剩下五步全是无损的数学变换。换句话说,JPEG 的高明之处不在于"压缩",而在于它对人眼弱点的精准利用——它知道你对亮度敏感、对颜色迟钝,对平滑渐变敏感、对细密纹理迟钝。压缩不是在抠字节,而是在算计你的视觉系统。这篇文章就把视频里的算法逻辑彻底讲透,并补上它没展开的工程细节。
| 项目 | 内容 |
|---|---|
| 视频标题 | How does JPEG Work?(JPEG 压缩如何运作) |
| 频道 | Branch Education(百万订阅级工程科普频道) |
| 时长 | 约 20 分钟 |
| 播放量 | 数十万(频道主力爆款之一) |
| 核心主题 | 逐层拆解 JPEG 图像压缩算法的每一步 |
很多人以为 JPEG 一上来就在"压"图像,其实第一步是个障眼法:它把图像从 RGB(红绿蓝)转换到 YCbCr 色彩空间。Y 是亮度(luminance),Cb 是蓝色色度,Cr 是红色色度。这一步本身无损,纯粹是换个坐标系。
为什么要换?因为人眼的视网膜上负责感知亮度的视杆细胞数量,远远超过负责感知颜色的视锥细胞。换句话说,你对黑白的分辨率极高,对彩色的分辨率其实很烂。JPEG 抓住这个弱点,在 Y(亮度)通道保留全部像素,却把 Cb、Cr(色度)两个通道按 4:2:0 抽样——每 4 个像素只保留 1 个颜色样本。
这一刀下去,色度数据直接砍掉一半还多,而你看到的照片颜色几乎没变化。视频里反复强调:这是整条流水线里"性价比最高"的压缩,几乎零感知损失。延伸一点:这正是为什么手机拍的天空、肤色看起来很自然——你的大脑会自动用亮度信息去"脑补"颜色边界。可以说,JPEG 第一刀骗的不是相机,是你的视神经。
做完色彩处理,JPEG 把每个通道切成无数个 8×8 像素的小方块,每一块独立处理。这个"8"不是随便选的:太小则编码效率低,太大则一个量化矩阵管不过来局部特征。64 这个数还恰好是 DCT 运算最顺手的大小。
这个分块决定了一件事:JPEG 所有著名的瑕疵都长成 8×8 的方块。你把一张 JPEG 放大到极致,或者把压缩质量拉到最低,看到的那种一格一格的马赛克、色块,正是这些 8×8 块的边界。视频里用可视化清晰展示了:相邻两个块各自算各自的频率,压得太狠时它们在接缝处"对不上",于是边界就裂开了。这是理解 JPEG 失真本质的关键——失真永远是块状的,因为它的工作单位就是块。
这是整条算法的灵魂,也是最反直觉的一步。对每个 8×8 块,JPEG 做一次离散余弦变换(DCT,Discrete Cosine Transform)。它把 64 个像素值,换成 64 个"频率系数"。变换后,左上角是 DC 系数(这块的平均亮度),往右下走,系数代表越来越高空间频率的成分——低频是平滑的明暗渐变,高频是头发丝、文字边缘那种剧烈变化。
关键是:DCT 本身完全无损、完全可逆。它不丢一个 bit,只是把图像从"空间域"翻译到"频率域",换了一种表达方式。那为什么还要费劲做这个翻译?因为图像的"能量"会高度集中在低频。视频用一个 8×8 灰度块演示:变换后,左上角几个数字很大,右下角一大片几乎是零。这一步为后面的"丢高频"埋好了伏笔——先把信号重排成"重要的在前、不重要的在后",才可能精准地只丢不重要的部分。这也是 DCT 比傅里叶变换(DFT)更适合图像的原因:它对实数信号能量更集中,边界不产生伪影。
整条流水线只有这一步是有损的、不可逆的。做法听起来很粗暴:把 64 个 DCT 系数,分别除以一张量化矩阵(quantization matrix)里对应的数字,然后四舍五入取整。量化矩阵的设计是——左上角(低频)除以小数,右下角(高频)除以大数。
结果就是:那些本来就很小的高频系数,被大数一除、再取整,直接变成了 0。它们携带的细节信息被永久抹掉,再也找不回来。而低频系数因为除以小数,基本保留。
Photoshop 里那个"质量 1–100"的滑块,本质上就是在整体缩放这张量化矩阵:质量越低,矩阵里的数越大,被清零的频率越多,文件越小、画面越糊。视频把同一张图用不同质量存出来对比,糊成马赛克和清晰如初的区别,全在这张表的数字大小上。这一步是 JPEG 的心脏——前面所有铺垫都是为了让你能在这里精准下刀。注意,量化矩阵不是算法自己学出来的,标准 Annex K 里直接给了一张"推荐表",几乎所有相机都在用它。
量化之后,每个 8×8 块的右下角通常是一大片 0。JPEG 用之字形扫描(zigzag scan),按对角线顺序重新读这 64 个数,让低频在前、高频在后,于是那些 0 就连续地堆在末尾。
接着用游程编码(RLE)把"连续的 0"压缩成"0 重复 N 次"。比如 20 个连续的 0,就记成一个符号。这一步无损,但因为高频全变成了 0,游程编码的收益惊人——这也是为什么"丢高频"能换来这么大的体积下降:真正占地方的高频信息,在量化那一步已经被归零,这里只是把零打包带走。DC 系数则单独做差分编码,只记本块和上一块的亮度差,进一步省字节。
打包完的符号流,最后再过一遍熵编码(Huffman 或算术编码)。原理是变长编码:出现频率高的符号用很短的二进制码,罕见的符号用长码。这一步同样完全无损。经过前几步,数据里已经充满了重复模式(大量零、大量相似差分),哈夫曼码能把它们压到理论极限附近。
到这里,原始像素已经被翻译成一段极其紧凑的二进制流。JPEG 的全程可以概括为:一次有损(量化)+ 五次无损(色彩变换、DCT、之字形、RLE、Huffman)。真正"破坏信息"的只有量化那一下,其余都是为了让那一下的战果最大化。
视频没重点讲,但这是工程上最容易踩的坑。JPEG 是为照片设计的——照片里大量平滑的渐变(天空、肤色、虚化背景),低频为主,量化几乎无损。但文字、截图、漫画、logo 这些内容恰好相反,充满了锐利的边缘和高对比度细节,全是高频信息。
把截图存成 JPEG,量化会把这些高频一刀清零,于是文字边缘出现一圈圈水波纹状的振铃噪声(ringing / mosquito noise),红字周围还会渗出彩色光晕。这就是为什么 UI 设计、代码截图永远该用 PNG(无损、专为高频锐边优化),而不是 JPEG。记住这条工程铁律:JPEG 给照片,PNG 给图形。新一代的 WebP / AVIF 在两者间做了更好平衡,但 JPEG 凭借无专利、全平台支持的先发优势,至今仍是互联网图像的默认格式。
flowchart TD
A[原始 RGB 图像] --> B[色彩空间转换<br/>RGB → YCbCr]
B --> C[色度抽样 4:2:0<br/>丢颜色分辨率 · 近乎无损]
C --> D[切成 8×8 像素块]
D --> E[DCT 离散余弦变换<br/>空间域 → 频率域 · 无损]
E --> F[量化 Quantization<br/>高频系数除大数清零<br/>★唯一真正有损的一步★]
F --> G[之字形扫描<br/>低频在前 高频零在后]
G --> H[游程编码 RLE + DC差分]
H --> I[哈夫曼/算术熵编码<br/>无损 · 压到极限]
I --> J[紧凑的 JPEG 文件]
F -.丢的是眼睛看不见的高频.-> K((人眼弱点:<br/>亮度敏感/颜色迟钝<br/>渐变敏感/纹理迟钝))
对开发者的启示:理解 JPEG 的本质是"砍高频",你就能在工程选型上少踩无数坑。做图片压缩服务时,永远不要用 JPEG 处理含大量文字或锐边的素材,质量 100 也救不了振铃噪声,应转 PNG/WebP;给照片做缩略图,质量设到 75–85 是甜点区,再高收益递减、再低块状伪影暴涨。反复打开-另存的代际损失(generation loss)是另一个隐形杀手:每次 JPEG 编码都会再量化一次,高频越丢越多,画质持续下滑——所以编辑链路里始终保留一份无损源(PSD/PNG/TIFF),只在最后导出时转一次 JPEG。
对普通用户的认知升级:你终于知道"图片质量"滑块调的到底是什么——不是"清晰度",而是"还剩多少高频细节"。下次看到压缩过度的马赛克照片,你能一眼指出那是 8×8 量化块在接缝处断裂。更重要的是,JPEG 揭示了一个深刻的工程哲学:最高效的压缩,不来自更聪明的打包算法,而来自对"接收端"(人眼)弱点的精准建模。视频压缩(H.264/HEVC)、音频压缩(MP3 的心理声学模型)都是同一套思路——丢掉感知不到的东西,远比费力压缩感知得到的东西高效一万倍。这也是为什么 MP3 能把 CD 压到十分之一却听不出差别:它丢的是你听觉的盲区,正如 JPEG 丢的是你视觉的盲区。
JPEG 不是在"删像素",它是在用量化一刀削掉你看不见的高频频率——这是把压缩算法做到极致的真正秘密:与其压缩全部信息,不如精准丢掉人眼感知不到的那部分。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
