前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >视频压缩编码技术(H.264) 之算术编码

视频压缩编码技术(H.264) 之算术编码

作者头像
瓜大三哥
发布2018-08-17 17:26:00
1.2K0
发布2018-08-17 17:26:00
举报
文章被收录于专栏:瓜大三哥瓜大三哥

算术?编码?

算术+编码

算术编码?什么鬼

是不是感觉越来越难了呢

(向上滑动查看内容)

早在1948年,香农就提出将信源符号依其出现的概率降序排序,用符号序列累计概率的二进值作为对芯源的编码,并从理论上论证了它的优越性。1960年, Peter Elias发现无需排序,只要编、解码端使用相同的符号顺序即可,提出了算术编码的概念。Elias没有公布他的发现,因为他知道算术编码在数学上虽然成 立,但不可能在实际中实现。1976年,R. Pasco和J. Rissanen分别用定长的寄存器实现了有限精度的算术编码。1979年Rissanen和G. G. Langdon一起将算术编码系统化,并于1981年实现了二进制编码。1987年Witten等人发表了一个实用的算术编码程序,即CACM87(后用 于ITU-T的H.263视频压缩标准)。同期,IBM公司发表了著名的Q-编码器(后用于JPEG和JBIG图像压缩标准)。从此,算术编码迅速得到了 广泛的注意。

算术编码和哈夫曼编码不同,不采用一个码字代表一个输入信息符号的办法,而采用一个浮点数来代替一串输入符号,经算术编码后输出一个小于1,大于或等于0 的浮点数,在解码端被正确地唯一的解码,恢复原符号序列,算术编码的基本原理是将编码的消息表示成实数0和1之间的一个间隔(Interval),消息越长,编码表示它的间隔就越小,表示这一间隔所需的二进制位就越多。

算术编码用到两个基本的参数:符号的概率和它的编码间隔。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间。编码过程中的间隔决定了符号压缩后的输出。

给定事件序列的算术编码步骤如下:

1.编码器在开始时将“当前间隔” [ L, H) 设置为[0,1)。

2.对每一事件,编码器按步骤(a)和(b)进行处理

● 编码器将“当前间隔”分为子间隔,每一个事件一个。

● 一个子间隔的大小与下一个将出现的事件的概率成比例,编码器选 择子间隔对应于下一个确切发生的事件相对应,并使它成为新的

“当 前间隔”。

3.最后输出的“当前间隔”的下边界就是该给定事件序列的算术编码。

举例如下。

假设信源符号为{A, B, C, D},这些符号的概率分别为{ 0.1, 0.4, 0.2,0.3 },根据这些概率可把间隔[0, 1)分成4个子间隔:[0, 0.1), [0.1, 0.5), [0.5, 0.7), [0.7, 1),其中[x,y)表示半开放间隔,即包含x不包含y。上面的信息可综合在下表中。

符号

A

B

C

D

概率

0.1

0.4

0.2

0.3

初始编码间隔

[0, 0.1)

[0.1, 0.5)

[0.5, 0.7)

[0.7, 1]

如果二进制消息序列的输入为:C A D A C D B。编码时首先输入的符号是C,找到它的编码范围是[0.5,0.7)。由于消息中第二个符号A的编码范围是[0, 0.1),因此它的间隔就取[0.5, 0.7)的第一个十分之一作为新间隔[0.5,0.52)。依此类推,编码第3个符号D时取新间隔为[0.514, 0.52),编码第4个符号A时,取新间隔为[0.514, 0.5146),…。消息的编码输出可以是最后一个间隔中的任意数。整个编码过程如下表所示

步骤

输入符号

编码间隔

编码判决

1

C

[0.5, 0.7)

符号的间隔范围[0.5, 0.7)

2

A

[0.5, 0.52)

[0.5, 0.7)间隔的第一个1/10

3

D

[0.514, 0.52)

[0.5, 0.52)间隔的最后一个1/10

4

A

[0.514, 0.5146)

[0.514, 0.52)间隔的第一个1/10

5

C

[0.5143, 0.51442)

[0.514, 0.5146)间隔的第五个1/10开始,二个1/10

6

D

[0.514384, 0.51442)

[0.5143, 0.51442]间隔的最后3个1/10

7

B

[0.5143836, 0.514402)

[0.514384,0.51442]间隔的4个1/10,从第1个1/10开始

8

从[0.5143876, 0.514402)中选择一个数作为输出:0.5143876

其译码过程如下表所示:

步骤

间隔

译码符号

译码判决

1

[0.5, 0.7)

C

0.51439在间隔 [0.5, 0.7)

2

[0.5, 0.52)

A

0.51439在间隔 [0.5, 0.7)的第1个1/10

3

[0.514, 0.52)

D

0.51439在间隔[0.5, 0.52)的第7个1/10

4

[0.514, 0.5146)

A

0.51439在间隔[0.514, 0.52]的第1个1/10

5

[0.5143, 0.51442)

C

0.51439在间隔[0.514, 0.5146]的第5个1/10

6

[0.514384, 0.51442)

D

0.51439在间隔[0.5143, 0.51442]的第7个1/10

7

[0.51439, 0.5143948)

B

0.51439在间隔[0.51439,0.5143948]的第1个1/10

8

译码的消息:C A D A C D

想知道更多关于视频压

缩编码技术(H.264)的内容么

那记得及时关注小编的动态

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档