首页 › programming › 一张JPG凭什么缩小一百倍

一张JPG凭什么缩小一百倍

概述

Reducible 频道的《The Unreasonable Effectiveness of JPEG: A Signal Processing Approach》是图像压缩领域公认的高口碑长片深度教程:它把“一张照片为什么会从 6MB 变成 100KB、而你完全看不出区别”这件事,拆成了一台逐级运转的机器——人眼视觉的偏心、余弦波的语言、量化表的刀法、哈夫曼的打包术。看懂它,你不只是懂了 JPG,而是懂了所有现代压缩格式(MP3、H.264、AV1)共同的底层心法。本文按视频的叙事主线(编码流水线本身)逐层深读,补齐标准原文与视觉心理学实验的来龙去脉,最后给出三条能直接落地的工程启示。

注:本文写作环境无法实时联网核验,视频元数据(发布年份、播放量量级)依据频道公开页面信息整理,精确数字请以频道页面为准。

视频基本信息

项目 内容
视频标题 The Unreasonable Effectiveness of JPEG: A Signal Processing Approach(JPEG 出奇的高效:一堂信号处理课)
频道 Reducible(算法可视化类知识频道)
发布时间 2021 年(据频道历史页面整理,精确日期未能实时核验)
热度 数百万播放量级,是该频道播放量最高的代表作之一(据频道页面公开数据)
类型 算法可视化 / 信号处理与图像压缩深度解读
语言 英文(本文为其完整中文深度解读)

核心主张拆解

视频整条叙事就是 JPEG 的编码流水线:一整张图 → 色彩空间 → 8×8 小块 → 余弦波系数 → 量化 → 熵编码 → 一个小文件。每一站只回答一个问题:“这一刀砍下去,人眼为什么察觉不到?”

1. 问题设定:不压缩的图有多重

视频开场先把账算给你看:一张 1920×1080 的照片,每个像素记红绿蓝三个通道、每通道 8 比特,原始体积就是 1920 × 1080 × 3 ≈ 6MB。你的相册有几万张, raw 存下来是灾难。那无损压缩呢?把像素数据交给 ZIP 这类通用算法,几乎压不动——因为自然图像的像素值接近随机噪声,统计冗余极低,熵编码在像素层面无利可图。结论只有一个:必须“有损”,而问题是砍什么、砍多少。这个开场定下全片的批判性视角:JPEG 的每一刀都不是随意的暴力,而是精确瞄准“人眼看不出的维度”。

2. 第一刀:人眼是个偏心的传感器

第二站色彩空间。RGB 三个通道对压缩来说是“政治平等”的,但对人眼不是。人眼这个传感器由进化塑造:对亮度(明暗)变化极其敏感——那是威胁检测的原始需求;对色彩细节则相当迟钝。于是 JPEG 先把 RGB 转成 YCbCr:Y 是亮度,Cb/Cr 是两个色度分量,信息一个不丢,只是换了一组更适合“区别对待”的坐标。然后做色度子采样(常见 4:2:0):色度分辨率直接减半再减半,每 2×2 的像素块共享一组色度,色度数据砍掉四分之三,绝大多数人在绝大多数照片上看不出任何区别。视频在这里补了一句行业视角:这不是 JPEG 的发明,从模拟电视到 MPEG 视频,广播工业用同一招省带宽已经几十年。

3. 第二刀:64 个波纹,拼出任何照片

这是全片最漂亮的部分。JPEG 把图像切成 8×8 的小块,每块做一次离散余弦变换(DCT)。视频用动画把 64 个“基础图案”全部画出来:左上角是均匀的平色,往右下走,条纹越来越密——这是一组空间频率从零到最高的二维余弦波。数学事实是:任何 8×8 的像素块,都能表示成这 64 个图案的加权和,权重就是 DCT 算出的 64 个系数。变换本身一丝信息都不丢(无损、可逆),它只是换了语言:从“64 个像素值”换成“1 个平均亮度 + 63 个不同粗糙程度的波纹强度”。妙处在于,自然图像(皮肤、天空、墙面)的能量几乎全挤在左上角的低频系数里,右下角的高频系数接近零。换语言的代价是引入了 8×8 分块——块与块各自变换、各自量化,块边界失配的“块效应”从这里就埋下了种子。

