news 2026/7/22 19:09: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/7/16 12:12:15

SSH远程访问Miniconda-Python3.10容器进行模型训练

SSH远程访问Miniconda-Python3.10容器进行模型训练 在深度学习项目日益复杂的今天,一个常见的痛点是:本地笔记本跑不动大模型,而一旦换到远程服务器,又面临环境不一致、依赖冲突、“在我机器上明明能跑”的尴尬局面。更别提训练到…

作者头像 李华
网站建设 2026/7/13 2:29:36

使用Miniconda构建可重复的学术研究计算环境

使用Miniconda构建可重复的学术研究计算环境 在今天的数据驱动科研时代,一个常见的尴尬场景是:你在本地调通了模型、跑出了理想结果,信心满满地把代码发给合作者,对方却回复一句——“跑不起来”。不是缺这个包,就是版…

作者头像 李华
网站建设 2026/7/21 13:14:21

风投预测企业AI明年将强劲增长——再次

自OpenAI发布ChatGPT并引发AI创新和关注浪潮以来,已经过去了三年。从那时起,乐观主义者定期声称AI将成为企业软件行业的关键部分,因此企业AI初创公司在大量投资的支持下如雨后春笋般涌现。但企业仍在努力看到采用这些新AI工具的好处。麻省理工…

作者头像 李华
网站建设 2026/7/21 14:01:24

Miniconda创建环境时添加注释和元数据的方法

Miniconda环境管理中的元数据实践:让每个环境都“自带说明书” 在AI项目开发中,你是否遇到过这样的场景?服务器上列着十几个Conda环境:py38, gpu_env, test2, nlp-v2……没人记得哪个是训练BERT模型用的,哪个只是临时测…

作者头像 李华
网站建设 2026/7/21 19:50:59

如何在Miniconda环境中配置PyTorch与CUDA加速

如何在Miniconda环境中配置PyTorch与CUDA加速环境管理的现代实践:为什么选择 Miniconda? 在深度学习项目中,最让人头疼的往往不是模型设计本身,而是“在我机器上明明能跑”的环境问题。你有没有遇到过这样的场景:刚克隆…

作者头像 李华
网站建设 2026/7/19 15:03:29

在Miniconda环境中安装OpenCV进行图像预处理操作

在Miniconda环境中安装OpenCV进行图像预处理操作 你有没有遇到过这样的情况:刚写好的图像处理脚本,在同事电脑上一跑就报错?cv2 模块找不到,或者 numpy 版本不兼容,甚至因为系统缺少某个 C 库直接崩溃。这类“在我机器…

作者头像 李华