news 2026/4/15 22:45:11

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

作者头像

张小明

前端开发工程师

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/4/15 22:45:08

Elasticsearch 与 PostgreSQL 集成:关系型数据库的搜索增强

Elasticsearch 与 PostgreSQL 集成:让关系型数据库的搜索“飞”起来关键词:Elasticsearch, PostgreSQL, 搜索增强, 数据同步, CDC, 倒排索引, 全文检索 摘要:PostgreSQL是关系型数据库的“瑞士军刀”,擅长事务、复杂查询和数据一致…

作者头像 李华
网站建设 2026/4/15 22:45:08

PyTorch混合精度训练在Miniconda环境中的开启方式

PyTorch混合精度训练在Miniconda环境中的开启方式在深度学习模型日益庞大的今天,训练过程对GPU显存和计算性能的要求几乎达到了临界点。一个典型的Transformer模型在FP32模式下训练时,可能刚加载完参数就已耗尽24GB显存;而同样的模型若启用混…

作者头像 李华
网站建设 2026/4/15 22:42:30

使用Miniconda管理多个PyTorch版本的最佳实践

使用 Miniconda 管理多个 PyTorch 版本的最佳实践 在深度学习项目日益复杂的今天,你是否曾遇到过这样的场景:本地训练好的模型换一台机器就跑不起来?或者某个依赖更新后,原本稳定的代码突然报错“module not found”甚至 GPU 直接…

作者头像 李华
网站建设 2026/4/12 10:51:19

微软停用Visual Studio Code的IntelliCode AI代码补全扩展

微软正式宣布停用Visual Studio Code编辑器的IntelliCode AI辅助代码补全扩展,并建议C#开发者改用GitHub Copilot Chat对话式AI助手。微软在GitHub上发布的公告中列出了以下被停用的VS Code扩展:IntelliCode、IntelliCode Completions、IntelliCode for …

作者头像 李华
网站建设 2026/4/14 18:50:03

CIO对2026年AI发展的五大预测

在2025年,企业技术高管面临巨大压力,需要帮助企业从持续关注AI中获得回报。大多数高管都取得了进展,完善了项目优先级排序方法,并规避了供应商的AI包装营销。然而,CIO仍在经历与AI相关的困扰。AI监管环境的分散化、变化…

作者头像 李华
网站建设 2026/4/12 19:06:22

Miniconda-Python3.10环境下安装TensorFlow和PyTorch双框架

Miniconda-Python3.10环境下安装TensorFlow和PyTorch双框架 在深度学习项目开发中,一个常见的困扰是:同一个系统里跑着多个实验,有的用 PyTorch 写的模型,有的依赖 TensorFlow 的预训练流水线——结果一升级包,另一个…

作者头像 李华