视频压缩基本算法与标准
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
视频压缩
视频压缩又称视频编码,所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。
一般的通用数据压缩方案如下图:
压缩就是一个传播的过程,所以在压缩与解压缩之间,没有信号的丢失则称这种压缩就是无损的,相反的就是有损的,都有各自的算法,下面介绍。
无损压缩算法
一 游长编码(Run-Length Coding, RLC )
产生年代:未知。
主要人物:未知。
基本思想:如果我们压缩的信息源中的符号具有这样的连续的性质,即同一个符号常常形成连续的片段出现,那么我们可以对这个符号片段长度进行这样的的编码。
例子:输入:5555557777733322221111111
游长编码为:(5,6)(7,5)(3,3)(2,4)(l ,7)
二 变长编码:
1 香农-凡诺算法
产生年代:未知
主要人物:Shannon 和 Robert Fano
基本思想:对于每个符号出现的频率对符号进行排序,递归的将这些符号分成两部分,每一部分有相近的频率,知道只有一个符号未止。
说明:过程用一颗二叉树完成,它是一种自顶向下的过程,对于此输入5个字符则自然的分成2,3左右两子树,接着就是递归的过程。因为分法不唯一,所以下列输出是一种情况。
例子:输入:HELLO
输出:10 110 0 0 111(左子树标0)
2赫夫曼编码
产生年代:1952年
主演人物:David A.Huffman
基本思想:与香农-凡诺算法的区别在于,赫夫曼编码采用的是一种自下而存储器或网络
输出数据 解码器(解压缩) 编码器 输入数据
上的描述方式,先从符号的频率中选取最小的两个符号,合成一个新的结点,进行等效的代替,然后也是个递归过程。
说明:赫夫曼编码具有唯一的前缀性质和最优性。
例子:对于输入:HELLO 建立的一刻赫夫曼树 扩展:
扩展的赫夫曼编码,这是相对于数据中某个符号的概率较大(接近1.0)时,将几个符号组成组,然后为整个组赋予一个码字。
自适应的赫夫曼编码,这是一个边接收边编码的过程,完全的体现了适应的过程,需要对二叉树进行改变,由接收到的数据去添加进二叉树中,自动生成新的“赫夫曼树”。
三 基于字典的编码(Lempel-Ziv-Welch , LZW )
产生年代:1977年 1978年改进一,1984年改进二
主要人物:Jacob Ziv , Abraham Lempel , Terry Welch
基本思想:该算法利用了一种自适应的基于字典的压缩技术,字典就是给给不同的符号组合进行编码,生成一个个“单词”,自适应就是,单词是接收数据的时候,一个个生成的,字典会慢慢的边长。
例子:先从一个简单的字典开始 原字典单词 新生成的字典单词
我们输入: ABABBABCABABBA 输出:1 2 4 5 2 3 4 6 1
说明:只要待编码的符号序列是字符、字符串、字符、 字符串、字符、等等,编码器就会产生一个新的编码 来表示字符+字符串+字符,并且在解码器还没来得及 产生这个编码的时候马上将其投入使用。
四 算术编码
产生年代:追溯到1948年 20世纪七八十年代发展成熟
主要人物:Shannon Abramson Peter Elias
L: 2 1 O:1
0 0 1 1 H:1 E:1 code string
--------------------
1 A
2 B
3 C
S C output code string A B 1 4 AB B A 2 5 BA A B AB B 4 6 ABB B A BA B 5 7 BAB B C 2 8 BC C A 3 9 CA A B
AB A 4 10 ABA A B AB B ABB A 6 11 ABBA A EOF 1
基本思想:把整个消息看成一个单元。然后经过数字处理,计算出每个符号的频率范围,再由上限及下限产生码字……
( 我没看懂……)
有损压缩算法
一变换编码
1 离散余弦变换(DCT)
DCT 是一种广泛应用的变换编码方式,它能以数据无光的方式解除输入信号之间的相关性。例如对于JPEG和类似的图像压缩算法来说,压缩的第一步需要将图像分割为小块,同时将每个小块进行变换,使之由空域信号变换成为时域信号。这时候就会采用DCT,CT变换能够完整的保留所有8x8像素块的信息,因此反向离散余弦变换(IDCT)也就能够从8x8频域信号矩阵中完整的恢复原始8x8像素矩阵。
扩展:2D DCT, 2D IDCT。
2 Karhunen-Loeve 变换(KLT)
KLT变换是一种可逆的线性变换,它应用了向量表述的统计学原理。KLT变换主要的特征就是能够很好的解除输入的相关性。
二小波编码
这是一种信号的分解方法。它采用一组成为小波的基函数来表示信号,可以在时域和频域都得到很好的分辨率。小波变换有两种:连续小波变换(CWT)和离散小波变换(DWT)。
扩展:二维Haar变换
三小波包
紧接上文,解决小波变换值进行编码,怎样形成流。将采取一种叫做嵌入零树的数据结构。
嵌入式零树小波(EWZ)算法层次树集合划分(SPIHT)算法优化截断嵌入式编码(EBCOT)算法。
具体内容复杂,在这里不做介绍了。
JPEG图像
下面介绍JPEG图像的简单步骤:
1 把RGB转换为YIQ 或 YUV,并且二次采样。
2 对图像块进行DCT变换。(块是图像压缩的一个单位,能使DCT变换加快)。
3 进行量化。量化的目标是减少图像压缩所需要的位数。量化的过程就是将每个DCT系数向诺干预设值进行舍入得过程。这种对系数的编码方法可以通过两