第七章 图像数据压缩
Post on 15-Jan-2016
157 Views
Preview:
DESCRIPTION
TRANSCRIPT
第七章 图像数据压缩 主要内容 7.1 概述 7.2 无损压缩算法 7.3 有损压缩算法 7.4 变换编码 7.5 混合编码 7.6 国际压缩标准简介 7.7 JPEG 压缩算法
7.1 7.1 概述概述 7.1.1 数据压缩编码的重要性 数字图像的数据量非常大 。1) 彩色视频信息 对于画面的分辨率 640*480 的彩色图像,每秒 30 帧,
则一秒钟的数据量为: 640*480*3*30=27.6M 所以播放时,需要 27.6×8 = 221Mbps 的通信回路。 参考数据:宽带网为 512K, 电话线为 56K 。 存储时, 1 张 CD 可存 640M ,则仅可以存放 23 秒的数
据。
7.1 .1 7.1 .1 数据压缩编码的重要数据压缩编码的重要性性
2 )传真数据 如果只传送 2 值图像,以 200dpi 的分
辨率传输,一张 A4 稿纸的内容的数据量为:
1654*2337*1=3888768bit 按目前 14.4K 的电话线传输速率,需要
传送的时间是: 270 秒( 4.5 分)
7.1 .1 7.1 .1 数据压缩编码的重要数据压缩编码的重要性性
两个问题:1 )存储大数据量的图像信息,使存储设备(内存、外
存)的存储容量消耗很快。2 )在网络上传输图像时,由于图像信息的数据量太大了,
本来就已经非常紧张的网络带宽变得更加不堪重负。
如何用软件的手段来解决硬件上的物理极限。
7.1 .2 7.1 .2 数据压缩编码的可能数据压缩编码的可能性性
能进行压缩,是因为图像中存在有各种冗余。1 )数据冗余 数据与信息是不同的概念,数据是信息的载体,
相同的信息可以用不同的数据量来表示。 你的妻子, Helen ,将于明天晚上 6 点零 5 分在上海的虹桥机场接你。 (23*2+10=56 个半角字符 ) 你的妻子将于明天晚上 6 点零 5 分在虹桥机场接你。 (20*2+3=43 个半角字符) Helen 将于明晚 6 点在虹桥接你。 (10*2+7=27 个半角字符)
结论:只要接收端不会产生误解,就可以减少承载信息的数据量。
7.1 .2 7.1 .2 数据压缩编码的可能数据压缩编码的可能性性
描述语言1 )“这是一幅 2*2 的图像,图像的第一个像素是红的,第二个像素是红的,第三个像素是红的,第四个像素是红的”。
2 )“这是一幅 2*2 的图 像,整幅图都是红色的”。
由此我们知道,整理图
像的描述方法可以达到
压缩的目的。
7.1 .2 7.1 .2 数据压缩编码的可能性数据压缩编码的可能性
图像的视觉冗余 (彩色)
R G B24888 22*2*2
242 16,777,216
(248,27,4) (251,32,15) (248,27,4) (248,27,4)
2 )心理视觉冗余
人类视觉分辨率为 26 ,但常用 28 ,就是视觉冗余。
7.1 .2 7.1 .2 数据压缩编码的可能性数据压缩编码的可能性 3 空间冗余(象素间冗余) 例 : 图像中的“ A” 是一个规则物体。光的亮度、
饱和度及颜色都一样,因此,数据 A 有很大的冗余。 4. 结构冗余 图像有非常强的纹理结构。如草席图结构上存在冗
余。 5. 知识冗余 图像的理解与某些基础知识有关。 人脸的图像有同样的结构:嘴的上方有鼻子,鼻子
上方有眼睛,鼻子在中线上……
7.1.3 7.1.3 图像数据压缩方法的分类图像数据压缩方法的分类
分类方法有很多。按压缩过程中信息有无损失可以将数据压缩方法分为两类 :
有失真压缩(熵压缩)
又称有损压缩,这类压缩的压缩过程是不可逆的,无法完全恢复出原图像,信息有一定的丢失。
无失真压缩(冗余压缩、熵编码) 又称为无损压缩,其压缩过程是可逆的,也就是说,从压缩后的图像能够完全恢复出原来的图像,信息没有任何丢失。
7.1.3 7.1.3 图像数据压缩方法的分类图像数据压缩方法的分类 按压缩过程中编码的原理又可以将压缩算法分为 :
7.1.4 7.1.4 衡量数据压缩技术好坏的标准衡量数据压缩技术好坏的标准 三个重要的评价指标:1. 压缩比大。2.实现压缩的算法简单、压缩、解压速度快(实时性要求髙)。
3. 恢复效果要好。到底解压缩后图像的质量如何,采用保真度准则来评价。
7.1.5 7.1.5 保真度准则 保真度准则 保真度准则有两种:客观保真度准则和
主观保真度准则。 1.客观保真度准则 以压缩前后图像的误差来度量。具体可
以用原图像和压缩后图像之间的均方根误差或压缩后图像的均方根信噪比来度量。
7.1.5 7.1.5 保真度准则 保真度准则 1.客观保真度准则
1 )设原图像为 g(x, y) ,压缩后恢复的图像为 f(x,y)( x,y=0,1…N- 1) ,且每个象素均用m bit 表示其灰度,则新旧图像的均方误差为:
相应的均方根误差是 :
1
0
21
02
2 ),(),(1 N
x
N
y
yxgyxfN
e
2eerms
7.1.57.1.5 保真度准则保真度准则 1.客观保真度准则 2 )用压缩图像的均方信噪比:如果把压缩后恢复的图像表示成原图像和噪声的叠加,即 :
),(),(),( yxeyxgyxf
e(x,y) 表示编码压缩后新旧图像之间的误差或编码噪声
1
0
1
0
21
0
1
0
22 ),(),(N
x
N
y
N
x
N
yms yxeyxfSNR
压缩后图像的均方信噪比
相应的均方根信噪比 msrms SNRSNR 2
7.1.57.1.5 保真度准则保真度准则1.客观保真度准则
3 )用 f(x,y) 的峰值平方与均方噪声之比的均方根,来代替均方根信噪比,作为一种客观保真度的量度 。
2
2),(
e
yxfSNR p
p
7.1.57.1.5 保真度准则保真度准则 2. 主观保真度准则
通常,被处理的图像最终是让人进行观察,那么用人的视觉来评价图像的质量更有意义。事实上,具有相同客观保真度的不同图像,在人的视觉中可能引起不同的观察效果。这是因为客观保真度准则是一种统计平均意义下的度量准则,对于图像中的细枝末节它是无法反映出来的。
7.1.57.1.5 保真度准则保真度准则 2. 主观保真度准则
而且人的视觉系统还有许多特殊的性质,例如对光强敏感的对数特性,使得图像暗区的误差比其亮区误差影响更为重要。又如人的视觉系统对灰度突变的特别敏感性,使得发生于图像边缘轮廓附近的误差,比发生于一般背景上的误差对图像质量有着更坏的影响等等。所有这些可能引起视觉明显差异的因素。用客观保真度准则往往是无法表示出来的,因此,根据人的主观感觉来评价图像质量十分必要。
7.1.57.1.5 保真度准则保真度准则 主观保真度准则规定为:(1) 极好 :图像具有极高的质量,和你所想象的一样好。(2)良好 :图像质量高,能供满意的观察,干扰并不令人 讨厌。(3) 通过 :图像具有可以接受的质量,干扰并不令人讨 厌。 (4)勉强 :图像质量低劣,但你还希望改善它 ,干扰有些 令人不愉快。(5)低劣 :图像质量很低劣,但还能观看,干扰确实令人 讨厌。(6) 不能用 :图像差得无法观看。
7.2 7.2 无损压缩算法无损压缩算法 通过改变图像的描述方式,来实现压缩。常
用的有:行程(游长)编码, huffman 编码、 Fano-Shannon 编码、 LZW、预测编码( DPCM )等
一、行程编码 (RLE 编码 ) 基本原理: 在一个逐行存储的图像中,具有相同灰度 (颜
色)值的一些象素组成的序列称为一个行程。将一行中颜色值相同的相邻像素用一个计数值和该颜色值来代替。
举例说明:aaaa bbb cc d eeeee fffffff (共 22*8=176 bits)
4a3b2c1d5e7f (共 12*8=96 bits)
一、行程编码 (RLE 编码 ) 在传真中的应用: 传真件中一般都是白色比较多,而黑色相对比较
少。所以可能常常会出现如下的情况: 600W 3b 100w 12b 4w 3b 200w
因为: 512<600<1024 所以:计数值如果均用 10bit 来表示 10*7=70bit
一、行程编码 (RLE 编码 )
在传真中的应用: 现在我们就希望对其有一个改善。 白色: 10bit ,黑色: 4bit 600w 3b 100w 12b 4w 3b 200w 所需字节数为: 4*10+3*4=52bit 比原来的方式 10*7=70bit 减少了 18bit
一、行程编码 (RLE 编码 )
致命弱点:如果图像中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。
图像文件应用:单纯采用行程编码的压缩算法用得并不多, PCX、 BMP文件算是其中的二种。
行程编码对于仅包含很少几个灰度级的图像,特别是二值图像,比较有效。
二、 Huffman 编码(熵编码) 信源的熵:
它定义了观察到单个信源符号输出时所获得的平均信息量。
如果信源各符号出现的概率 P(Xi) 相等,则熵达到最大。
n
iii xpxpH
12 )(log)(
二、 Huffman 编码(熵编码) 编码的平均码长:
其中 ni 是符号 xi 的长度。
可以证明:编码的平均码长满足以下关系:
(平均码长的下限是信源的熵)
n
iii nxpN
1
)(
NH
二、 Huffman 编码(熵编码)
Huffman 编码是 50年代提出的一种基于统计的无损编码方法,它利用变长的码来使冗余量达到最小。所得到的平均码字长度可以接近信源的熵,因此在变长编码中是最佳的编码方法 。
二、 Huffman 编码(熵编码) 基本原理:
为了达到更大的压缩率,提出了一种方法,就是将在图像中出现频度大的像素值给一个比较短的编码,将出现频度小的像数值给一个比较长的编码,每个数据的代码各不相同。
二、 Huffman 编码(熵编码) 举例说明: aaaa bbb cc d eeeee fffffff (共 22*8=176 bits) 4 3 2 1 5 7 编码: f=0 e=10 a=110 b=1111 c=11100 d=11101 1101101101101111111111111110011100111011
0101010100000000
(共 7*1+5*2+4*3+3*4+2*5+1*5=57 bits)
问题:怎样给每个数据分配唯一的编码,并使平均码长最短?
二、 Huffman 编码(熵编码)
通过一个二叉树来编码,使常出现的字符用较短的码代表,不常出现的字符用较长的码代表。静态 Huffman 编码使用一棵依据字符出现的概率事先生成好的编码树进行编码。而动态 Huffman 编码需要在编码的过程中建立编码树。
二、 Huffman 编码(熵编码) Huffman 算法的基本步骤1. 对 L 个符号按其概率值 P 从大到小顺序排列,
并将每个符号作为一棵树的叶结点 2. 如果没有到根结点,则 1 )两个概率值最小
的结点合并成一个新结点并赋其概率为两子结点概率之和。 2 )结点到两个子结点的树枝分别赋值 1和 0
3. 从根结点开始到叶结点,将树枝上的值按顺序组成二进制值,则为该叶结点上符号的 Huffman 码字。
二、 Huffman 编码(熵编码)
c
b
a
f
e
7/22
5/22
4/22
2/22
1
0
f=11 e=01 a=00 b=101 c=1001 d=1000d 1/22
3/22
6/22
22/22
13/22
9/22
3/22
1
0
1
0
1
01
0
二、 Huffman 编码(熵编码) aaaa bbb cc d eeeee fffffff (共 22*8=176 bits) 4 3 2 1 5 7经过 Huffman 编码之后的数据为: 000000001011011011001100110000101010101111111
11111111 (共 7*2+5*2+4*2+3*3+2*4+1*4=53 bits)
熵:
平均码长:
)(3.2)22
7(log
22
7)
22
5(log
22
5
)22
1(log
22
1)
22
2(log
22
2)
22
3(log
22
3)
22
4(log
22
4
22
2222
bit
H
)(4.2222
72
22
54
22
14
22
23
22
32
22
4bitN
二、 Huffman 编码(熵编码) Huffman 编码在图像压缩中的实现
我们知道,对一幅图像进行编码时,如果图像的大小大于 256 时,这幅图像的不同的码字就有可能是很大,例如极限为 256 个不同的码字。
对整幅图直接进行 Huffman 编码时,小分布的灰度值,就有可能具有很长的编码。
如: 100位以上,这样不但达不到压缩的效果反而会使数据量加大,应该如何处理?
二、 Huffman 编码(熵编码) 常用的且有效的方法是:
将图像分割成若干的小块,对每块进行独立的 Huffman 编码。例如:分成 的子块,就可以大大降低不同灰度值的个数(最多是 64而不是 256 )。
这种编码方法形成的码字是可辨别的,即一个码字不能成为另一码字的前缀。
Huffman 编码对不同的信源其编码效率不同,适合于对概率分布不均匀的信源编码。
88
三、 Fano- Shannon 编码
Huffman 编码需要多次排序,当 Xi很多时十分不便。
Fano- Shannon 编码更简单。
三、 Fano- Shannon 编码
1 )排序:把 X1~ Xn 按概率大小从大到小排序。
2 )分组:然后分为两组: X1~ Xk 、 Xk+ 1~ Xn 使:
3 )赋值:给两组分别赋予 0和 1 。4 )重复 2 )、 3 )直到每组仅包含一个 Xi。
n
kii
k
ii xpxp
11
)()(
三、 Fano- Shannon 编码
输入 概率X1 0.4 0
X2 0.3
1
0
X3 0.1
1
00
X4 0.1 1
X5 0.061
0
X6 0.04 1
编码0
10
1100
1101
1110
1111
H=2.14 、 N= 2.2 近熵编码
四、算术编码 理论上 Huffman 编码对信源进行编码可以达到最佳编码效果。但计
算机是按“位”进行处理。
例如:设信源由两个符号组成 x 、y ,概率分别为 2/3和 1/3 。最优码长:
计算机中不可能出现 0.585位,只能用 1位。 Huffman 编码结果分别为 0和 1 。对于概率较大的 X不能用较短的编码来表示。这是实际编码效果达不到理论压缩比的原因。
bitxH 585.0)3/2(log)( 2
bityH 58.1)3/1(log)( 2
四、算术编码
算术编码不用一个特定的代码代替一个输
入符号。
将要处理的数据映射到 [0,1) 内的一个区
间,构造出小于 1且大于或等于 0 的数值,
这个值就是这段数据的可译代码。
四、算术编码
例如: 5 符号信源 {a1a2a3a4a5} ,各字符出现的概率和
设定的取值范围如下:
字符 概率 范围a3 0.2 [0.0 , 0.2)a1 0.2 [0.2 , 0.4)a2 0.4 [0.4 , 0.8)a4 0.2 [0.8 , 1.0)
四、算术编码
“范围”给出了字符的赋值区间 , 这个区间根据字符的
概率进行划分(具体把 a1 、a2 、a3 、a4 、a5分到哪个区间
对编码本身没有影响,只要保证编解码器对字符的概率
区间有相同定义即可)。
四、算术编码 假定:
Ns=Fs+Cl*L
Ne=Fs+Cr*L
式中: Ns为新子区间的起始位置; Fs为前子区间的起始位置; Cl
当前符号的区间左端; Ne为新子区间的结束位置; Fe为前子区间的
结束位置; Cr当前符号的区间右端; L 为前子区间的长度。
四、算术编码 假定输入序列为a1、a2、a3、a2、a4
输入a2时:Ns=Fs+Cl*L=0.2+0.4*0.2=0.28
Ne=Fs+Cr*L=0.2+0.8*0.2=0.36
输入序列 区间长度 范围a1 0.2 [0.2 , 0.4)a2 0.08 [0.28 , 0.36)a3 0.016 [0.28 , 0.296)
a2 0.0064[0.2864 , 0.292
8)
a4 0.00128[0.2915 , 0.292
8)
四、算术编码 随着字符的输入,范围越来越小。当序列 a1 、a2 、a3 、a2 、
a4输入完毕后,编码范围为 [0.2915 , 0.2928) 。换句话说,这范围内的每一个数值都对应这个序列。可取任意一个值比如: 0.2915即可。
解码过程相反,根据概率分配区间表和 0.2915 可以确定第一个字符为 a1,去掉第一个字符的影响,就可以得到第二个字符。
这种方法用一个浮点数表示了一个序列。
五、 lzw压缩编码 LZW编码是由 Lemple和 Ziv提出并经 Welch扩充而形成
的无损压缩专利技术。在对文件进行编码时,需要生成特定字符序列的表(词典)以及对应的代码。每当表中没有的字符串出现时,就把它与其代码一道存储起来。这以后当该串再次出现时,只存储其代码。实际上,字符串表是在压缩过程中动态生成的,而且由于解压缩算法可以从压缩文件中重构字符串表,因而字符串表也不必存储。
词典的大小一般小于 4095. 因为词典越大表示一个索引所需的字节数越多,有可能会造成反压缩现象。
六、无损预测编码 基本思想: 提取每个象素中的新信息并对它们编码来消除象素
间的冗余。这里 1 个象素的新信息定义为该象素的当前或现实值与预测值的差。注意这里正是由于象素间有相关性,所以才使预测成为可能。
六、无损预测编码 无损预测编码系统的组成
1 个编码器和 1 个解码器,它们各有 1 个相同的预测器 。
符号编码器采用变长码对误差进行编码以产生压缩的数据nnn ffe ˆ
六、无损预测编码 可以提高数据压缩率。主要原因: 误差值与原象素值相比小的多 ,且概率密度函数一般在 0点有一个高峰。
因此,对误差编码所需要的位数比原来少,压缩率可以进一步提高。
解码器根据接收到的变长码重建,并执行下列 操作,恢复原图像。
nnn fef ˆ
六、无损预测编码 问题:预测器如何设计?即:如何计算 一般用前 m 个象素(上一行、前一列等)的线性
组合来进行预测:
nf̂
m
iinin faroundf
1
)(ˆ
m 是线性预测器的阶, 是预测系数, round 是舍入函数 。 n 表示的是象素的空间坐标。
ia
六、无损预测编码 1-D 线性预测 :
2-D 线性预测 :
是图像从左到右,从上到下进行扫描时所扫描到的先前 m 个象素的函数。
m
iin iyxfaroundyxf
1
)),((),(̂
m
iinin faroundf
1
)(ˆ
六、无损预测编码举例 最简单的 1-D 线性预测器 :前值预测器
对应的编码方法称为 差分编码或前值编码 最简单的 2-D 线性预测器 :
1),ˆ1 nn fyxf(
1,)1,(),1(),ˆ2121 yxfyxfyxfn(
7.3 7.3 有有损压缩算法损压缩算法 行程编码、 Huffman 编码等无损压缩方式
的设计思想是基于对信息的表述方法的改变,可以在一定程度上压缩数据量,但是一定有一个极限。
为进一步提高压缩比,可以根据人眼的视觉特性,通过消除视觉冗余,在接收方不产生误解的前提下进行一定的信息丢失,来实现压缩。
一、 量化
将图像用较少的灰度级别来表示。这是一种最简单的减小数据量的方法。量化又可以分为:均匀量化和非均匀量化
1 、均匀 量化 采用相等的量化间隔对采样得到的信号作量化。均匀量化就是采用相同的“等分尺”来度量采样得到的幅度,也称为线性量化,如图所示。量化后的样本值 Y和原始值 X的差E=Y-X 称为量化误差或量化噪声。
1 、均匀 量化
用这种方法量化输入信号时,无论对大的输入信号还是小的输入信号一律都采用相同的量化间隔。为了适应幅度大的输入信号,同时又要满足精度要求,就需要增加样本的位数。为了用尽可能少的位数,得到尽可能髙的量化质量,通常采用非均匀量化的方法,这种方法也叫做非线性量化。
2 、非均匀 量化 非均匀量化的基本想法
是,对输入信号进行量化时,不同的输入信号采用不同的量化间隔。如图所示,这样就可以在满足精度要求的情况下用较少的位数来表示。
二、有损预测编码 基本思想: 在无损预测编码的基础上加了一个量化器,通过对预测误差进行量化,进一步压缩数据量。
二、有损预测编码 有损预测编码系统的组成
量化器位于预测误差和符号编码器之间,取代无损编码器中的整数舍入模块,将预测误差映射到有限个输出 中, 的多少、大小就确定了有损预测编码中的压缩量和失真量
ne ne
二、有损预测编码 预测器取最简单的预测器 ,即
取作两级,即:
可以构成所谓的 Delta调制编码( DM )。由 DM 方法得到的码率是: 1bit/象素。《图像处理和分析(章毓晋)》 p160页给出了 DM 编码的一个例子。
1),ˆ1 nn fyxf(
ne是一个正整数
其它+
= ce
c
ce nn
0
二、有损预测编码问题 斜率过载现象:在图像变化比较剧烈时, DM 编码可
能产生斜率过载现象,预测值总小于实际值,输出跟不上输入的变化,使原陡峭的边沿轮廓变为平滑的轮廓。使图像边缘轮廓变模糊或者产生纹理。
边沿忙乱:在电视图像的 DPCM 中会出现这种情况。因为不同帧在同一象元位置上的量化噪声可不同,因此边沿呈现闪烁或跳动。
二、有损预测编码问题 颗粒噪声:在图像灰度变化平缓的区域,恢复的图像会
呈现“颗粒噪声”。这是因为灰度变化平缓,量化器的输出总是在小输出电平附近来回摆动,而视觉系统对这些区域的噪声特别敏感。
伪轮廓:如通常的量化一样,量化间隔太大,对于缓慢变化的边缘就会产生等高线一样的图形,叠加在图像上形成轮廓噪声。
以上四种噪声的解决办法:采用自适应量化,即量化间隔随信号变化的陡、缓而自己调节。
7.4 变换编码1 .变换编码系统 前述编码都是对象素直接在空域实现的。压缩比一般较小。变换编码
的基本思路:用可逆线性变换将图像映射成一组变换系数,然后将系数量化和编码。一个典型的变换编码系统框图如下:
正变换 量化 编码 压缩图像
符号解码 反变换 合并子图像压缩图像 还原图像
7.4 变换编码1 .变换编码系统 一般采用正交变换,正交变换具有去相关和能量集中特性,
因此经过正交变换之后,可以解除图像内部图像的相关性或将尽可能多的信息集中到尽可能少的变换系数上,此后进行量化时,对携带信息较多的变换系数,采用较小的间隔进行量化,而对携带信息较少的变化系数,进行粗量化甚至完全忽略。变换本身并不能压缩数据,压缩是在量化变换系数时取得的。
7.4 变换编码2 .变换的选择 许多图像变换都可用于变换编码。但针对给定的编码应用,
如何选择变换取决于可允许的重建误差和计算要求。变换具有将能量或信息集中于某些变换系数的能力。通常一个能把最多的信息集中到最少系数上去的变换所产生的重建误差最小。 DCT比 DFT有更强的能量集中能力。理论上,KLT是所有变换中信息集中能力最强的变换。从信息集中能力和计算复杂性综合考虑, DCT变换最优。
7.4 变换编码3 .子图像尺寸选择 子图像大小也是影响变换编码误差和计算复杂度的一个重要因素。在多数情况下,子图像大小应满足如下两个条件:相邻子图像之间的相关较少到某个可接受的水平;子图像的长和宽都是 2的整数次幂(简化计算)。一般压缩量与计算复杂度都随子图像大小的增加而增加。最常用的子图像大小为: 8×8 16×16
变换编码重建误差与子图像之间的关系,见《图像处理和分析(章毓晋)》 P169页图 6.5.2
7.4 变换编码4 . 比特分配 对变换系数如何处理(考虑丢掉那些变换系数、如何量化和编码等)。
在多数变换编码中,保留的系数根据如下两种原则之一来选择确定:最大方差准则,称为分区编码; 最大幅度准则,称为阈值编码。对整个子图像的系数截断、量化和编码的全过程称为比特分配。
7.4 变换编码 分区编码 基础是信息论中的不确定性原理。具有最大方差
的变换系数带有最多的图像信息,它们应当保留在编码过程中。
分区编码对所有子图像采用同一模板, 1 表示保留的系数、 0 表示去掉的系数。
7.4 变换编码 分区编码
1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
对分区采样后保留的系数进行量化、编码。这样,分区模块中的每个象素可以用对每个系数编码所需的比特数表示。
7.4 变换编码 分区编码 一般有两种分配策略:1 )各系数分配相同的比特 2 )给不同的系数分别分 配几种固定数量的比特 (右图)。
8 7 6 5 0 0 0 0
7 6 5 0 0 0 0 0
6 5 0 0 0 0 0 0
5 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
7.4 变换编码
分区编码
优点:( 1 )压缩比高 ( 2 )视觉感觉好 缺点: 计算复杂。
7.4 变换编码 阈值编码 分区编码所有子图像使用一个固定的模板。而阈值编
码本质上是自适应的,可以做到为各个子图像保留的变换系数随子图像的不同而不同,因此是一种自适应变换编码方法。
在编码时,通常给出一个阈值模板,利用模板中的阈
值对图像变换系数进行量化。
7.4 变换编码 取阈值模板处理后结果 Z 字形编码
用 Z 字形扫描得到 n×n 的 1-D 序列,用游长编码
1 1 0 1 0 0 0 0
1 1 1 0 0 0 0 0
1 0 1 0 0 0 0 0
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 5 6 14
15
27
28
2 4 7 13
16
26
29
42
3 8 12
17
25
30
41
43
9 11
18
24
31
40
44
53
10
19
23
32
39
45
52
54
20
22
33
38
46
51
55
60
21
34
37
47
50
56
59
61
35
36
48
49
57
58
62
63
7.4 变换编码 对变换子图像取阈值的方法有三种:
1. 所有子图像用一个全局阈值 2.各个子图像分别用不同的阈值 3.根据子图像中各个系数的位置选取阈值。
7.5 混合编码
混合编码实现的可能性及有效性:
回顾一下讲过的几个内容的特点
1. 行程编码:擅长于重复数字的压缩。
2. Huffman 编码:擅长于像素个数不同的编码。
3. 变换编码:擅长将高频部分分离出来。
7.5 混合编码 例: aaaa bbb cc d eeeee fffffff (共 22×8=176 bits) 4 3 2 1 5 7 行程编码: 4a3b2c1d5e7f (共 6× ( 3+ 8 ) = 66Bits )
176 66
7.5 混合编码
aaaa bbb cc d eeeee fffffff (共 22*8=176 bits) 4 3 2 1 5 7
Huffman 编码: f=11 e=01 a=00 b=101 c=1001 d=1000
0000000000101101101100110011000010101010111111111111111
(共 7*2+5*2+4*2+3*3+2*4+1*4=53 bits)
176 66 53
7.5 混合编码aaaa bbb cc d eeeee fffffff (共 22*8=176 bits) 4 3 2 1 5 7
Hufman 与行程编码混合:
40031012100111000501711
(共: 3+2+3+3+3+4+3+4+3+2+3+2=35 bits)
176 66 53 35
7.6 国际标准简介 一、二值图像压缩标准1.G3和 G4码 CCITT的两个小组负责指定的。 G3 码:自适应、 1- D游长编码技术,或者每组N行( N
= 2 、 4)扫描线中的后N-1 行用 2-D游长编码。 13:1 G4 码: G3 码的简化版,只使用 2-D 编码。 26:1
2. JBIG 1991年由 G3 、 G4组联合制定的。 采用了一种自适应技术提高对半调灰度图像的压缩比。
7.6 国际标准简介 二、静止图像压缩标准
1.JPEG压缩编码标准算法 2. JPEG2000 2000年推出的,利用小波变换的一种变换编码
方法。
7.6 国际标准简介 三、序列图像压缩标准 ● H.261 ● H.263 ● MPEG - I ● MPEG - II ● MPEG4 ● MPEG7
7.7 JPEG 压缩算法 一、算法概要
7.7 JPEG 压缩算法
JPEG 算法与彩色空间无关,因此“ RGB到 YUV变换”和“ YUV到 RGB变换”不包含在 JPEG 算法中。 JPEG 算法处理的彩色图像是单独的彩色分量图像,因此它可以压缩来自不同彩色空间的数据,如 RGB, YCbCr和 CMYK 。
7.7 JPEG 压缩算法 二、 JPEG 算法的主要计算步骤
1 、图像分块。2 、 FDCT变换。3 、量化 (quantization) 。4 、 Z字形扫描 (zigzag scan) 。
7.7 JPEG 压缩算法 二、 JPEG 算法的主要计算步骤
5 、使用差分脉冲编码调制 DPCM(differential pulse code modulation) 对直流系数 (DC) 进行编码。
6 、使用行程长度编码 RLE(run-length encoding) 对交流系数 (AC) 进行编码。
7 、熵编码 (entropy coding) 。8 、组成位数据流
7.7 JPEG 压缩算法 1 、图像分块。对每个单独的彩色图像分量,把整
个分量图像分成 8×8 的图像块。 2 、 FDCT 变换。 将每个 8×8 的图像块作为二维离散余弦变换 DCT的输入。通过 DCT变换,把能量集中在少数几个系数上。
7.7 JPEG 压缩算法 3 、量化 (quantization) 目的:对经过 FDCT变换后的频率系数进行量化 ,减小
非“ 0”系数的幅度以及增加“ 0” 值系数的数目。量化是图像质量下降的最主要原因。
对于有损压缩算法, JPEG 算法使用均匀量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。由于人眼对亮度信号比对色差信号更敏感,因此 JPEG 使用了两种量化表:
7.7 JPEG 压缩算法 3 、量化 (quantization) 表 1 色度量化值( U 、 V ) 表 2 亮度量化值( Y )
]),(
),([),(
vuQ
vuFvuFq
7.7 JPEG 压缩算法 4 、 Z 字形扫描 (zigzag scan) 。目的:是为了增加连续的“ 0” 系数的个数,就是
“ 0” 的游程长度。 把一个 8 8 的矩阵变成一个1 64 的矢量,频率较低的系数放在矢量的顶部。
7.7 JPEG 压缩算法 5 、直流系数的编码 8 8 图像块经过 DCT变换之后得到的 DC直流系数有
两个特点 :一是系数的数值比较大,二是相邻 8 8 图像块的 DC系数值变化不大。根据这个特点, JPEG算法使用了差分脉冲调制编码 DCPM(differential pulse code modulation)技术,对相邻图像块之间量化DC系数的差值 (Delta) 进行编码,
Delta= DC(0, 0)k-DC(0, 0)k-1 ........
7.7 JPEG 压缩算法 6 、交流系数的编码 量化 AC系数的特点是 1×64 “矢量中包含有许多 0”
“系数,并且许多 0”是连续的,因此使用非常简单和直观的游程长度编码 RLE(run length encode)对它们进行编码。
7.7 JPEG 压缩算法 6 、交流系数的编码 JPEG使用了 1个字节的高 4 “位来表示连续 0”的个数,而使用它的低 4 “位来表示编码下一个非 0”系数所需要的位数,跟在它后面的是量化 AC系数的数值。
Bits 7 6 5 4 3 2 1 0 后续数 连续 0 的个数 非 0 数 bit 数 非 0系数值
( 0~15 个) ( 0~15 位)
7.7 JPEG 压缩算法 7 、熵编码 目的:对 DCPM 编码后的直流 DC系数和RLE 编码后的交流 AC系数作进一步的压缩。
在 JPEG 有损压缩算法中,使用哈夫曼编码器来减少熵。使用哈夫曼编码器的理由是可以使用很简单的查表 (lookup table) 方法进行编码。
7.7JPEG 压缩算法 8 、组成位数据流 JPEG 编码的最后一个步骤是把各种标记代码和编码后
的图像数据组成一帧一帧的数据,这样做的目的是为了便于传输、存储和译码器进行译码,这样的组织的
数据通常称为 JPEG位数据流 (JPEG bitstream) 。
JPEG 压缩编码示例
原图 JPEG 100 :1
400:1 600:1
作业
P176 6.3 P177 6.7 6.8 6.9 (1)(2) 6.10 JPEG 算法是有损压缩算法,请回答:① JPEG 编码有哪几个计算步骤?② 在所列出的计算步骤中,哪些计算是有损的?哪些计算是无损的?
top related