首页 › programming › 没删一个像素:JPEG靠丢频率骗眼睛

没删一个像素:JPEG靠丢频率骗眼睛

把一张 50MB 的 RAW 照片存成 JPEG,体积能从 50MB 瘦身到 2MB,缩了 96%。可你再把这张 JPEG 打开,每一个像素的位置都还在,亮度也几乎没变。这中间凭空消失的几十兆数据到底去了哪?这是 Branch Education 这支视频最迷人的地方——它没有用一堆术语把你吓退,而是把 JPEG 的整条流水线一层一层拆开,让你亲眼看见:JPEG 从头到尾没有删除任何一个像素,它删的是你的眼睛根本看不清的"频率"。

更反常识的是,这套算法里真正"丢数据"的步骤只有一步,剩下五步全是无损的数学变换。换句话说,JPEG 的高明之处不在于"压缩",而在于它对人眼弱点的精准利用——它知道你对亮度敏感、对颜色迟钝,对平滑渐变敏感、对细密纹理迟钝。压缩不是在抠字节,而是在算计你的视觉系统。这篇文章就把视频里的算法逻辑彻底讲透,并补上它没展开的工程细节。

视频背景卡片

项目 内容
视频标题 How does JPEG Work?(JPEG 压缩如何运作)
频道 Branch Education(百万订阅级工程科普频道)
时长 约 20 分钟
播放量 数十万(频道主力爆款之一)
核心主题 逐层拆解 JPEG 图像压缩算法的每一步

核心内容拆解

一、第一刀砍的不是像素,是颜色——YCbCr 与色度抽样

很多人以为 JPEG 一上来就在"压"图像,其实第一步是个障眼法:它把图像从 RGB(红绿蓝)转换到 YCbCr 色彩空间。Y 是亮度(luminance),Cb 是蓝色色度,Cr 是红色色度。这一步本身无损,纯粹是换个坐标系。

为什么要换?因为人眼的视网膜上负责感知亮度的视杆细胞数量,远远超过负责感知颜色的视锥细胞。换句话说,你对黑白的分辨率极高,对彩色的分辨率其实很烂。JPEG 抓住这个弱点,在 Y(亮度)通道保留全部像素,却把 Cb、Cr(色度)两个通道按 4:2:0 抽样——每 4 个像素只保留 1 个颜色样本。

这一刀下去,色度数据直接砍掉一半还多,而你看到的照片颜色几乎没变化。视频里反复强调:这是整条流水线里"性价比最高"的压缩,几乎零感知损失。延伸一点:这正是为什么手机拍的天空、肤色看起来很自然——你的大脑会自动用亮度信息去"脑补"颜色边界。可以说,JPEG 第一刀骗的不是相机,是你的视神经。

二、8×8 分块:为什么 JPEG 的马赛克总是方形的

做完色彩处理,JPEG 把每个通道切成无数个 8×8 像素的小方块,每一块独立处理。这个"8"不是随便选的:太小则编码效率低,太大则一个量化矩阵管不过来局部特征。64 这个数还恰好是 DCT 运算最顺手的大小。

这个分块决定了一件事:JPEG 所有著名的瑕疵都长成 8×8 的方块。你把一张 JPEG 放大到极致,或者把压缩质量拉到最低,看到的那种一格一格的马赛克、色块,正是这些 8×8 块的边界。视频里用可视化清晰展示了:相邻两个块各自算各自的频率,压得太狠时它们在接缝处"对不上",于是边界就裂开了。这是理解 JPEG 失真本质的关键——失真永远是块状的,因为它的工作单位就是块。

三、DCT:把图像翻译成"频率语言"(无损的核心)

这是整条算法的灵魂,也是最反直觉的一步。对每个 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 是一场灾难

视频没重点讲,但这是工程上最容易踩的坑。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 丢的是你视觉的盲区。

延伸学习路径

  1. Branch Education 频道其他视频 — 同系列的《How does SSD Work?》《How do Touchscreens Work?》,同样的可视化深度,强烈推荐订阅。
  2. Unraveling the JPEG(Mozilla 的交互式教程) — online9787.github.io,可以在网页里实时拖动量化矩阵、看每个 8×8 块的 DCT 系数,把本文抽象的步骤变成可玩的实验。
  3. 《JPEG 原理与实现》— Computerphile 系列 — University of Nottingham 出品,用白板讲清 DCT 与量化的数学直觉,适合补理论。
  4. JPEG 官方标准 ISO/IEC 10918-1 / Annex K — 想看那张著名的量化矩阵原文,直接读标准附录,工程师硬核路线。
  5. AVIF 与 JPEG XL 对比 — 了解下一代图像格式如何用更大的块(AVIF 的 AV1 编码)和更聪明的熵编码超越 JPEG,以及为什么 JPEG 至今没被替代。

一句话总结

JPEG 不是在"删像素",它是在用量化一刀削掉你看不见的高频频率——这是把压缩算法做到极致的真正秘密:与其压缩全部信息,不如精准丢掉人眼感知不到的那部分。

参考来源

  1. How does JPEG Work? — Branch Education(YouTube) — 本文深度解读的核心视频
  2. How does JPEG Work? — Branch Education 配套图文 — 频道官方详细图文版,含逐步可视化
  3. How JPEG Compression Works — FoundThisWeek — 对 Branch Education 视频步骤的逐层概述
  4. JPEG 标准 ISO/IEC 10918-1 Annex K — 量化推荐矩阵与 baseline 流程的原始出处

本文由「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 等场景全覆盖。

51学通信知识星球海报-扫码加入