JM86中帧内帧间模式的选择(1)
来源:互联网 发布:双程2网络剧百度云盘 编辑:程序博客网 时间:2024/06/05 04:54
在JM8.6中帧内与帧间模式的选择是其中非常重要的一部分, 模式选择的过程其实涵盖了H.264编码中的大部分内容. 从代码看来, 这一部分其实和码率控制中的代价函数计算是重叠在一起的, 在进行代价函数的计算过程中也就实现了模式的选择, 代价计算完毕, 最优模式也就选择完毕。
帧内编码主要用于以下几种情况:
(1)整个视频序列的第一帧。由于整个视频序列的第一帧前没有任何可以供参考的帧作为参考帧,所以第一帧必须采用帧内编码模式。第一帧又成为IDR帧。
(2)I帧。H.264标准规定I帧不参考其他帧的信息进行独立编码,因此I帧也必须采用帧内编码模式,但是一般情况下,I帧的比例在视频序列中所占的比例很小。
(3)P帧和B帧中的部分宏块。因为在现有视频编码标准中,视频序列都是以宏块(16*16)为基本单位进行编码操作的。对于P帧和B帧中的所有宏块都要遍历帧内编码和帧间编码两种方式,通过率失真代价函数来计算两种编码方式的代价,从中选择代价比较小的模式作为最优模式,如果帧内编码方式代价小于帧间编码方式的代价,则该宏块选择帧内编码方式。原因如下,视频序列运动较为剧烈,在参考帧中难以找到合适的目标宏块与当前帧中的当前宏块相匹配,从而导致帧间编码方式代价过高。另外一方面,当前帧是场景切换后的第一帧时,由于失去了时间上的连贯性,难以找到参考帧,即使为P帧或者I帧也需要采用帧内编码模式。
(4)差错恢复。当解码一个采用帧间编码的宏块时,需要得到当前宏块的参考块信息。如果由于信道丢包率或者其他原因导致差错时,在解码端得不到参考块信息或者得到是错误的信息,就不能采用帧间编码方式正确解码当前宏块,此种情况下,可以采用帧内编码方式进行差错恢复。
在H.264帧内编码中,每个宏块亮度信号都要完成9种4*4预测模式和4种16*16预测模式,然后通过预测模式选择,得到一种最佳预测模式使得编码效率和性能最高,H.264的模式选择一般有两种:
(1)率失真优化方法:对于帧内帧间每一种预测方式都要进行预测、整数变换、量化和变长编码,并进行反量化和反变换,再比较各种模式的编码码率和重建图像质量,选择最佳的一种。
(2)计算COST值。计算方法如下:
(a)根据一种预测模式构造出4*4的预测块。
(b)计算当前块与预测块之间的绝对误差和SAD。
(c)计算COST=SAD+4Rλ(QP)
- JM86中帧内帧间模式的选择(1)
- JM86 中 POC 的计算方法
- 关于jm86中MAX_LIST_SIZE值的选取
- JM86的编码函数调用关系
- H.264(JM86)学习笔记
- 题目: JM8.6中帧内帧间模式的选择
- jm86之get_block() 1/4亮度像素内插详述
- jm86之get_block() 1/4亮度像素内插详述
- H.264(JM86)-序列参数及SPS
- [JM] 如何结合标准看JM代码(JM86)
- 运行jm86
- opengl的选择模式
- OpenGL 的选择模式
- IO模式的选择
- ListView的选择模式
- oem模式的选择
- FileChooser的文件选择模式
- 嵌入式开发模式的选择
- BF and IA vulnerabilities in IBM Lotus Domino
- 黑马程序员_Java网络编程概述
- ActiveMQ 无法启动 提示端口被占用
- hibernate中jcs详解
- 历数那些失败的项目(1)---M...
- JM86中帧内帧间模式的选择(1)
- hdu 1077 Catching Fish 计算几何+暴力枚举
- myeclipse 8.6 安装freemarker插件
- 主题模型及其在文本情感分析中的应用
- 第九周任务-项目一(输出输入流重载)
- xiao
- Missing contentDescription attribute on image
- ACM Steps_Chapter Six_Section2
- Unix实用工具教程:《sed与awk》修订第三版清晰版