NEFU数字图像处理(5)图像压缩编码

一、概述

1.1简介

图像压缩编码的过程是在图像存储或传输之前进行,然后再由压缩后的图像数据(编码数据)恢复出原始图像或者是原始图像的近似图像·

  • 无损压缩:在压缩过程中没有信息损失,可由编码数据完全恢复出原始图像·
  • 有损压缩:在压缩过程中有信息损失,由编码数据恢复出的图像与原始图像之间有差别,即原始图像的近似图像。有损压缩能取得较高的压缩率(压缩比)

 

 1.2相关概念

信息相关

在绝大多数图像的像素之间,各像素行和帧之间存在着较强的相关性

每个像素的灰度值(或颜色值)总是和其周围的其它像素的灰度值(或颜色值)存在某种关系,应用某种编码方法减少这些相关性就可实现图像压缩

 

冗余类型

从信息论的角度来看,压缩就是去掉信息中的冗余。即保留确定信息,去掉可推知的确定信息,用一种更接近信息本质的描述来代替原有的冗余描述。

在数字图像压缩中,三种基本的数据冗余类型:

  • 编码冗余
  • 像素间冗余
  • 视觉冗余
编码冗余
像素间冗余
视觉冗余

视觉冗余:人的眼睛对某些图像特征不敏感,这些特征信息可以不在图像数据中出
现。
人眼的分辨能力一般约64个灰度等级,而图像的量化常采用256个灰度等级。

 

视觉冗余的压缩是不可恢复的(不可逆),所以量化的结果导致了数据有损压缩

信源编码

图像压缩的目的是在满足一定的图像质量的条件下,用尽可能少的比特数来表示原图像,以减少图像的存储容量和提高图像的传输效率。

在信息论中,把这种通过减少冗余数据来实现数据压缩的过程称为信源编码。
根据解码后图像与原始图像的比较,图像编码的方法可以分成两大类:

  • 可逆编码
  • 不可逆编码

 

图像保真度准则

需要评价信息损失的测度,来描述由编码数据恢复出的图像相对于原始图像的偏离程度,这些测度称为图像保真度准则。
两类准则:客观保真度准则、主观保真度准则

 客观保真度准则

客观保真度准则通常是用原始图像与恢复出的图像之间的函数来表示信息的损失程度。

常用的客观保真度准则:

  • 均方根误差
  • 均方根信噪比

 

 

主观保真度准则

图像压缩编码系统的基本组成

编码效率

对图像进行压缩编码时,编码效率可有以下表现形式:

  • 平均码字长度,简称平均码长(R)
  • 压缩比(Cr)
  • 图像熵与平均码长之比(η)

 

 

压缩比越大,压缩效果越好

 举例

二、相关编码算法

无损压缩编码主要针对以下两种数据冗余:

  • 编码冗余
  • 像素间冗余

2.1哈夫曼编码

