相关索引:https://blog.csdn.net/knowledgebao/article/details/84776869
编解码大概流程图(上边是编码,下边是解码):
1,编码过程:
- Motion Estimate(运动估计,运动搜索): 从前几帧中寻找匹配的宏块,有多种不同的搜索算法,比如: “Dia”、“HEX”、“UMH”、“ESA” 编码获得的质量依次提高,速度依次降低。其中快速算法(“Dia”、“HEX”、“UMH”)的编码质量比全搜索算法(“ESA”)低不了太多,但是速度却高了很多倍。得到运动矢量的过程被称为运动估计。
- Motion Compenstate(运动补偿): 运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它是减少帧序列冗余信息的有效方法。包括全局运动补偿和分块运动补偿两类。运动补偿结果分为二份,一个给到当前帧做参考求出差值Dn;另一个用于生成Fn的对应参考帧。
- DCT(离散余弦变换):DCT变换的全称是离散余弦变换(Discrete Cosine Transform),主要用于将数据或图像的压缩,能够将空域的信号转换到频域上,具有良好的去相关性的性能。图像经过DCT变换后,其频率系数的主要成分集中于比较小的范围,且主要位于低频部分。 DCT变换本身是无损的,但是在图像编码等领域给接下来的量化、哈弗曼编码等创造了很好的条件,同时,由于DCT变换时对称的,所以,我们可以在量化编码后利用DCT反变换,在接收端恢复原始的图像信息。DCT是从DFT(离散傅里叶变换)推导出来的另一种变换,因此许多DFT的属性在DCT中仍然是保留下来的。
- Quant(量化):除指定的数值(有损压缩)。量化的结果分为2分,一个做进一步处理,一份经过反量化(Rescale)/反DCT(IDCT)变化,结合第2步的运动补偿生成Fn对应的参考帧,供后续参考。
- Reorder(重排):比如游程编码等。
- Entropy encode(熵编码):进行最后编码,使用第5步结果以及Vectors和Headers的内容。
- Rescale(反量化):乘指定的比例。
- IDCT(反DCT):反DCT变换,得到D'n。
- reconstructed(重构):结合运动补偿和反量化结果,重构F'n参考帧。
2,解码过程
- Entropy decode(熵解码):对数据进行熵解码,填充Vectors和headers。
- Reorder(重排):比如游程解码等。
- Rescale(反量化):乘指定的比例。(参考编码过程)
- IDCT(反离散余弦变换):反DCT变换,得到D'n。(参考编码过程)
- Motion Compenstate(运动补偿): 上一帧的参考帧做运动补偿处理。(参考编码过程)
- reconstructed(重构):结合第5步的运动补偿结果和第4步的反量化结果,重构F'n参考帧。(参考编码过程)
参考资料:
- 直播技术——视频编解码(理论基础)
- YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)
- DCT变换、DCT反变换、分块DCT变换
- 运动补偿和运动估计
- 编解码框架
- 变换,量化与熵编码
- 视频处理及编码标准
- 差错控制
有任何问题可以联系:knowlegebao@163.com