0阶指数哥伦布编码

指数哥伦布编码

规定语法元素的编解码模式的描述符如下:
比特串:
b(8):任意形式的8比特字节(就是为了说明语法元素是为8个比特,没有语法上的含义)
f(n):n位固定模式比特串(其值固定,如forbidden_zero_bit的值恒为0
i(n):使用n比特的有符号整数(语法中没有采用此格式)
u(n):n位无符号整数

指数哥伦布编码
ue(v):无符号整数指数哥伦布码编码的语法元素
se(v):有符号整数指数哥伦布编码的语法元素,左位在先
te(v):舍位指数哥伦布码编码语法元素,左位在先

以及ce(v):CAVLC和ae(v):CABAC。

指数哥伦布编码过程:
在表9-1中,比特串格式为“前缀1后缀”。1)1后缀=codeNum+1,如codeNum = 3,则1后缀=4,即为100,后缀为00;2)前缀与后缀的比特数相同,且前缀的各位比特为0,如codeNum=3,则最终编码所得的比特串为:00100.

对于ue(v),按上述规则进行编码;

对于se(v),则按照表9-3转换成codeNum,然后按上述规则进行编码;
在表9-3中,1)语法元素值为负数,则乘2取反,转换成codeNum,2)语法元素为正数,则乘2减1,转换成codeNum;

对于te(v),只有7.3.5.1节“宏块预测语法”和7.3.5.2节“子宏块预测语法”中的ref_idx_l0[mbPartIdx]ref_idx_l1[mbPartIdx]用此模式编码,
如果语法元素值为0,则编码为1,如果语法元素值为1,则编码为0,如果为其他大于1的值,则按ue(v)进行编码。


---------------------------------------------------

用来表示非负整数的k阶指数哥伦布码可用如下步骤生成:

   1. 将数字以二进制形式写出,去掉最低的k个比特位,之后加1
   2. 计算留下的比特数,将此数减一,即是需要增加的前导零个数
   3. 将第一步中去掉的最低k个比特位补回比特串尾部

0阶指数哥伦布码如下所示:

0 => 1 => 1
1 => 10 => 010
2 => 11 => 011
3 => 100 => 00100
4 => 101 => 00101
5 => 110 => 00110
6 => 111 => 00111
7 => 1000 => 0001000
8 => 1001 => 0001001

小波变换在图像压缩中的应用

小波变换在图像压缩中的应用

 

施吉鸣

 

摘要:近十几年来小波理论研究已成为应用数学的一个新方向。作为数学工具,小波被迅速应用到图像和语音分析等众多领域。本文试图从工程和实验角度出发,较为直观地探讨小波变换在图像压缩中的应用。

关键词:小波 变换 重构 图像压缩

 

1、小波概述

    小波(wavelet)是定义在有限间隔且平均值为0的函数,小波函数多以开发者名字命名,如图1所示:

 

图1 部分小波

 


    众所周知,傅立叶分析是把一个信号分解成各种不同频率的正弦波,因此正弦波是傅立叶变换的基函数。同样,小波分析是把一个信号分解成由原始小波经过移位和缩放后的一系列小波,因此小波是小波变换的基函数,即小波可用作表示一些函数的基函数。

小波是近十几年才发展并迅速应用到图像和语音分析等众多领域的数学工具,是继110多年前建立傅立叶(Joseph Fourier)分析之后的一个重大突破。经过十几年的努力,小波理论基础已经基本建立并成为应用数学的一个新领域,引起了众多数学家和工程技术人员的极大关注,是国际上科技学术界高度关注的前沿领域。本文试图从工程和实验角度出发,较为直观地探讨小波变换在图像压缩中的应用。

 

2、小波变换和重构

    小波变换的基本思想是用一组小波或基函数表示一个函数或信号,例如图像信号。以哈尔(Haar)小波基函数为例,基本哈尔小波函数(Haar wavelet function)定义如下:

                      1,  当0≤x<1/2

           Ψ(x) =   -1,  当1/2≤x<1

                 0,  其他

