本节课内容 QM编码器 Golomb编码.

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

第九章 常微分方程数值解法 §1 、引言. 微分方程的数值解:设方程问题的解 y(x) 的存在区间是 [a,b] ,令 a= x 0 < x 1
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
第二章 导数与微分. 二、 微分的几何意义 三、微分在近似计算中的应用 一、 微分的定义 2.3 微 分.
练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
信号与系统 第三章 傅里叶变换 东北大学 2017/2/27.
第三章 函数逼近 — 最佳平方逼近.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
不确定度的传递与合成 间接测量结果不确定度的评估
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
第三章 多维随机变量及其分布 §2 边缘分布 边缘分布函数 边缘分布律 边缘概率密度.
面向对象建模技术 软件工程系 林 琳.
SOA – Experiment 3: Web Services Composition Challenge
走进编程 程序的顺序结构(二).
基于全方位视觉的多人体运动检测跟踪 利用全方位摄像机获取360˚ 的环境信息,在室内对多个人体目标进行实时运动检测。
What have we learned?.
第十章 方差分析.
数据挖掘工具性能比较.
数据说明 郝蕊.
28.1 锐角三角函数(2) ——余弦、正切.
第八模块 复变函数 第二节 复变函数的极限与连续性 一、复变函数的概念 二、复变函数的极限 二、复变函数的连续性.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
C语言程序设计 主讲教师:陆幼利.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
概 率 统 计 主讲教师 叶宏 山东大学数学院.
VisComposer 2019/4/17.
WPT MRC. WPT MRC 由题目引出的几个问题 1.做MRC-WPT的多了,与其他文章的区别是什么? 2.Charging Control的手段是什么? 3.Power Reigon是什么东西?
卷积码.
人教版高一数学上学期 第一章第四节 绝对值不等式的解法(2)
复习.
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
1.2 有理数 第1课时 有理数 伏家营中学 付宝华.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第六章 Excel的应用 一、Excel的单元格与区域 1、单元格:H8, D7, IV26等 2、区域:H2..D8, HS98:IT77
第4章 Excel电子表格制作软件 4.4 函数(一).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
复习: 若A(x1,y1,z1) , B(x2,y2,z2), 则 AB = OB - OA=(x2-x1 , y2-y1 , z2-z1)
多媒体技术 中南大学信息科学与工程学院 黄东军.
iSIGHT 基本培训 使用 Excel的栅栏问题
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
3.16 枚举算法及其程序实现 ——数组的作用.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
第4课时 绝对值.
算术编码 算术编码:采用0到1区间上一个浮点数来代替一串输入符号。本质是为整个输入流分配一个码字,而不是给输入流中的每个字符分别指定码字。
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第一部分:概率 产生随机样本:对分布采样 均匀分布 其他分布 伪随机数 很多统计软件包中都有此工具 如在Matlab中:rand
第七、八次实验要求.
分数再认识三 真假带分数的练习课.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
3.1无理数2.
§2 方阵的特征值与特征向量.
难点:连续变量函数分布与二维连续变量分布
Reversible Data Hiding in Color Image with Grayscale Invariance
第三节 函数的微分 3.1 微分的概念 3.2 微分的计算 3.3 微分的应用.
_01自己实现简单的消息处理框架模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司
第三章 从概率分布函数的抽样 (Sampling from Probability Distribution Functions)
数据表示 第 2 讲.
第十七讲 密码执行(1).
第十二讲 密码执行(上).
第二次课后作业答案 函数式编程和逻辑式编程
质量控制(QC)模式 BrookFIELD.
最小生成树 最优二叉树.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
Presentation transcript:

本节课内容 QM编码器 Golomb编码

QM编码器 二进制信源算术编码 只处理二进制信源符号 设计目标:简单、快速 对乘法操作进行近似 定点精度的整数算术编码 不断标定概率区间,使得近似结果接近于真正的乘法 在现代图像和视频压缩算法中广泛应用:JBIG, JPEG, JPEG2000, H.263, H.264

