news 2026/2/16 7:12:30

数字图像处理篇---JPEG

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数字图像处理篇---JPEG

核心比喻:画一幅印象派油画

假设你要临摹一张细节丰富的照片,但时间有限、画布也很贵。JPEG的做法就像一位印象派画家

  1. 先画轮廓和大色块(这是最重要的信息)。

  2. 对于远处树叶的细碎纹理、墙上的微小斑点,就用笔触稍微“糊弄”一下,眯起眼来看整体效果差不多就行。

  3. 观众站在正常距离看,会觉得画得很像;但若凑得非常近用放大镜看,就会发现很多细节是模糊的色块。

JPEG就是一种“印象派”的图像压缩技术:在保证人眼远看效果的前提下,聪明地省掉费时费力的超精细细节。


具体是怎么“糊弄”的?8步拆解

想象我们把照片交给JPEG“压缩工厂”,它会严格按照流水线处理:

第一步:分块(准备工作)

  • 把整张图片切成很多个8像素 × 8像素的小方块,就像马赛克一样。后续所有操作都以一个“块”为单位进行。

第二步:颜色转换(利用人眼弱点)

  • 把每个块的颜色信息,从RGB模式(红、绿、蓝)转换成YCbCr模式

    • Y亮度(Luminance),记录明暗。人眼对此极度敏感

    • Cb, Cr色度(Chrominance),记录颜色偏移。人眼对此比较迟钝

  • 关键技巧:JPEG通常会把色度信息扔掉一半(比如4个像素共用一组颜色值)。这是第一次有损压缩,但因为你眼睛不敏感,所以几乎察觉不到。

第三步:离散余弦变换(DCT,核心魔法)

  • 对每个8x8的块,进行一种名为DCT的数学变换。

  • 变换前:块里是64个不同的像素亮度值。

  • 变换后:变成64个频率系数,排列成8x8的矩阵。

    • 左上角的值是低频系数,代表这个块的整体轮廓和主要色块(非常重要!)。

    • 右下角的值是高频系数,代表这个块的细微纹理和边缘细节(比如头发丝、树叶脉络)。

第四步:量化(有损压缩的关键一步)

  • 这是“糊弄”的核心!JPEG拿出一张量化表,表上的数字越大,表示压缩得越狠。

  • 操作:用DCT系数除以量化表上对应的数字,然后四舍五入取整数

  • 结果

    • 重要的低频系数除以较小的数,得以较好保留。

    • 不重要的高频系数除以很大的数,结果直接变成0或接近0

  • 量化表越“激进”,产生的0就越多,图片文件就越小,但细节损失也越严重。这是图像质量下降的主要原因

第五步:Z字形扫描与打包

  • 经过量化后,矩阵右下角会出现一大串连续的0。JPEG聪明地按“之”字形顺序(从左上低频到右下高频)把64个数字排成一串。这样,末尾的一长串0就很容易处理了。

第六步:熵编码(最后的无损压缩)

  • 对这一长串数字(尤其是那串0)进行哈夫曼编码(一种用短代码表示常见数字的技巧),完成最后的“打包”,生成最终的.jpg文件。


解压(看图片)时,过程相反:

  1. 解码哈夫曼编码。

  2. 把数据填回8x8矩阵。

  3. 乘以量化表(注意:被量化为0的高频信息永远丢失了!这就是为什么JPEG压缩不可逆)。

  4. 进行逆DCT变换,变回像素值。

  5. 颜色空间转换回RGB。

  6. 把所有块拼回完整的图片。


JPEG的特点(优缺点)

优点:

  • 压缩率极高:能把图片文件缩小到原来的1/10甚至1/20,而人眼在正常观看距离下几乎看不出差别

  • 通用性极强.jpg是世界上最通用的图片格式。

缺点(副作用):

  1. 块状伪影:如果压缩得太狠(量化表太激进),在颜色或亮度剧烈变化的边界(比如天空和建筑的边缘),原本平滑的过渡会变成可见的、一格一格的“马赛克”(块效应)。

  2. 模糊与振铃:细节丰富的区域(如草地、毛发)会变得模糊,并且在锐利边缘旁边可能出现虚假的波纹或光环

  3. 不适合反复编辑保存:每保存一次JPEG,就相当于重新“糊弄”一次,细节损失会累积,图像质量会像复印件的复印件一样越来越差。