4. 第三刀:量化,损失真正发生的地方

前两刀都在搬运信息,真正的“有损”只有一站:量化。JPEG 标准里有一张 8×8 的量化表——64 个除数,对应 64 个频率。低频位置除数小(保留精度),高频位置除数大(粗犷归整):每个 DCT 系数除以对应的除数再四舍五入。高频系数本来就近零,被大除数一除,大片直接变成 0。你熟悉的“JPEG 味”——锐边旁的蚊噪、色带、块纹——全部是这一步的量化噪声与分块失配的合谋。而那个被无数软件写成“画质百分比”的质量参数,本质是对这张标准量化表的缩放:常见实现(如 libjpeg)把 1-100 的质量值映射成缩放因子,拉低质量就是整体放大除数、让更多系数归零。视频在这里点破一个反直觉事实:在质量 75 附近,JPEG 与原图的差异普遍落在人眼可感知阈值之下,而体积已经缩小一个数量级。

5. 最后一刀:把零的海洋装订成文件

量化之后,一个 8×8 块的 64 个系数往往只剩左上角几个非零,其余全是 0——但 0 也占字节。JPEG 的收尾三连:Z 字形扫描(从左上角沿之字路线读系数,让高频的 0 首尾相接连成长串)、行程编码(把"0,0,0,0"记成“零 × 4”)、哈夫曼编码(高频符号用短码、低频符号用长码)。到这一步,文件才真正从 MB 级掉到几十上百 KB。视频强调流水线的因果链:色度子采样砍 4 倍、量化再砍 10-50 倍、熵编码再挤 2-3 倍——每一级的压缩率是有乘法结构的,这就是“缩小一百倍”的会计学。

6. 收束:为什么“不合理地有效”

视频的标题致敬了物理学家维格纳 1960 年的名篇《数学在自然科学中不合理的有效性》(The Unreasonable Effectiveness of Mathematics in the Natural Sciences):一套 1992 年定稿的工程标准,没有任何一步用了高深数学,却把“人类视觉系统的测量学”编码进了几张小小的表里,统治世界三十余年。Reducible 的答案是:JPEG 的伟大不在算法先进,而在它把每一个工程决策都锚定在“接收方(人眼)能感知什么”这个经验事实上——这是所有现代编解码器共享的设计哲学。

知识与理论溯源

视频没有列参考文献,但它的每一站都踩在真实的研究与标准之上:

批判性审查

“人眼看不出”大体成立,但不是对所有人成立。 量化表锚定的是平均观察者、常规观看距离;对块效应敏感的人群、大屏近距离观看、大面积深色渐变(8 比特/通道的色深限制导致的色带,与 DCT 量化无关)等场景,劣化是可感的。视频为了叙事干净,对个体差异着墨不多,这是本文需要校准的第一处。

“JPEG 适合一切图”是流传最广的误读。 JPEG 为自然图像(连续色调、平滑过渡)设计;对文字截图、UI 截图、像素画、线条图标这类“锐边 + 平色块”的内容,量化振铃会让文字边缘发糊、纯色块出现脏斑——正确工具是无损的 PNG(DEFLATE 压缩)。视频主线只讲照片场景,本文在此补充边界条件,避免读者把结论外推过度。

质量参数不是百分比,重复保存会代际劣化。 质量 90 与 50 的差异远超直觉,低于 30 会明显崩坏;更重要的是每次保存 JPEG 都会重新量化一次——转存十次就是十代量化噪声叠加。社交媒体“图片越传越糊”的直接机理就是平台反复转码:这不是 JPEG 的 bug,而是所有有损编码的宿命,工程上唯一的解法是“只压一次”。