QM编码器 很多二值图像都存在局部结构 通过观察邻域状态,可以合理猜测当前像素的值 每种情况都是一个分布很不均衡的概率模型适合算术编码 在某个部分,大部分向素值为1(如背景区域) 而在另外某个部分,大部分向素值为0(如文字区域) 通过观察邻域状态,可以合理猜测当前像素的值 如邻域像素值为1,则当前像素值极有可能为1; 反之亦然 每种情况都是一个分布很不均衡的概率模型适合算术编码 对每种情况都分别采用一个算术编码器,以得到更好的性能(与对所有像素只用一个编码器相比)

QM编码器 例:像素值为0的概率 ,像素值为1的概率 则熵为: 若假设分为两个集合,分别包含80%和20%的像素 例:像素值为0的概率 ,像素值为1的概率 则熵为: 即只有一个算术编码器编码的话,平均码率将接近0.722比特 若假设分为两个集合,分别包含80%和20%的像素 第一个集合:95%的像素值为1 第二个集合:70%的像素为0 则两个集合的熵分别为0.286和0.881。如果对两个集合分别采用不同的算术编码器,则平均码率接近 JBIG/JPEG中采用多个模型(上下文),每个上下文对应不同的算术编码器,每个算术编码器的计算机制相同,只是概率模型不同。

QM编码器 基本思想:将输入符号(一个bit)分为大概率符号(More Probable Symbol, MPS)或小概率符号(Less Probable Symbol, LPS) 在输入下一位之前,编码器先利用一个统计模型(通常是上下文信息,如在黑-白图像编码中用二维的上下文)来预测MPS是0还是1,然后再输入该位并按其实际值分类 模型预测的MPS与实际值不一致,则编码器将该位归为LPS;否则继续归为MPS 输出流为MPS或LPS的流,MPS和LPS的概率动态更新,为算术编码器所用 解码器所知道的信息也是当前处理的位是MPS还是LPS,然后利用与编码器相同的统计模型得到信源符号的原值

QM编码器 令qc表示LPS的概率,并将较低的区间赋予MPS 符号 概率 累积概率 区间范围 LPS qc 1- qc [1- qc,1) [0,1- qc) 1 1- qc

QM编码器 算术编码中的 的更新用 代替 出现MPS的迭代的规则为: 出现LPS的迭代的规则为 A A(1- qc) 符号 概率 累积概率 区间范围 LPS qc 1- qc [1- qc,1) MPS [0,1- qc) 算术编码中的 的更新用 代替 出现MPS的迭代的规则为: 出现LPS的迭代的规则为 A(1- qc) A 区间内的任何数字都可以作为输出,为简单起见,QM编码器将子区间的下界l作为输出

QM编码器 例: 初始化: 注意:当输入序列越来越长,区间越来越窄,l越来越大 符号 l A 初始值 1 LPS 0+(1-0.5)=0.5 1 LPS 0+(1-0.5)=0.5 1*0.5=0.5 MPS 0.5 0.5*(1-0.5)=0.25 0.5+0.25(1-0.5)=0.625 0.25*0.5=0.125 0.625 0.125*(1-0.5)=0.0625

重新标定 在上例中,若 ,最后l=0.981,A=0.0081 当A太小,需要很高的精度才能将其与0分开 重新标定:对A和l同时放大一倍(对二进制数左移一位) 若A<0.5,可能需要重新标定多次(如上例中A=0.1,需重新标定3次,变成0.8) 输入LPS,肯定需要重新标定;输入MPS,可能需要重新标定,取决于A的具体值。 符号 l A 初始值 1 LPS 0+(1-0.1)=0.9 1*0.1=0.1 MPS 0.9 0.1*(1-0.1)=0.09 0.9+0.09(1-0.1)=0.981 0.09*0.1=0.009 0.981 0.009*(1-0.1)=0.00081

重新标定 问题:找到一个阈值t,当A<t时,对A放大一倍; 另:A和2*A应尽量接近1,即: 找到t>0.5,使得 (max(1-t, 2t -1))最小  t=0.75. 另外,A的更新需要乘法 A := A (1 – qc) 或 A := Aqc JBIG委员会推荐用近似代替乘法 A 接近1时,A (1 – qc) 用 (A– qc)代替,Aqc用qc代替。 当采用最佳阈值t = 0.75, A 的值总是在区间 [0.75, 1.5)内 整数实现,大多数计算的字长为16位

