指数哥伦布编码
规定语法元素的编解码模式的描述符如下:
比特串:
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.
分享到:
相关推荐
C语言实现H.264/AVC指数哥伦布编码,有配套文章,请查阅微信公众号:金架构
H.264/AVC中Exp-Golomb指数哥伦布编码详解(含编码和解码),使用C语言实现,另有与之匹配详解文章,请查阅微信公众号:金架构
这个资源是有符号和无符号指数哥伦布熵编码代码实现工程,里面没有自动填充sps和pps的代码,仅仅是增加了如何进行哥伦布指数编码的代码,可以在此基础上自行根据sps和pps的规则来填充数据。
H264的指数哥伦布熵编码加密算法的研究H264的指数哥伦布熵编码加密算法的研究
详细的解释了,哥伦布编码的具体算法。和大家交流一下
使用C++实现了Golomb-Rice编码和Exp-Golomb编码。 里面还包含有一个bitstream库,用来将bit流转换为byte buffer,或者将byte buffer转换为bitstream 相关的博文地址:...
该模块实现零阶指数哥伦布编码。 该表示使用很少的位来表示小数(例如,零使用 1 位;+1、+2、-1、-2 各使用 4),对于较大的数,长度相应增加。 在这个核心之上,它提供了一些函数,用于获取整数数组,对它们进行...
Golomb 编码器/解码器的 MATLAB 实现。 将函数添加到 MATLAB 的当前工作目录,您就可以开始使用 Golomb 编码了。
基本压缩算法函数库 哈夫曼 指数哥伦布编码 RLE LZ77 RICE
解析SPS和PPS需要用到的头文件bs.h,在解析SPS和PPS的时候,我们需要从码流中读取1-n个字节,然后还需要无符号指数哥伦布编码和有符号指数哥伦布编码的解析,这里面用到一些函数,刚还bs.h头文件就包含了这些解析...
H.264中指数哥伦布算法的优化实现研究,翁慈洁,张悠慧,本文研究了H.264视频压缩标准中指数哥伦布解码算法,提出了一种优化实现。该实现利用指数哥伦布码字的特性,给出了一种使用计算代�
哥伦布竖立鸡蛋PPT课件.pptx
数概率分布的特点,采用自适应零游程编码联合指数哥伦布编码实现图像压缩。该方法在保证较高压缩质量的同时,具 有低复杂度和硬件易实现的特点,通过FPGA 最快可实现高达175 Mpixel/s的超高速图像...
ffmpeg中抽取出来的几个函数,主要是指数哥伦布编码函数,用来判断slice_type 从而判断I P B帧类型 希望对大家有用
这是一个描述的文档,教你怎么写Verilog关于H264 的文章那个,考了非常受启发。
哥伦布的故事.doc
是有限元分析视频学习,用于有限元分析视频学习
基于Golomb编码的图像压缩 用Matlab预言进行编写 此为源码
哥伦布的探险故事.doc
论“哥伦布”的倒塌