一句话总结

JPEG就像一个聪明的“视觉魔术师”。它利用人眼对亮度敏感、对色度和高频细节不敏感的特性,通过“分块->转频率域->大胆舍弃高频细节”的三步法,用极小的文件大小,换取了人眼观感上几乎无损的图像效果。它是为“观看”而生的,不是为“反复编辑”而生的。

框图要点解读:

  1. 从核心理念出发:JPEG的一切设计都围绕“利用人眼感知特性进行有损压缩”这一核心。它不是为完美还原,而是为高效观看。

  2. 三步预处理

    • 分块:将大问题分解为可并行处理的小单元(8x8块)。

    • 色彩转换:转换为YCbCr色彩空间,这是利用人眼生理特性的第一步。下采样色度是首次有损操作,但效果显著且感知损失小。

  3. 核心压缩流程(对每个块)

    • DCT变换:将信息从像素域转换到频率域。这是技术的关键,实现了“能量集中”—— 将图像的主要信息(能量)集中在少数低频系数上。

    • 量化:这是“有损”和“智能取舍”的灵魂。通过精心设计的量化表,系统性地丢弃对人眼不重要的高频细节量化表的激进程度直接决定了最终的图像质量和文件大小

  4. 高效打包

    • Z字形扫描:一种巧妙的排序方法,目的是将量化后产生的大量0(通常集中在高频区)排列在一起,为后续压缩创造最佳条件。

    • 熵编码:最后一步使用成熟的无损编码技术(哈夫曼编码)对非零值和零游程进行极致压缩,生成紧凑的二进制码流。

  5. 解压的不可逆性:必须强调,解压是压缩的逆向过程,但量化中被舍入(特别是归零)的高频信息已永久丢失。这是“有损”的本质,也是产生视觉瑕疵的根源。

  6. 特征与副作用

    • JPEG是为连续色调的自然图像(如照片)优化的。它对大块平缓颜色和渐变区域压缩效果极好。

    • 副作用(块效应、模糊、振铃)在过度压缩或压缩包含锐利边缘和文字的图像时会变得非常明显。

总之,JPEG是一个精巧的、针对人眼视觉系统弱点进行“精准打击”的工程杰作。它在文件大小和视觉保真度之间取得了划时代的平衡,从而成为数十年来最主流的图像格式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/15 19:34:36

【计算机毕业设计案例】基于springboot+小程序的家校通程序设计与实现教师发布作业、通知等信息,家长和学生查看信息并与教师互动(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/14 14:41:16

小程序毕设选题推荐:基于springboot+小程序的高校校园信息交流平台小程序基于微信小程序的校园信息交流平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/14 8:13:50

(100分)- 打印机队列(Java JS Python)

(100分)- 打印机队列(Java & JS & Python)题目描述有5台打印机打印文件,每台打印机有自己的待打印队列。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的代先级,其中数字越大优先级越高。打印…

作者头像 李华
网站建设 2026/2/14 22:11:18

(100分)- 等和子数组最小和(Java JS Python)

(100分)- 等和子数组最小和(Java & JS & Python)题目描述给定一个数组nums,将元素分为若干个组,使得每组和相等,求出满足条件的所有分组中,组内元素和的最小值。输入描述第一行输入 m 接着输入m个数…

作者头像 李华
网站建设 2026/2/16 3:14:40

(100分)- 端口合并(Java JS Python)

(100分)- 端口合并&#xff08;Java & JS & Python&#xff09;题目描述有M个端口组(1<M<10)&#xff0c; 每个端口组是长度为N的整数数组(1<N<100)&#xff0c; 如果端口组间存在2个及以上不同端口相同&#xff0c;则认为这2个端口组互相关联&#xff0c;…

作者头像 李华
网站建设 2026/2/14 18:35:11

《深入理解Java虚拟机》| 运行时数据区与OOM异常

摘要&#xff1a;本文系统解析《深入理解Java虚拟机》中的运行时数据区与OOM异常&#xff0c;包括程序计数器、虚拟机栈、堆内存、方法区与直接内存&#xff0c;同时讲解OOM异常等解决方案。 书摘内容 运行时数据区域 运行时数据区是 JVM 的内存核心&#xff0c;分为线程共享区…

作者头像 李华