条件交换 通过重新标定进行近似带来一个问题:分配给MPS的子区间可能比LPS分配的子区间还小 例: qc =0.45,输入4个MPS 由于用A= A- qc 去近似 A=A(1- qc) 例: qc =0.45,输入4个MPS 初始化:A=1,l=0 第1个MPS:A=0.55  A=1.1, l=0 第2个MPS:A=0.65  A=1.3, l=0 第3个MPS:A=0.85, l=0 第4个MPS:A=0.40, l=0 分配给MPS的区间为0.4,而分配给LPS的区间为qc =0.45 当接近0.5时会出现这种情况 A=A– qc A-qc=0.85-0.45 = 0.4

重新标定 发生这种情况的条件为: 解决办法:有条件交换(conditional exchange) 当满足上述条件时,交换两个区间 由于有条件交换只发生在重新标定时的近似过程中,只需在决定要重新标定后才测试交换的条件是否满足

重新标定 采用标定,修改后的编码器为: 总是要重新标定

重新标定 带有条件交换的重新标定近似的伪代码为:

QM解码器 解码过程为编码的逆过程 A A(1- qc) 初始化: ,分割线为A(1- qc)=1(1-0.5)=0.5,因此MPS和LPS对应的区间分别为 输入码字为C,对应编码中的l

QM解码器 解码器的伪代码为:

主要内容 游程编码 Golomb码 一元码 Golomb-Rice码 指数Golomb ( Exp-Golomb )码 自适应Golomb码 在JPEG-LS (Lossless JPEG)中的应用

游程编码 许多0和不太多的1 简单游程码: 传真 图形 00000010000000001000000000010001001..... 6 9 10 3 2 ... 对整数序列进行编码

一元码(Unary Code) 对非负整数n,用n个1和一个0表示(或者n个0和一个1) 在什么情况下是最佳码? 为前缀码 当概率为1/2、1/4、1/8、1/16、1/32… 此时Huffman码就是一元码

实现 编码(Encoding): 解码(Decoding):

一元码 如果输入时负整数呢? 可能的解决方案: 在JPEG-LS部分再详述

几何分布 (Geometric Distribution, GD) 参数为 的几何分布: 在Bernoulli实验中,在第一次成功之前失败次数为x的概率,失败的概率为 当参数 时,一元码为最佳前缀码: Huffman编码:不需要重新排序等价于一元码 一元码为最佳前缀码,但效率不高 Huffman编码需要重新排序,一元码不是最佳前缀码 平均长度=熵 一元码不仅是最佳前缀码,而且是所有熵编码中是最佳的(包括算术编码)

为什么用几何分布? 几何分布对图像/视频压缩很有用 例:游程编码 i.i.d. 分布的二值序列 例:0000010000000010000110000001 熵<<1,前缀码的性能不好 游程编码对压缩数据很有效: r: 在两个1中间连续的0的个数:5,8,4,0,6 游程r的概率分布: n个0接着一个1 参数为 的单边几何分布

为什么用几何分布? 例2:预测误差 大多数的 的值都很小,在0附近可用双边几何分布(GD)建模 双边GD可用单边GD近似: 减少自适应熵编码中上下文的数目 将负数映射成正数: 映射可能不止一个 在JPEG-LS中再详述

为什么用几何分布? GD分布是对指数分布的离散近似。指数分布为: 双边几何分布为Laplacian分布(亦称为双边指数分布)的离散近似。Laplacian分布为:

Golomb码 对例如游程的几何分布,一种方式对游程用Huffman编码得到前缀码。 但游程的数目很大,而且可能不能预知,所以一个更好的办法是构造一个无限族的最佳前缀码,使得对无论多大的游程,在该前缀码族中都可以找到一个码字对该游程进行编码 该前缀码族与概率 有关,称为参数前缀码。Golomb码就是这样一组码,且对几何分布而言是最佳码 参数 越大,大的游程比较可能 参数 越小,大的游程不太可能出现