别把 DCT 当成 JPEG 专属黑科技。 MP3/AAC 用同族的 MDCT,MPEG/H.26x 与 AV1 的变换核仍在 DCT 家族之内。视频标题聚焦 JPG,读者应意识到自己学到的是整个多媒体压缩时代的通用语法,这一点视频有暗示但未展开。

标题的“不合理有效”是修辞,不是反例。 它致敬维格纳的名篇,精确的说法应是:JPEG 的有效性恰恰“合理”——因为它的每个参数都源于对人类视觉的实测(Campbell-Robson 一脉的心理物理学,以及后来 Ahumada-Peterson、Watson 等人基于 CSF 标定 DCT 量化表的工作)。合理得近乎严丝合缝,才是它真正惊人的地方。

认知提升与实用启示

第一,按内容类型选格式,并对图片管线执行“只压一次”。 照片与连续色调图用 JPEG/WebP/AVIF,质量 70-85 通常就落在视觉无损区;截图、图标、像素画坚持 PNG。服务端生成缩略图时从原图单次派生,杜绝“压缩过的图再压一遍”的流水线——这是成本最低、效果最明显的图片性能优化。

第二,把“有损压缩”升级为一个通用工程思维模型。 JPEG 的本质是:找到接收方容忍损失的维度,然后在那里狠狠下刀。同构的例子无处不在——语音编码砍掉人耳听不见的频段、视频按内容复杂度动态分配码率、传感器网络做降采样上报。判断“这一刀能不能砍”的唯一标准,永远是接收端(人、模型、下游系统)的可感知阈值,而不是数据本身“完不完整”。当你的系统要瘦身时,先问“哪个维度的损失无人察觉”,往往比全局均匀缩容有效一个量级。

第三,学一条技术长寿的判据。 一份 1992 年的规格书统治世界三十年,靠的不是算法最强,而是:实现足够简单(90 年代的硬件跑得动)、标准免费开放、生态兼容的网络效应。JPEG 2000 的失败与 JPEG XL 的坎坷都在反向印证同一条规律:决定技术寿命的常常是工程摩擦力与生态惯性,而非论文里的领先幅度。做技术选型、乃至规划自己的技术生涯时,这条判据都值得放在评估表的第一行。

视频论证结构图

flowchart TD
    A["原始照片约6MB<br/>像素近似噪声难无损压缩"] --> B["RGB 转 YCbCr<br/>亮度与色度分家"]
    B --> C["色度子采样 4:2:0<br/>人眼迟钝处砍四分之三"]
    C --> D["切 8x8 小块做 DCT<br/>换成波纹系数语言"]
    D --> E["量化<br/>高频大步长大量归零"]
    E --> F["Z字扫描加行程编码<br/>零值连串"]
    F --> G["哈夫曼编码<br/>高频符号短码"]
    G --> H["输出几十上百KB<br/>人眼几乎无感"]

延伸阅读

  1. Reducible 频道主页 — 该视频所在频道,同系列还有哈夫曼编码、视频编解码等算法可视化长片。
  2. ITU-T T.81 标准原文 — JPEG 标准的原始文本,量化表与 Z 字扫描定义的出处。

参考来源

  1. Reducible - YouTube — 本文解读视频所属频道,元数据以频道页面为准。
  2. JPEG - Wikipedia — JPEG 标准史、色度子采样与量化表背景。
  3. Discrete cosine transform - Wikipedia — Ahmed/Natarajan/Rao 1974 年论文与 DCT 应用谱系。
  4. Huffman coding - Wikipedia — 哈夫曼 1952 年编码法及其诞生故事。
  5. ITU-T T.81 (JPEG standard) — 标准原文(1992 年定稿)。

本文由「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学通信知识星球海报-扫码加入