设有一幅分辨率只有4个像素的一维图像,对应像素值为:[9  7  3  5]。用哈尔小波变换的过程是:计算相邻像素对的平均值(averaging,亦可称之为近似值approximation),得到一幅分辨率为原图像1/2的新图像:[8  4]。这时图像信息已部分丢失,为了能从2个像素组成的图像重构出4个像素的原图像,必须把每个像素对的第一个像素值减这个像素的平均值作为图像的细节系数(detail coefficient)保存。因此,原图像可用下面的两个平均值和两个细节系数表示:[8  4  1  -1]。可以把第一步变换得到的图像进一步变换,原图像两级变换的过程如表1所示:

表1 哈尔小波变换过程

分辨率

平均值

细节系数

4

[9  7  3  5]

 

2

[8  4]

[1  -1]

1

[6]

[2]

 

哈尔变换过程事实上是用求均值和差值的方法对函数或图像进行分解,对于f(x)=[9  7  3  5],我们可作最多2层的分解。

对于2维图像,同样可以用依次对行列进行小波变换得到2维图像的分解。这时经过一次小波变换得到是2维图像的近似值(CA)以及水平(CH)、垂直(CV)和对角(CD)细节分量值。显然,从2维图像的CA、CH、CV和CD值可以重构出原来的2维图像。

 

3、图像压缩

事实上,去掉某些经过小波变换得到的细节分量值对重构图像的质量影响不大。具体的做法是设置一个阈值δ,例如把≤δ的经小波变换得到的水平(CH)、垂直(CV)和对角(CD)细节分量值细节分量值置为0,

 

图2 小波图像变换过程

这样就实现了图像压缩。

为了验证图像压缩的效果,笔者使用数学软件工具MATLAB 6.1设计了3级非标准小波变换和重构图像程序function [ ] = report(picname),同时以分辨率256×256的真彩色照片为测试图像,通过执行程序完成了阈值δ分别为0,5,10和20的情况下利用Haar小波进行变换变换和重构过程。

    以使用Haar小波,阈值等于10,真彩色图像G分量为例,小波图像变换过程如图2所示。

 

4、实验结论

    用report('jimm')对jimm_org.png真彩图像文件计算阈值分别为0,5,10和20的情况下进行3级非标准haar小波变换和重构后,系数为“0"的数目和以PNG格式存储的重构图像文件大小,实验结果得到图像测试表如表2所示:

表2 图像测试表

图像名称

阈值

系数为“0"的数目

PNG文件大小

原始图像jimm_org.png

103KB

重构图像 jimm_haar_00.png

δ=0

19527

103KB

重构图像jimm_haar_05.png

δ≤5

123261

84KB

重构图像jimm_haar_10.png

δ≤10

155003

61KB

重构图像jimm_haar_20.png

δ≤20

175655

38KB

 

图3表示了在不同阈值下的重构图像:

 

图3 不同阈值下的重构图像

 

从图像测试表和观察不同阈值下的重构图像可得出以下结论:

u        可利用小波变换与重构对图像文件进行压缩。

u        通常在给定小波基函数条件下,阀值越大,系数为0的数目就越多,重构图像文件压缩率也越高,重构的图像失真程度随之增加。

u        阀值>0时,利用小波变换与重构进行图像压缩是一种有损压缩方法,可以根据实际需要在图像失真度允许的范围内选择适当的阀值来确定压缩率。

 

参考文献

     [1] 林福宗,《小波与小波变换》,清华大学计算机科学与技术系智能技术与系统国家重点实验室,2001-9-25.

    [2] The MathWorks, Inc., Wavelet Toolbox. Version 2.1 (R12.1), MATLAB 6.1 06-Apr-2001.



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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js循环

