【数字图像处理】第11章 图像的编码技术

11 图像的编码技术


图像编码的研究背景
在这里插入图片描述
彩色视频数据量分析
在这里插入图片描述
传真数据量分析
在这里插入图片描述

(一)数据冗余

基本概念
在这里插入图片描述

描述上的冗余

描述方式:
1)这是一幅2*2的图像,图像的第一个像素是红的,第二个像素是红的,第三个像素是红的,第四个像素是红的。
2)这是一幅2*2的图像,整幅图都是红色的。
在这里插入图片描述

图形冗余
图像冗余分为3类:编码冗余像素冗余视觉冗余
在这里插入图片描述
在这里插入图片描述
图像压缩原理
由于一幅图像存在数据冗余和主观视觉冗余,所以压缩方式就可以从这两方面着手开展。
改变图像信息的描述方式,以压缩掉图像中的数据冗余
忽略一些视觉不太明显的微小差异,以压缩掉图像中的视觉冗余

(二)图像压缩编码

图像的压缩编码
第一代压缩编码:八十年代以前,主要是根据传统的信源编码方法。
第二代压缩编码:八十年代以后,突破信源编码理论,结合分形、模型基、神经网络、小波变换等数学工具,充分利用视觉系统生理心理特性和图像信源的各种特性。
在这里插入图片描述

1)行程编码(RLE编码)

基本概念
行程编码是一种最简单的,在某些场合是非常有效的一种无损压缩编码方法。
虽然这种编码方式的应用范围非常有限,但是因为这种方法中所体现出的编码设计思想非常明确,所以在图像编码方法中都会将其作为一种典型的方法来介绍。

基本原理
通过改变图像的描述方式,来实现图像的压缩。
将一行中灰度值相同的相邻像素,用一个计数值和该灰度值来代替。

实现方法
在这里插入图片描述
传真中的应用方法
在这里插入图片描述

二维行程编码

在这里插入图片描述
在这里插入图片描述

2)Huffman编码(熵编码)

行程编码要获得好的压缩率的前提是,有比较长的相邻像素的值是相同的。
熵是指数据中承载的信息量。
所谓的熵编码是指在完全不损失信息量前提下最小数据量的编码。

基本原理
为了达到大的压缩率,提出了一种方法就是将在图像中出现频度大的像素值,给一个比较短的编码,将出现频度小的像数值,给一个比较长的编码。
在这里插入图片描述
算法
首先求出图像中灰度分布的灰度直方图;
根据该直方图,对其按照分布概率从小到大的顺序进行排列;
每一次从中选择出两个概率为最小的节点相加,形成一个新的节点,构造一个称为“Huffman树”的二叉树;
对这个二叉树进行编码,就获得了Huffman编码码字。
在这里插入图片描述
图像压缩中的应用
我们知道,对一幅图像进行编码时,如果图像的大小大于256时,这幅图像的不同的码字就有可能是很大,例如极限为256个不同的码字。
这时如果采用全局Huffman编码则压缩效率不高。甚至有可能与原来的等长编码的数据量相同。

常用的且有效的方法是:
将图像分割成若干的小块,对每块进行独立的Huffman编码。例如:分成 8×8 的子块,就可以大大降低不同灰度值的个数(最多是64而不是256)

3)离散余弦变换(DCT变换)编码

问题的提出
行程编码与Huffman编码的设计思想都是基于对信息表述方法的改变,属于无损压缩方式。
虽然无损压缩可以保证接收方获得的信息与发送方相同,但是其压缩率一定有极限。
因此,采用忽略视觉不敏感的部分进行有损压缩是提高压缩率的一条好的途径。

设计思想
DCT变换是希望在接收方不产生误解的前提下进行一定的信息丢失。
由前面所讲到的频域变换得到的启示,就是将低频与高频部分的信息,分别按照不同的数据承载方式进行表述。

DCT变换
在这里插入图片描述
方法
在这里插入图片描述
在这里插入图片描述


bingo~   ✨ 所谓无底深渊,下去,也是前程万里。

### IntelliJ IDEA 中通义灵码 AI 功能介绍 IntelliJ IDEA 提供了一系列强大的工具来增强开发体验,其中包括与通义灵码 AI 相关的功能。这些功能可以帮助开发者更高效地编写代码并提高生产力。 #### 安装通义灵码插件 为了使用通义灵码的相关特性,在 IntelliJ IDEA 中需要先安装对应的插件: 1. 打开 **Settings/Preferences** 对话框 (Ctrl+Alt+S 或 Cmd+, on macOS)。 2. 导航到 `Plugins` 页面[^1]。 3. 在 Marketplace 中搜索 "通义灵码" 并点击安装按钮。 4. 完成安装后重启 IDE 使更改生效。 #### 配置通义灵码服务 成功安装插件之后,还需要配置通义灵码的服务连接信息以便正常使用其提供的各项能力: - 进入设置中的 `Tools | Qwen Coding Assistant` 菜单项[^2]。 - 填写 API Key 和其他必要的认证参数。 - 测试连接以确认配置无误。 #### 使用通义灵码辅助编程 一旦完成上述准备工作,就可以利用通义灵码来进行智能编码支持了。具体操作如下所示: ##### 自动补全代码片段 当输入部分语句时,IDE 将自动提示可能的后续逻辑,并允许一键插入完整的实现方案[^3]。 ```java // 输入 while 循环条件前半部分... while (!list.isEmpty()) { // 激活建议列表选择合适的循环体内容 } ``` ##### 解释现有代码含义 选中某段复杂的表达式或函数调用,右键菜单里会有选项可以请求通义灵码解析这段代码的作用以及优化意见。 ##### 生产测试案例 对于已有的业务逻辑模块,借助于通义灵码能够快速生成单元测试框架及初始断言集,减少手动构建的成本。 ```python def test_addition(): result = add(2, 3) assert result == 5, f"Expected 5 but got {result}" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值