标签:相等 相对 parent 背景 end 去除 操作 音视频 i++
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/60480109
音视频压缩技术是编解码中难点,常常会涉及很多算法处理问题。数据封装,转封装等,看下Agenda:
未经压缩的数字视频的数据量巨大
压缩编码的重要性:
预测:
空间预测:利用图像空间相邻像素的相关性来预测的方法
时间预测:利用时间上相邻图像的相关性来预测的方法
帧间预测编码:
帧内预测编码:
变换:
变换编码也是去除冗余的一种最基本的编码方法。不同的是变换编码首先要把压缩的数据变换到某个变换域中(如频域),然后再进行编码。变化域中表现为能量集中在某个区域,可以利用这一特点在不同区域间有效地分配量化比特数,或者去掉那些能量很小的区域,从而达到数据压缩的目的。例如声音信号,从时域变换到频域以后,可以清楚的看到能量集中在哪些频率范围内,从而根据频率范围分布有效地分配不同的量化位数。
量化:
量化操作实质上是将连续的模拟信号采样得到的瞬时幅度值映射成离散的数字信号,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。
量化位数:量化位数是每个采样点能够表示的数据范围,常用的有8位、12位和16位。
量化过程是,先将整个幅值划分为有限个小幅度(量化阶距)的集合,把落入某个阶距内的样值归为一类,并赋予相同的量化值,如图所示,其中虚线箭头表示采样值量化后的电平值。
均匀量化
非均匀量化
熵编码:
为了进一步压缩数据,对DPCM编码后的直流系数DC和RLE编码后的交流系数AC采用熵编码。在JPEG有损压缩算法中,使用哈夫曼编码器的理由是可以使用很简单的查表方法进行编码。压缩数据符号时,哈夫曼编码器对出现频率比较高的符号分配比较短的代码,而对出现频率低的符号分配比较长的代码。这种可变长度的哈夫曼编码表可以事先进行定义。为了实现正确解码,发送端和接收端必须采用相同的哈夫曼编码表。
采用哈夫曼编码时有两个问题值得注意:
哈夫曼编码是可变长度码,因此很难随意查找或调用压缩文件中的内容,然后再译码,这就需要在存储代码之前加以考虑。尽管如此,哈夫曼编码还是得到了广泛的应用。
该算法基于一种称为编码树的技术,其步骤如下:
(1)将待编码的N个信源符号按照出现的概率由大到小 排列,给排在最后的两个符号各分配一位二进制码元,对其中概率大的符号分配0,概率小的符号分配1(反之亦可)。
(2)把概率最小的两个符号概率相加,求出的和作为一个新符号的概率,将新的概率值与剩下的N-2个概率值一起重新进行排序,再重复步骤(1)的编码过程。
(3)重复步骤(2)直到只剩一个概率值为止,其值为1。
(4)分配码字,对于各种信源符号,基于步骤(1)分配的数字,从编码树的根部开始回溯读出,并将它作为该符号对应分配的码字。
例 设有离散无记忆信源,符号a1、a2、a3、a4、a5、a6的出现概率分别为0.12、0.08、0.4、0.1、0.25、0.05,其哈夫曼编码过程如下:
编解码总体情况:
第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。
标签:相等 相对 parent 背景 end 去除 操作 音视频 i++
原文地址:http://blog.csdn.net/hejjunlin/article/details/60480109