顺序——要加分号结束 分支&#xff1a;让程序根据条件不同执行不同的代码 if else语句用来做分支的 if&#xff08;条件&#xff09;{代码} if&#xff08;条件&#xff09;{代码}else{代码} else if&#xff08;条件&#xff09;{代码} if是嵌套。 switch...case&#xff1…

x264函数调用关系图

1 encoder 2 slice write 3 analyse FFMPEG中MPEG-2编解码函数调用关系图 1 Encoder &#xff08;函数调用从左到右&#xff0c;下同&#xff1b;图片显示不全时&#xff0c;请下载显示&#xff09; 2 P帧运动估计流程图 3 B帧运动估计流程图 4 decoder ffmpeg的mpeg2编码I帧代…

在 ActiveReports 中嵌入 Spread 控件

Spread 是一款很出色的表格控件&#xff0c;Spread 可以使开发人员把具有兼容 Microsoft Excel 的电子表格添加到程序中。ActiveReports 提供了一个非常灵活的、简单的报表环境。下面将展示怎样在 ActiveReports 中使用 Spread for WinForm。和其他三方控件一样&#xff0c;Spr…

day 05 多行输出与多行注释、字符串的格式化输出、预设创建者和日期

msg"hello1 hello2 hello3 " print(msg) 显示结果为&#xff1a; # " "只能进行单行的字符串 多行字符串用 ,前面设置变量&#xff0c;可以用 表示多行 msghello1 hello2 hello3print(msg) 显示结果为&#xff1a; 当然如果没有设置变量&#xff0c;…

深度学习之循环神经网络(Recurrent Neural Network,RNN)

递归神经网络和循环神经网络 循环神经网络&#xff08;recurrent neural network&#xff09;&#xff1a;时间上的展开&#xff0c;处理的是序列结构的信息&#xff0c;是有环图递归神经网络&#xff08;recursive neural network&#xff09;&#xff1a;空间上的展开&#…

从北京回来的年轻人,我该告诉你点什么?

前言 就在上周末&#xff0c;我与公众号里的一个当地粉丝见面了&#xff0c;一起吃了顿饭&#xff0c;顺便聊了聊。先来简单交代下我们这位粉丝&#xff08;以下简称小L&#xff09;的经历以及诉求。 小L之前在北京八维研修学院培训的PHP&#xff0c;因为家庭原因&#xff0c;没…

SUSE12系统安装及LVM设置详解

SUSE12自定义安装跟以往版本差不多&#xff0c;只是调整了一些功能安装顺序&#xff0c;例如网络设置放到很靠前&#xff0c;SUSE11的时候几乎是在后半部分&#xff0c;自定义分区也调整到网络设置之后&#xff0c;入口设置也隐秘&#xff0c;如果是熟悉suse11安装&#xff0c;…

CentOS7 安装nginx

1、官网下载安装包 官网&#xff1a;http://nginx.org/en/download.html 选择适合Linux的版本&#xff0c;这里选择最新的版本&#xff0c;下载到本地后上传到服务器或者centos下直接wget命令下载。 切换到/usr/local目录&#xff0c;下载软件包 # cd /usr/local # wget htt…

【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存/乐观悲观锁等优化算法)...

1. 循环分页或者循环进行部分读取处理数据的时候&#xff0c;使用 session.clear() ; 2. 对应1N&#xff08;N1&#xff09;问题使用如下解决方式&#xff1a; 1&#xff09;&#xff1a; 使用createCriteria进行查询(join fetch) 2&#xff09;&#xff1a;HQL -> joi…

最新ffmpeg编译和用eclipse进行源码调试

最近由于项目需要&#xff0c;必须修改ffmpeg的源码进行修改才能满足项目的需求&#xff0c;但以前我从来没有自己去编译和使用ffmpeg的源代码&#xff0c;一直都是用别人编译好了的sdk&#xff0c;再加上习惯了vs方便的编译环境&#xff0c;要在linux下对如此多的源代码进行编…