Golomb码 一种多分辨率的方法: 码字:(一元码,固定长度) 将所有数字分为等大小为m的组:表示为Golomb(m)或Golomb-m 符号值较小的组分配的码长较短 同一组内符号码长基本相等:码长的增长比一元码要慢得多 码字:(一元码,固定长度) 组号:一元码 每组内的索引编号:固定长度码 S. Golomb, Run-length encodings, IEEE Trans. Information Theory, Vol. 12, No. 3, Jul 1966, pp. 399 - 401.

Golomb码 r:余数,“固定长度”码 q: 商,用一元码 当 时,k比特: 当 时, m=8: 000, 001, …, 111 当 时, m=5: 00, 01, 10, 110, 111

Golomb码 m=5时的Golomb码(Golomb-5):

Golomb码 m较小,Golomb码初始很短,但增长很快,适合RLE中 较小,即大游程很少的情况 n m = 0 m = 1 m = 2 m = 3 1 0 0 0 00 0 000 2 10 0 1 0 01 0 001 3 110 10 0 0 10 0 010 4 1110 10 1 0 11 0 011 5 11110 110 0 10 00 0 100 6 111110 110 1 10 01 0 101 7 1111110 1110 0 10 10 0 110 8 11111110 1110 1 10 11 0 111 9 111111110 11110 0 110 00 1 000 m较小,Golomb码初始很短,但增长很快,适合RLE中 较小,即大游程很少的情况 m较大,初始Golomb码很长,但增长很慢,适合RLE中 较大,即大游程较多的情况

Golomb-Rice码 特定的Golomb码: 余数r为n的k低位 m=8:

实现 编码(Encoding): 解码(Decoding):

指数Golomb码(Exp-Golomb) 码字仍然包括两部分: (一元码,固定长度码)

实现 编码(Encoding): 对 的组的码字: 对x用一元码编码 用X比特表示组内索引 组号(GroupID):

实现

实现 解码(Decoding):

为什么用Golomb码 Golomb码的重要性: 问题: 对任何几何分布(GD),可以找到一个Golomb码为最佳前缀码,且和熵尽可能接近(在所有的前缀码中) 问题: 怎样确定Golomb的参数? 怎样将其应用到实际的编码器中?

几何分布的最佳码 参数为 的几何分布 当参数 时,一元码为最佳前缀码 当 时,怎样构造最佳一元码? 怎样转化?:将m个事件组成一组 参数为 的几何分布 当参数 时,一元码为最佳前缀码 当 时,在所有的熵编码是最佳的 当 时,怎样构造最佳一元码? 转化为 的几何分布(尽可能接近) 怎样转化?:将m个事件组成一组

几何分布的最佳码 当 时,每个x可以写成: 为参数为 的几何分布 若 ,一元码为 的最佳码  为最小的可能整数

几何分布的最佳码 怎样对 编码? 对 ,如果 ,则  的码字比 多一个比特  的码长相等 这正好是Golomb码的格式: 怎样对 编码? 对 ,如果 ,则  的码字比 多一个比特  的码长相等 这正好是Golomb码的格式: 对q用一元码编码 对余数用(近似)等长码编码 问题:怎样找到最佳的参数

Golomb参数估计(JPEG-LS) 自适应Golomb编码的目的: 怎样根据过去的数据估计 ? 对给定数据,寻找最佳的参数m,使得 怎样根据过去的数据估计 ? 对每个像素来说,计算费用太高

Golomb参数估计(JPEG-LS) 一种快速方法: 假设

自适应Golomb编码 初始化: For each End 初始估计的均值 对每个符号 ,用参数为k的Golomb码编码 在编码后更新: If //重新归一化 End 防止溢出 慢慢忘记过去

JPEG-LS中的应用 JPEG-LS: 无失真JPEG(Lossless JPEG) JPEG中也有无失真算法,但没有被广泛采用 开始于1995,完成于1999 目标:只用最小的复杂性提高性能 基于HP实验室的LOCO-I (LOw COmplexity LOssless COmpression for Images))算法:对图像进行低复杂性压缩 JPEG-LS比无失真JPEG 2000的性能更好 采用的技术: 预测 自适应Golomb码 上下文自适应编码 游程编码

