数字图像数据量很大,需要缩减数据量,便于保存和交流
– 采用对图象的新的表达方法以减小所需的数据量
– 数据和信息:数据是信息的载体
• 对给定量的信息,可用不同的数据量来表示
• 对给定量的信息,设法减少表达这些信息的数据量称为数据压缩
– 图象压缩(编码)和图象解压缩(解码)
– 人眼对颜色的空间分辨低于对亮度的分辨
• 彩色图像编码时可以对色度和亮度采用不同表示
– 人眼对画面静止部分的空间分辨高于活动部分
• 运动目标采用低分辨率表示
– 人眼不能察觉亮度的细小变化,即存在视觉阈值,且该阈值与图像内容相关
• 平坦区阈值低,对量化失真敏感,边缘和纹理区对量化失真不敏感,可以粗糙量化
– 人眼对图像中心的失真敏感
• 对图像周边可以粗糙量化节约码字
– 无损压缩
• 在压缩和解压缩过程中没有信息损失
• 压缩率一般在2 ~ 10之间
– 有损压缩
• 常能取得较高的压缩率(几十)
• 但图象经过压缩后并不能经解压缩恢复原状
– 数据是信息的载体
– 同量的数据可表达不同量的信息
– 同量的信息可用不同量的数据表达
– 冗余
• 数据表达了无用的信息
• 数据表达了已表达的信息
– 相对数据冗余
• n1和n2代表表达同一信息,2个数据集合中各自信息载体的个数
• n1相对n2数据冗余的定量描述为 RD=(n1-n2)/n1= 1−1 /CR RD在(-∞,1) 中取值
• 压缩率 CR = n1 /n2 CR 在(0, ∞) 中取值
– 编码冗余
• 与灰度分布的概率特性有关
– 象素相关冗余
• 空间冗余,时间冗余,几何冗余
– 心理视觉冗余
• 与主观感觉有关
– 减少/消除其中的1种/多种冗余,就能取得数据压缩的效果
– 编码:需建立码本来表达数据
– 码本:用来表达一定量的信息或一组事件所需的一系列符号(如 字母、数字等)
– 码字:对每个信息或事件所赋的码符号序列
– 码字的长度(字长):每个码字里的符号个数
– 图像中每种信息(灰度)出现的概率:
PsSk=nkn k=0,1,…,L-1
– 不同灰度出现概率不同
• 平均比特数
Lavg=k=0L-1l(Sk)Ps(Sk)
– 减少编码冗余的办法-变⻓编码⽅法
• 用较少的比特数表示出现概率较大的灰度级
• 用较多的比特数表示出现概率较小的灰度级
– 右边两幅图像,具有相同的目标
– 直方图差别不大,编码冗余相近
– 但两图自相关性相差很大
• 对某一行计算自相关
– 图像中有与象素间相关性直接联系的数据冗余,即象素间冗余。
• 具有象素间冗余,图像中的各像素可以比较方便的用邻近像素的值进行预测,每个独立像素携带的信息量相对较少。
• 减少像素冗余常常采用一些映射变换的方式
– 连续序列图像之间的帧间冗余与此有相同的物理概念。
• 人眼并非对所有的视觉信息都同样敏感,编码过程通过去除一些视觉不敏感的(空间、色彩)信息来进行压缩,就是基于心理视觉冗余理论的实践。也就是所谓的“第二代编码技术” 。
• 这种编码方式是对信息的损失,只是这样的损失在人的心理上没有造成影响。 • 电视的隔行扫描就是一种基于心理视觉冗余的压缩应用。
• 图像压缩有无损和有损两种方式
• 有损压缩造成的损失如何度量?
– 主观保真度准则:个人感觉的优、良、中、差。
– 客观保真度准则:⽤编码输入图与解码输出图的某个确定函数来表⽰损失的信息量, 便于计算或测量
一种常用的方法是对一组观察者(不少于20人)显示图像,并将他们对该图像的评分取平均用于评价一幅图像的主观质量
• 概率为P(E)的随机事件E的信息量:
IE=log1P(E)=-logP(E)
• I(E )称为E的自信息(随概率增加而减少)
• 特例:P(E ) = 1(即事件总发生),那么I(E ) = 0
• 信息的单位:比特(log以2为底)
• 1个比特:即2个相等可能性的事件之一发生
• 信源符号集:A = {a1, a2, …, aJ }
• 概率矢量:u = [P(a1) P(a2) … P(aJ )]T
• 用(A, u)可以完全描述信源
• 产生单个信源符号的自信息:I(aj ) = –logP(aj )
• 产生k个信源符号,符号aj 平均来说将产生kP(aj )次
• 信源平均信息(熵,不确定性)
Hu=-j=1Jp(aj)logp(aj)
观察到单个信源符号输出时所获得地平均信息量
– 在无干扰条件下,存在一种无失真的编码方法,使得编码的平均长度Lavg与信源的熵H(u)任意的接近。
Lavg≥H(u)
这就是无失真编码定理,也称香农第一定理
– 原始图像数据的冗余度RD
• 即原始图像平均码长与原始图像熵之比减1 RD=LavgH(u)-1
– 编码效率η
• 冗余度接近0或编码效率接近1为高效码 η=H(u)Lavg=11+RD
– 压缩比C:原始数据平均比特率n与编码后平均比特率nd之比 C=nnd
• 无失真编码压缩比上限 Cmax=nH(u)
数据变换,减少象素间冗余
量化,减少心理冗余
缩短码字,减少编码冗余
不包含无可逆的量化逆过程
– 采用自然码会产生编码冗余,解决的办法是用短码表示出现多的灰度级,长码表示出现少的灰度级。
举例:
– 变长编码后,平均码长Lavg=2.7,压缩比CR=1.11
• 哈夫曼编码是消除编码冗余的常用技术,对信源符号逐个编码时,它能给出最短码字
• 基本步骤:
– 缩减信源符号数量
» 符号按照概率大小排列
» 对概率最小两符号合并,计算合并后新符号概率并排序
» 重复上述步骤,直至剩余符号不多于两个
– 对各信源符号赋值
» 赋值是合并的逆向过程
» 每次将0、1赋予新增加的符号,直到回到最原始符号
• 符号按照概率大小排列,逐次结合
• 从(消减到)最小的信源开始,逐步回到初始信源
• 建立符号与码字对照表
• 编码过程
– 按对照表将符号变成码字
• 解码过程
– 按对照表将码字变成符号
• 解码举例
– 根据上面的编码表
010100111100
– 对应的符号为
a3a1a2a2a6
– 信源消减次数:N – 2
– 码赋值次数:N – 2
– 大量符号情况下,计算量大;因此可以改用亚最优的变长编码方法,通过牺牲编码效率来换取编码速度
• 截断哈夫曼码
– 只对最可能出现的M个符号进行哈夫曼编码,
– 其他符号用合适的定长编码加前缀进行综合编码
» 合适长度L与待编码符号N的关系 N<=2L
» 前缀为其他符号总概率参与前M个符号编码得到的码字
• 平移哈夫曼码
– 将符号总数分成相同大小的符号块
– 所有块中的各个元素采用同样方法编码
– 每个块加上专门的平移符号进行区分
• 非等长码
• 解码过程能自行确定码字的起止位置,解码唯一
• 码表中任一一个短码码字都不是码表中的长码码字的前缀,即前缀码
• 码表中所有码字都在编码树的叶节点
• 但是,一旦有误码,对解码的影响是巨大的
• 哈夫曼编码的抗干扰能力不强
• 为提高变长码的抗干扰能力,通常在码流中周期性插入同步码字
• 遇到干扰,直接跳到下一个同步码字位置进行解码
• 对于被干扰数据的处理
– 丢弃或者逆向解码
• 逆向解码需要可逆变长码支持
-可逆变长码举例:
• 从整个符号序列出发进行编码,不是对单个符号的编码,没有源符号与码字的一一对应关系
• 需要每个符号的出现概率和整个符号的排列顺序
• 编码过程按照符号序列顺序递推进行,随符号序列中符号数量增加
– 用来代表它的区间变小
– 用来表达区间所需的信息单位的数量变大
• 算术编码是对符号窜整体的编码,理论上可达到无失真编码定理给出的编码极限
• 编码来自1个4-符号信源{a1, a2, a3, a4}的由5个符号组成的符号序列:b1b2b3b4b5 = a1a2a3a3a4
• 编码结果(0.06752-0.0688), 取值0.068
• 编码结果还需要有符号长度的描述:
• 对于一个序列进行解码
• 根据码字范围确定第一个字符输出
• 消除已译码字符影响
– 码字取值减译码字符下限值
– 运算结果再除以译码字符宽度值
• 根据新的码字范围重复前述步骤
• 根据信源符号长度完成全部译码
• 举例:0.068,符号长度为5
• 只需用到加法和移位运算,所以称为算术编码
• 源符号和码字间的一一对应关系并不存在
• 1个算术码字要赋给整个信源符号序列
• 码字本身确定0和1之间的1个实数区间
• 从整个符号序列出发采用递推形式连续编码
• 信源符号集A={a1,a2}={0,1}
• 符号产生概率p(a1)=0.25,p(a2)=0.75
• 序列11111100的二进制算术编码码字为0.11010102
• 编码面对8位序列,需将半开区间[0,1)分成256小区,任意一个可能的序列,只能在一个特定的区间,所以编码具有唯一性
– 采用三个发明人姓氏首字母缩写(Lempel-Ziv-Welch)
– 消除图像中的像素间冗余
– 是Unix操作系统的文件压缩标准方法
– 还应用于GIF、TIFF和PDF压缩文件中
– 码字长度固定
– 无需信源符号的出现概率
– 采用字典编码方式,编码中逐渐构成字典
– 字典定义了符号出现的顺序
– 1.初始字典:字典的前n个位置分配给全部n个可能出现的灰度值
• 一个8bit的灰度图像,若采用9bit构造字典,初始字典前256位置分配给灰度值0-255
– 2.字典扩充:编码器顺序扫描像素,确定字典中还没有出现的灰度值序列,给定新的字典内容
– 3.编码输出:每当有新的字典扩充,便输出当前识别序列在字典中的位置序号,作为编码输出
– 按编码方式建立初始字典
– 顺序解码编码串,根据已有字典对码字进行解码
– 遇到新码串,扩充字典表
– 位平面编码将多灰度值的图像分解为一系列二值图像,然后对每一幅二值图像进行二元压缩,它既能够减少编码冗余,还能减少象素间冗余
• 定义:位平面二值图像,每一Bit作为一个二值图
• 问题:像素点灰度的微小变化对位平面的复杂度影响很大
– 127(011111112)128(100000002)
• 改进为格雷码
gi=ai⊕ai+1 0≤i≤m-2ai i=m-1
-127(010000002)128(110000002)
• 图像位平面分解及意义
• 将图象分成全黑,全白或混合的m × n尺寸块
• 出现频率最高的类赋予1 bit码字0
• 其它2类分别赋予2 bit码字10和11
• 对于混合块,初始码字为前缀,后接混合模式编码
• 压缩:原需用mn比特表示的常数块现在只用1 bit或2 bit码字表示
• 设每行均由白色(0)游程开始
• 对第2位平面(最高位):
– 4 2 2,3 3 2,3 4 1,4 2 2
• 对第1位平面(中间位):
– 8,3 1 4,1 1 1 2 2 1,0 6 2
• 对第0位平面(最低位):
– 0 1 7,0 1 2 1 4,0 1 2 1 1 1 1 1,8
– 图像信息存在象素间冗余
– 象素间的相关性使得预测成为可能
– 仅提取每个象素中的新信息并对它们编码可以减少编码长度
– 根据预测过程是否造成信息丢失,可分为
• 无损预测编码
• 有损预测编码
• 输入序列: fn (n = 1, 2, … )
• 预测输出: f ˆ n
• 预测误差:en = fn − f ˆ n
• 误差编码:在符号编码器中用变长码编误差
• 解压序列:fn = en + f ˆ n – en为解码接收项,f ˆ n为根据已有结果可计算项
• 哪里取得了压缩?(消除了象素间冗余)
• 使得均方误差最小的系数确定方法
– 但一组系数只是在特定图像意义上面的解,适应性不强
• 一个简化的预测方法
fx,y=12fx,y-1+14fx-1,y+18fx-1.y-1+18f(x-1,y+1)
• 输入序列: fn (n = 1, 2, … )
• 预测与误差:en = fn − f ˆ n
• 误差量化并编码:e * n = q(en ) – 量化后的误差可以按照级别编码,码长很短
• 解压序列:f* n = e* n + f ˆ n – e* n为解码接收项,f ˆ n为根据已有结果可计算项
• 编码误差: fn - f* n
• 哪里取得了压缩?(量化,减少了心理视觉冗余)
• 最优的预测应该使得误差最小
– 通过求极小值方式求解
• 对于线性预测,系数的求解可以更加简单
– 在误差最小时
– 求各个系数a的极小值
– 可以构造预测器
• 这种算法称为差值脉冲码调制法(DPCM)
• 4阶线性预测器
fx,y=a1fx,y-1+a2fx-1,y+a3fx-1.y-1+a4f(x-1,y+1)
• 系数的意义
– a1水平相关;a2垂直相关;a3、a4对角相关
• 几种预测方式
– 水平相关预测
fx,y=fx,y-1
– 十字相关预测
fx,y=0.5fx,y-1+0.5fx-1,y
– 半角相关预测
fx,y=0.4fx,y-1+0.4fx-1,y+0.2fx-1.y-1
– 四邻相关预测
fx,y=a1fx,y-1+a2fx-1,y+a3fx-1.y-1+a4f(x-1,y+1)
• 自适应预测
– 根据目标的局部方向性,调整预测公式,以达到保边缘效果
– 若水平方向灰度相似性大,有水平边界,宜用水平相关预测
• 关于系数的约束条件:系数之和小于等于1
• 对数据量化,可以减少编码复杂度,降低码长
• 预测编码,编码对象是预测误差
– 量化层次少,码字短,编码效率高,误差大
– 量化层次多,误差小,码字长,编码效率低
• 对预测误差量化,量化器应是奇函数
• 优化量化方式
– 可结合数据统计特征
– 可结合视觉特征
• si 、ti 分别为量化器的对应输入和输出
• P(si )为si 出现的概率,总的量化误差为: si-1si(s-ti)p(s)ds
• 求解误差最小的优化结果
• L级劳埃德-马克斯量化器表达式
– 在P(si )符合单位方差的拉普拉斯分布时,量化器如下
• 在误差方差不为1,需要用上述数据乘以标准差
• 拉普拉斯分布
3. 算法性能的比较
– 5.3算法的性能比较
• 采用不同预测器和量化器的压缩效果
– 采用均方根误差进行比较
• DPCM编码中不同量化器效果
– 采用水平相关预测器
– 量化器级数分别1、3、7
– 变换编码是一种基于空间冗余压缩思想的方法
– 编码中综合使用其他的信息冗余压缩方法
– 解决变换编码问题有以下几个问题要解决
• 变换的选择
• 基于运算效率和数据相关性考虑的子图选择
• 变换域中有用信息的选取原则
• 信息的量化编码
– 构造子图像-图像分解
• 减少变换的计算复杂度,子图之间尽可能少的图像相关
– 图象变换:
• 解除每个子图象内部象素之间的相关性,或者说将尽可能多的信息集中到尽可能少的变换系数上
– 量化
• 压缩不是在变换中而是在量化变换系数时取得的
– 一个能把最多的信息集中到最少的系数上去的变换所产生的重建误差最小
– 不同变换的信息集中能力不同
• KLT最优,但计算量非常大(依赖于图象)
• 正弦类变换(如DFT和DCT)较优
• 非正弦类变换(如WHT)实现简单
– 选择子图象进行变换编码的原因
• 能减少变换编码误差和计算复杂度
– 图像跨子图的相关性不多,相关性的集中利于减少误差
– 压缩量和计算复杂度都随子图象尺寸的增加而增加
– 选取子图象的条件
• 相邻子图象之间的相关(冗余)减少到某个可接受的水平;
• 子图象的长和宽都是2的整数次幂
– 最常用的子图象尺寸:8 × 8和16 × 16