Django补充知识点——用户管理

内容概要 1、Form表单2、Ajax3、布局&#xff0c;Django母板4、序列化5、Ajax相关6、分页7、XSS攻击8、CSRF9、CBV、FBV 10、类中用装饰器的两种方法 11、上传文件 12、数据库正向查询、反向查询、多对多查询 13、jQuery对象和DOM对象可以互相转换 14、cookie和session 用户管理…

Python html 代码转成图片、PDF

一、下载 1、python的imgkit、pdfkit库 pip install imgkit pip install pdfkit 2、wkhtmltopdf工具包 下载地址&#xff1a;https://wkhtmltopdf.org/downloads.html 下载之后安装&#xff0c;安装完成会生成两个程序&#xff0c;分别用来转图片和pdf&#xff1a; 二、使…

SpringEL expression:

2019独角兽企业重金招聘Python工程师标准>>> 这个异常有下面几种情况 1、你写的 EL 表达式有语法错误。 2、再者就是你取得变量是多级的话比如 student.address.prevince 属性model 关联有问题。 3、还有就是你取得值为空&#xff08;null&#xff09; 比如 Thymel…

利用qt和ffmpeg软件来制作视频裁剪工具

0 什么是ffmpeg? Libav&#xff08;旧称&#xff1a;FFmpeg&#xff09;是一个自由软件&#xff0c;可以运行音频和视频多种格式的录影、转档、流功能[1]&#xff0c;包含了libavcodec ─这是一个用于多个专案中音频和视频的解码器库&#xff0c;以及 libavformat ——一个音频…

域添加另一台机器_巨杉Tech | SequoiaDB数据域概念解读与实践

近年来&#xff0c;银行各项业务发展迅猛&#xff0c;客户数目不断增加&#xff0c;后台服务系统压力也越来越大&#xff0c;系统的各项硬件资源也变得非常紧张。因此&#xff0c;在技术风险可控的基础上&#xff0c;希望引入大数据技术&#xff0c;利用大数据技术优化现有IT系…

推荐一个接口文档工具

ShowDoc 转载于:https://www.cnblogs.com/LW-baiyun/p/8003975.html

云计算的概念_云计算概念掀起涨停潮 美利云奠定板块龙头地位

温馨提示&#xff1a;股市风险时刻存在&#xff0c;文中所提个股仅为个人观点&#xff0c;请勿盲目跟随操作&#xff0c;笔者希望大家都做到不贪婪&#xff0c;不恐惧&#xff0c;不瞎猜&#xff0c;不跟风做一个纪律严明轻松淡定的股票交易者。社4月26日讯&#xff0c;沪深两市…

Python 第三方模块之 PDFMiner(pdf信息提取)

PDFMiner简介 pdf提取目前的解决方案大致只有pyPDF和PDFMiner。据说PDFMiner更适合文本的解析&#xff0c;首先说明的是解析PDF是非常蛋疼的事&#xff0c;即使是PDFMiner对于格式不工整的PDF解析效果也不怎么样&#xff0c;所以连PDFMiner的开发者都吐槽PDF is evil. 不过这些…

TFS2017持续发布中调用PowerShell启停远程应用程序

目前团队项目中有多个Web、服务以及与大数据平台对接接口等应用&#xff0c;每次的发布和部署采用手工的方式进行。停止应用程序&#xff0c;拷贝发布包&#xff0c;启动应用程序&#xff0c;不停的循环着&#xff0c;并且时不时地会出现一些人为错误性问题。这种模式消耗的很多…

Flask 多线程

参数 app.run()中可以接受两个参数&#xff0c;分别是threaded和processes&#xff0c;用于开启线程支持和进程支持。 threaded&#xff1a; 是否开启多线程&#xff0c;默认不开启。 if __name__ __main__:app.run(threadedTrue)processes&#xff1a;进程数量&#xff0c…