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,一经查实,立即删除!

相关文章

TensorFolw 报错

1、报错1&#xff1a;ValueError: Only call softmax_cross_entropy_with_logits with named arguments (labels..., logits..., ...) 提示出错如下&#xff1a; Traceback (most recent call last):File "/MNIST/softmax.py", line 12, in <module>cross_en…

CentOS7种搭建FTP服务器

安装vsftpd 首先要查看你是否安装vsftp [rootlocalhost /]# rpm -q vsftpd vsftpd-3.0.2-10.el7.x86_64 #显示也就安装成功了&#xff01; 如果没有则安装vsftpd [rootlocalhost/]# yum install -y vsftpd 完成后再检查一遍 [rootlocalhost /]# whereis vsftpd vsf…

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帧代…

Tensorflow 加载预训练模型和保存模型

使用tensorflow过程中&#xff0c;训练结束后我们需要用到模型文件。有时候&#xff0c;我们可能也需要用到别人训练好的模型&#xff0c;并在这个基础上再次训练。这时候我们需要掌握如何操作这些模型数据。看完本文&#xff0c;相信你一定会有收获&#xff01; 一、Tensorfl…

在 ActiveReports 中嵌入 Spread 控件

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

sort()函数、C++

Sort&#xff08;&#xff09;函数是c一种排序方法之一&#xff0c;它使用的排序方法是类似于快排的方法&#xff0c;时间复杂度为n*log2(n) &#xff08;1&#xff09;Sort函数包含在头文件为#include<algorithm>的c标准库中。 II&#xff09;Sort函数有三个参数&#x…

python waitkey_python中VideoCapture(),read(),waitKey()的使用

有以下程序import cv2cap cv2.VideoCapture(0)while cap.isOpened():ret,frame cap.read()cv2.imshow(frame,frame)c cv2.waitKey(1)if c 27:breakcap.release()cv2.destroyAllWindows()说明&#xff1a;程序段里&#xff0c;1、cv2.VideoCapture()函数&#xff1a;cap cv…

深度学习案例之 验证码识别

本项目介绍利用深度学习技术&#xff08;tensorflow&#xff09;&#xff0c;来识别验证码&#xff08;4位验证码&#xff0c;具体的验证码的长度可以自己生成&#xff0c;可以在自己进行训练&#xff09; 程序分为四个部分 1、生成验证码的程序&#xff0c;可生成数字字母大…

windows下使用pthread库

最近在看《C多核高级编程》这本书&#xff0c;收集了些有用的东西&#xff0c;方便在windows下使用POSIX标准进行Pthread开发&#xff0c;有利于跨平台。 -------------------------------------------------- windows下使用pthread库时间:2010-01-27 07:41来源:罗索工作室 作…

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

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

python数值计算guess_【python】猜数字game,旨在提高初学者对Python循环结构的使用...

import random #引入生成随机数的模块需求&#xff1a;程序设定生成 1-20 之间的一个随机数&#xff0c;让用户猜日期&#xff1a;2019-10-21作者&#xff1a;xiaoxiaohui目的&#xff1a;猜数字game&#xff0c;旨在提高初学者对Python 变量类型以及循环结构的使用。secretNu…

调试九法-总体规则

调试规则规则1 理解系统规则2 制造失败规则3 不要想&#xff0c;而要看规则4 分而治之规则5 一次只改一个地方规则6 保持审计跟踪规则7 检查插头规则8 获得全新观点规则9 如果你不修复bug&#xff0c;它将依然存在转载于:https://www.cnblogs.com/uetucci/p/7987805.html

深度学习之循环神经网络(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;没…

Linphone编译【转载】

Linphone依赖太多的库&#xff0c;以致于稍有疏失&#xff0c;就会在编译&#xff0c;运行出错&#xff0c;都是由于依赖库安装的问题。 1 基础知识 1.1 动态库的连接 很多人安装完库后&#xff0c;configure依然报告这个库没有。这是对linux动态库知识匮乏造成&#xff0c;也就…

python助教的面试题_python面试题----持续更新中

为什么学习Python&#xff1f;通过什么途径学习的Python&#xff1f;Python和Java、PHP、C、C#、C等其他语言的对比&#xff1f;python 解释型语言&#xff0c;语法简洁优雅。C C 编译型语言&#xff0c;先编译后运行&#xff0c;偏底层。简述解释型和编译型编程语言&#xff1…

python3模块: requests

Python标准库中提供了&#xff1a;urllib等模块以供Http请求&#xff0c;但是&#xff0c;它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作&#xff0c;甚至包括各种方法覆盖&#xff0c;来完成最简单的任务。 发送GET请求 import urllib.requestf…

SUSE12系统安装及LVM设置详解

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

在windows下编译FFMPEG-最新2009版本

转】在windows下编译FFMPEG-最新2009版本2010-11-17 18:50大家可以看到&#xff0c;此篇之前有很多个版本的“在windows下编译FFMPEG”&#xff0c;那些都是我在网上搜罗来的&#xff0c;在看了无数篇那些过期的、有借鉴价值的文章后&#xff0c;我终于成功在windows下编译出了…