哈夫曼编码是一种变长编码(这种编码结构可以把最短的码字赋予出现概率最大的信源符号

 

哈夫曼编码算法步骤:

  • 统计出各个信源符号出现的概率(比如,对一幅图像进行灰度级概率统计),并对信源符号出现的概率从大到小排列;
  • 合并概率最小的两个信源符号,形成一个新符号。新符号的概率是这两个信源符号的概率之和·
  • 新符号的概率与剩余符号的概率形成一个新的概率集合,然后再对新的概率集合重新排列(从大到小)
  • 重复执行第2、3步,直到最后两个信源符号的概率之和是1为止。

举例

 

 

 

 结论

 

2.2香农-范诺编码

香农-范诺编码算法步骤:
 

 

二分香农-范诺编码

算法步骤

  • 首先统计出每个信源符号出现的概率,并将所有概率从大到小排序。
  • 从当前概率集合中选取某个位置将其分成两个子集合,尽量使两个子集的概率之和近似相等(即概率之和越接近越好),给前一个子集赋值为0,后一个子集赋值为1
  • 重复步骤2,直到各个子集中只剩下一个信源符号为止。
  • 每个信源符号所属的子集的值(0或1)依次串联起来,即可得到该信源符号的二分香农-范诺编码·

举例 

 

2.3算数编码

算术编码分析:
算术编码假设:对于一个独立信源来说,任一由信源符号组成的长度为N的序列的发生概率之和等于1。


根据信源符号序列的概率,把0,1区间划分为互不重叠的子区间,子区间的宽度恰好等于各符
号序列的概率,这样,、每个子区间内的任意一个实数都可以用来表示对应的符号。一串符号序列发生的概率越大,对应的子区间就越宽,,表达它所用的比特数就越少,因而相应的码字就越短。

 

举例

 

2.4行程编码

 利用空间冗余度压缩图像的方法,处理某些相同灰度级成片连续出现的图形
应用:二值图像
具有相同灰度级并且是连续的像素数目称为行程长度。

 

举例 

2.5LZW编码

将原始数据中的重复字符串建立一个字典(也称编码本),然后用该重复字符串在字典中的索引代替原始数据,从而达到压缩目的。


使用LZW压缩编码技术的文件格式包括有GIF、TIFF(标记图像文件格式)、PDF(可移植文件格式)等。

 

举例

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/115430.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java web(五):会话技术

文章目录 一、会话跟踪技术二、Cookie三、Session四、Cookie和Session的区别五、项目实战 一、会话跟踪技术 二、Cookie 在JSP页面如何获取Cookie? 方式:${cookie.key.value} //key指存在cookie的键的名称 三、Session Session是基于Cookie实现的&…

python 机器学习 常用函数

一 np.random.randint "randint" 是 "random integer" 的缩写,表示生成随机整数。 np.random.randint 是 NumPy 库中的一个函数,用于生成随机整数。以下是该函数的一般语法: np.random.randint(low, high, size)其中…

Javaweb之HTML,CSS的详细解析

2. HTML & CSS 1). 什么是HTML ? HTML: HyperText Markup Language,超文本标记语言。 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签构成的语言…

王道计算机网络

一、计算机网络概述 (一)计算机网络基本概念 计算机网络的定义、组成与功能 定义:以能够相互共享资源的方式互连起来的自治计算机系统的集合。 目的:资源共享, 组成单元:自治、互不影响的计算机 网络协议 从不同角度计算机网络…

【Redis】String字符串类型-常用命令

