news 2026/10/2 23:32:21

通信原理篇---图像信源编码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
通信原理篇---图像信源编码

我们的目标就是:用最小的箱子(最少的数据量),装下所有衣服(图像信息),并且打开后衣服要基本能用(图像可看)。


核心思想:扔掉人眼看不出的信息,并用聪明的方法打包剩下的信息。

常见的编码方式可以分为三大类:

第一类:基础篇——直接给每个像素“贴标签”

这就像给你的每件衣服(像素)都用一个固定长度的标签(比如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 (视频)

给初学者的核心建议:

  1. 无损编码(前两类):追求精确还原,像用Zip压缩文件,解压后一模一样。压缩比有限。

  2. 有损编码(第三类):追求极致压缩,允许信息丢失。像把音乐转成MP3,大部分人听不出区别。JPEG就是典型的有损编码,它巧妙地利用了人眼的视觉特性来大幅压缩数据。

所以,当你保存一张JPEG图片,选择“高质量”或“低质量”时,你本质上是在调整那个量化表的“严格程度”,决定了要扔掉多少“装饰音”(高频细节)。

框图要点解读:

1.三大技术路径
  • 基础编码:保真但低效,作为其他格式的基础层

  • 无损压缩:完全还原,适合图形、医疗图像等

  • 有损压缩:智能取舍,适合照片、视频等多媒体

2.JPEG核心三步曲(现代压缩典范)
  • 色彩处理:RGB → YCbCr + 色度采样→ 立即减少约50%数据

  • 变换与筛选:DCT变换 + 量化→ 分离主次信息,丢弃人眼不敏感的细节

  • 高效编码:之字形扫描 + 熵编码→ 用最经济的代码表示剩余信息

3.两个核心权衡
  • 压缩比 vs 图像质量:在JPEG量化步骤中直接体现,质量滑块本质是量化表的严格程度

  • 编码复杂度 vs 解码速度:通常编码复杂耗时,解码简单快速(利于传播查看)

4.一个统一思想

所有方法都围绕“消除冗余”展开:

  • 空间冗余:相邻像素相似性(游程、DCT利用)

  • 视觉冗余:人眼特性(色度采样、量化利用)

  • 统计冗余:数据出现概率不均(熵编码利用)


给初学者的实践建议:

当你在手机或电脑上保存图片时:

  • 选PNG:相当于走“无损压缩”路径,适合线条图、文字截图

  • 选JPEG:就是走完上面完整的“有损压缩”三步骤,适合照片

  • 调整JPEG质量滑块:就是在调整“量化表”的严格程度

  • 保存为WebP/HEIF:使用了更先进的变换和预测技术,但基本思想一致

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

从Anaconda迁移到Miniconda以节省磁盘空间的方法

从 Anaconda 迁移到 Miniconda:轻量化 Python 环境的实践之道 在一台刚租用的云服务器上跑通第一个机器学习模型时,你是否曾因磁盘空间不足而卡在环境配置阶段?又或者,在团队协作中,是否遇到过“我这边能跑&#xff0c…

作者头像 李华
网站建设 2026/9/29 2:55:41

使用Conda-pack打包Miniconda环境迁移到离线机器

使用 Conda-pack 打包 Miniconda 环境迁移到离线机器 在人工智能项目落地的过程中,你是否经历过这样的场景:模型在开发机上训练得好好的,一搬到客户现场或内网服务器就“水土不服”?报错信息五花八门——缺依赖、版本不匹配、甚至…

作者头像 李华
网站建设 2026/10/1 11:54:10

利用conda env export生成可复现的PyTorch环境文件

利用 conda env export 生成可复现的 PyTorch 环境文件 在深度学习项目中,最令人头疼的问题之一莫过于“在我机器上明明能跑”的尴尬局面。模型训练完成、代码提交、文档写好,结果合作者或评审者拉下代码后却因为环境不一致导致依赖冲突、版本错乱&#…

作者头像 李华
网站建设 2026/10/1 17:38:38

为什么科研人员更偏爱Miniconda而非完整Anaconda

为什么科研人员更偏爱 Miniconda 而非完整 Anaconda 在人工智能实验室的某个深夜,一位博士生正焦急地调试代码。他的模型跑不通,报错信息指向一个版本冲突:numpy 的版本不兼容。他记得上周还能运行的脚本,今天却失败了——原因很…

作者头像 李华
网站建设 2026/9/30 19:02:43

Miniconda环境下使用SQLite存储Token处理中间结果

Miniconda环境下使用SQLite存储Token处理中间结果 在自然语言处理项目开发中,一个常见的痛点是:每次运行脚本都要重新分词,耗时且低效。更糟的是,一旦程序意外中断,所有中间结果瞬间丢失——这种“重复造轮子”的体验让…

作者头像 李华
网站建设 2026/10/1 7:32:17

Apache Tika关键漏洞影响比预想更严重且涉及组件更广

广泛使用的Apache Tika XML文档提取工具被发现存在安全漏洞,其影响范围和严重程度都超出最初评估,项目维护者发出了新的安全警告。新发布的安全警报涉及两个相互关联的漏洞,第一个是去年8月公开的CVE-2025-54988,严重程度评级为8.…

作者头像 李华