JPEG-LS流程图 对输入样本以光栅顺序编码 游程模型: 预测模型: 在平坦区域采用(所有4个邻居都相等),此时前缀码不是很有效 在其他区域采用 根据上下文预测 确定上下文 在每个上下文中,对预测残差找到一个概率模型 对残差用自适应Golomb码编码

预测 根据3个邻居预测每个样本x的值 基于简单的边缘检测: 预测残差:

预测 此时,预测值在a, b, c确定的平面上 JPEG-LS中预测规则的一个等价表示为:

残差分布 若预测设计得很好,则可以用一个双边的几何分布来对残差进行建模: 由于使用整数预测,通常会出现偏差 T 偏差T可被分为其整数部分C和小数部分s: T = C - s. 可以估计并取消C 因此剩余的偏差为: s的值决定双边几何分布向单边几何分布的映射

残差分布:映射到单边GD 情况1: 情况2:

上下文模型 根据局部条件概率 对每个预测残差进行自适应Golomb码 上下文:邻域内样本的每个配置 可以利用高阶条件获得较小的熵(更好的压缩) 条件会降低熵 问题: 为了跟踪更多的上下文文会增加费用 对每个上下文没有足够多的训练数据来训练 JPEG-LS中的上下文:基于4个邻居的3个局部梯度 g1 = d – b, g2 = b – c, g3 = c – a.

上下文 g1 = d – b, g2 = b – c, g3 = c – a: 上下文量化: JPEG-LS:将每个梯度分为9个区域 如果a, b, c, d 在[0, 255]内,则会有太多可能的 {g1, g2, g3} 上下文量化: 将每个梯度分为大致等概率的区域 目的:最大化 x(n)和其邻居之间的互信息 JPEG-LS:将每个梯度分为9个区域 {g1, g2, g3}组合的总的数目: 仍然太多了!

上下文 对称性假设:为了进一步减少上下文的数目,假设 在JPEG-LS,当第一个非0的gi是负数,将采用 上下文 –{g1, g2, g3},并将ε编码为–ε。 解码器:当解码器发现第一个非0的gi是负数,也采用 –{g1, g2, g3}为上下文来解码残差,然后翻转符号。 通过对称性假设,上下文的数目合并为: 总的上下文数目为:729-324-36-4 = 365.

自适应Golomb编码 对每个像素: 1. 根据邻居计算预测值 2. 确定上下文索引λ 将每个上下文映射成单边GD后,都应该进行该过程:

自适应Golomb编码 为了方便参数估计,对每个上下文,维护: Aλ:上下文λ中|ε|之和 Nλ:上下文λ中的事件总数目 C/C++ 实现:for (i = 0; (N << i) < A; i++); 为了消除预测残差中整数偏差C的影响,对每个上下文,维护: Bλ:上下文λ中所有ε 之和

自适应Golomb编码 在编码后更新: 偏差更新:由于整数偏差在以前的ε中被去掉, Bλ / Nλ的值不会太大 Aλ = Aλ + |ε|; If Nλ = Nλ + 1. 偏差更新:由于整数偏差在以前的ε中被去掉, Bλ / Nλ的值不会太大

游程模式 当所有4个邻居都相同时,编码器进入游程模式 x 极有可能也为相同值 前缀码此时不是很有效 对游程r进行编码:r为像素值连续相同的像素数目 游程r满足单边几何分布。

Reading Golomb码: JPEG-LS: 电子书Data Compression The Complete Reference, 3rd Edition第2.4节 JPEG-LS: M. Weinberger, G. Seroussi and G. Sapiro, The LOCO-I lossless image compression algorithm: principles and standardizations into JPEG-LS, IEEE Trans. Image Processing, Vo.. 9(8), pp. 1309-1324, Aug. 2000. 《数据压缩原理与应用》第4.7节

下节课内容 字典编码