文章目录 String字符串类型常用命令setgetMGETMSET 计数命令INCRINCRBYDECRDECRBYINCRBYFLOAT 其它命令APPENDGETRANGESETRANGESTRLEN 命令总结 String字符串类型 1)⾸先Redis中所有的键的类型都是字符串类型 2)字符串类型的值(value&#…

【Redis】String字符串类型-内部编码使用场景

文章目录 内部编码使用场景缓存功能计数功能共享会话手机验证码 内部编码 字符串类型的内部编码有3种: int:8个字节(64位)的⻓整型,存储整数embstr:压缩字符串,适用于表示较短的字符串raw&…

【C语言初学者周冲刺计划】2.4求一个3×3矩阵对角线元素之和

1解题思路&#xff1a; 首先学会怎么输入3*3矩阵的数值&#xff1b;然后细节处&#xff0c;比如最后求和应该加什么&#xff0c;怎么写问题&#xff1b; 2代码&#xff1a; #include<stdio.h> int main() {int str[3][3],i,j,sum0;for(i0;i<3;i){for(j0;j<3;j){…

农业中的机器学习

机器学习训练模型推荐&#xff1a; UnrealSynth虚幻合成数据生成器 - NSDT 机器学习是一个不断发展的领域&#xff0c;在农业中有许多潜在的应用。农民和农业科学家正在探索如何转向机器学习开发来提高作物产量、减少用水量和预测病虫害。未来&#xff0c;机器学习可以帮助农民…

Linux编辑器-vim使用

vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以在终端运行&#xff0c;也可以运行于x window、 mac …

逆袭Flutter? Facebook 发布全新跨平台引擎 Hermes!

Facebook 于前日发布了新的 JavaScript 引擎&#xff1a;Hermes&#xff0c;专注于提高 React Native 应用的性能&#xff0c;并且在市面上那些内存较少、存储速度较慢且计算能力低下的移动设备上都有良好的表现。但是不是为了追赶Flutter&#xff1f;这块作者没有说明。 移动应…

java 数据结构 ArrayList源码底层 LinkedList 底层源码 迭代器底层

文章目录 数据结构总结ArrayList源码底层LinkedList底层源码 迭代器底层 数据结构 对于数据结构我这边只告诉你右边框框里的 栈的特点:后进先出,先进后出,入栈也成为压栈,出栈也成为弹栈 栈就像一个弹夹 队列先进先出后进后出 队列像排队 链表查询满 但是增删快(相对于数组而…

【行云流水线实践】基于“OneBuild”方法对镜像进行快速装箱 | 京东云技术团队

在云原生领域&#xff0c;无论使用哪种编排调度平台&#xff0c;Kubernetes&#xff0c;DockerSwarm&#xff0c;OpenShift等&#xff0c;业务都需要基于镜像进行交付&#xff0c;我们在内部实践“Source-to-image”和链式构建&#xff0c;总而总结出“OneBuild”模式。 其核心…

[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 一、过滤器filter 概念介绍&#xff1a; 过滤器的使用&#xff1a; 过滤器的执行流程&#xff1a; 应用场景(登录校验)&#xff1a; 二、拦截器Interceptor 概念介绍&#xff1a; 拦截器的使用&#xff1…

ios原生分享

什么是 ios 系统的原生分享呢&#xff0c;如下图所示 具体使用系统UIActivityViewController&#xff0c;完整代码如下&#xff1a; -(void)shareAny:(NSString *)text url:(NSString *)_url imagePath:(NSString *)_imagePath {NSLog("shareAny, text:%, url:%, imagePa…

FRI及相关SNARKs的Fiat-Shamir安全

1. 引言 本文主要参考&#xff1a; Alexander R. Block 2023年论文 Fiat-Shamir Security of FRI and Related SNARKsAlbert Garreta 2023年9月在ZK Summit 10上分享 ZK10: Fiat-Shamir security of FRI and related SNARKs - Albert Garreta (Nethermind) 评估参数用的Sage…

甲方自建ERP这事靠不靠谱?来听听读过中欧商学院的老板怎么说

李总自建ERP开发团队的失败案例&#xff0c;投入三年&#xff0c;花了五六百万&#xff0c;做出来的东西&#xff0c;远不如免费开源的Odoo软件。Odoo有强大的技术平台&#xff0c;有无穷的功能插件。李总现身说法&#xff1a;“早知道有Odoo&#xff0c;何必瞎折腾&#xff0c…

SAP IDOC 开发入门

1, 基本概念 IDOC技术在早起版本的R/3系统就已经集成了&#xff0c;不过国内真正用起来还是05年以后了&#xff0c;其实IDOC是很强大的&#xff0c;在主数据和一些业务数据同步方面&#xff0c;几乎不需要做任何开发就可以配置完成&#xff0c;例如BD11&#xff0c;BD13这些事…

3 Spring底层概念介绍

BeanDefinition BeanDefinition表示Bean定义&#xff0c;BeanDefinition中存在很多属性用来描述一个Bean的特点。比如&#xff1a; class&#xff0c;表示Bean类型 scope&#xff0c;表示Bean作用域&#xff0c;单例或原型等 lazyInit&#xff1a;表示Bean是否是懒加载 initM…

2.Docker基本架构简介与安装实战

1.认识Docker的基本架构 下面这张图是docker官网上的&#xff0c;介绍了整个Docker的基础架构&#xff0c;我们根据这张图来学习一下docker的涉及到的一些相关概念。 1.1 Docker的架构组成 Docker架构是由Client(客户端)、Docker Host(服务端)、Registry(远程仓库)组成。 …

C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。

矩阵形式&#xff1a; 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 完整代码&#xff1a; /*编写以下函数 1&#xff0e;在一个二维数组中形成如以下形式的 n 阶矩阵&#xff1a; 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 2&#xff0e;去掉…