H.264中的SPamp;amp;SI帧技术简述
H.264中的SP&SI帧技术简述
1 应用背景(详细可见文献[1,2])
流间切换、随机接入、错误恢复、快进快退、拼接
2 SP/SI帧特点
对于不同的参考图像可以得到完全相同的重建图像(主SP帧与辅SP帧/SI帧的重建图像相同)。
3 SP/SI帧编解码器
3.1 SP/SI帧编/解码器的实现
Figure 1: 流间切换示意图
以下主要针对SP Frame进行相关讨论;
SP帧分两种类型,Primary SP帧和Secondary SP帧,将关键帧位置的图像编码为Primary SP类型,额外编码一帧图像Secondary SP帧,切换时发送;Secondary SP帧来代替原来的Primary SP帧。
H.264标准的JM模型只部分实现了Primary SP帧的编解码,而对SecondarySP帧的编码环境设置和编码算法都没有进行实现,在有关SP帧的提案中,也只描述了切换帧的大概框架。
根据参考文献[1]、[2],我们得到下列的编码原理图:
注意:Lerr = Lrec – LP,残差是无损的,不再被量化,直接熵编码后传输。这便保证了SP/SI帧技术的唯一要求的实现,即同一当前帧参考不同的参考图像的重建图像相同。
解码器部分不再赘述。
3.2 需要用到的函数,变量(基于校验模型JM86)
编码器:
函数:
1 copyblock_sp() : block.c, global.h //具体可见encode_one_macroblock 函数分级图
2 dct_chroma_sp() : block.c, global.h
3 dct_luma_sp() : block.c, global.h
变量:
typedef enum {
P_SLICE = 0,
B_SLICE,
I_SLICE,
SP_SLICE,
SI_SLICE
} SliceType;
int type imageParamters
// SP Pictures InputParameters;
int sp_periodicity; //!< The periodicity of SP-pictures
int qpsp; //!< SP Picture QP for prediction error
int qpsp_pred; //!< SP Picture QP for predicted block
涉及到SP的函数调用关系
1、void main() --à void SetImgType()
2、encode_one_frame() ---àinit_frame() (1025)
img->qp=input->qpsp img->qpsp=input->qpsp_pred
pic_type=img->type
----àswitch(img->type)
Reporttype(tmp_time,me_time)
3、code_a_picture()
4、encode_one_slice()
生成参数集列表
5、encode_one_ macroblock ()( 详见encode_one_macroblock 函数分级图)
可直接操作的仿真实验:
1、 SP的编码效率:在设定不同量化系数的条件下,与I,P帧进行比较;
2、 SP帧在随机访问差错恢复中的应用:周期性插入SP帧;
4 P frame/ SP frame编码器的不足[3]
4.1存在的不足
Figure 2: The current JVT Encoder for P frame and SP frame.
从SP的编码框架中(Figure 1),SP Frame 比一般的P Frame 要对一个对预测块系数的变换模块,以及两个量化模块。SP 帧的编码达不到高效率体现在以下两个方面:
1、在当前的SP Frame 编码器中,有3个量化模块,尤其是量化参数Qs使用了2次,每次量化都会不可避免的降低SP Frame 的编码效率;
2、在编码器,使用的是反量化Lpred作为预测系数,但是在重构端,预测系数却是Kpred。虽然这种不匹配不会造成错误传播,却会引起编码效率下降;
3、环路滤波方面的考虑:除了图像的边缘和环路滤波过程由disable_deblocking_filter禁止的边缘,图像所有4*4块边缘都要进行条件滤波,而滤波强度的计算与参考帧,运动矢量,编码数据都有关系,;由于Primary SP Frame 和Secondary SP Frame在运动矢量、编码数据不一定一致,就会造成强度值不同,使得重构值经过滤波后产生误差,以致达不到的SP Frame 的期望效果。
4.2改进的方向
1) 减少量化系数的个数;
2) 消除预测中的不匹配;
3) 在环路滤波方面进行相应的改进。
4.3 其他
a) 在SP/SI帧技术中,主SP帧是以等间隔插入到码流中去的,而辅SP/SI帧只是在切换时应客户端要求才传输(替代主SP帧),所以主SP帧的性能的码率和计算复杂度对SP/SI帧技术具有决定意义。
b) 处理环节:对两相似图像要处理成相同,主要有时域处理和频域处理两种方法。在上面的处理中,我们引进的时频域处理,这基于以下思想:对于两相似图像,他们的差异主要表现在细节纹理上,即高频部分。通过变换到频域,再进行滤波可以比较有效地去除差异。当然时域上也有许多处理方法,比如进行时域滤波、对两图像相加求平均等等。另外时频结合的小波变换也可以考虑。但此处处理环节对整体分析无重大影响,故不深入讨论。
c) SP/SI帧有很大的应用价值,算法复杂度有优化的空间,值得注意!
参考文献:
[1]. Marta Karczewicz and Ragip Kurceren, Member, IEEE,“The SP- and SI-Frames Design for H.264/AVC”,2003
[2].毕厚杰,“新一代视频压缩编码标准——H.264/AVC”,人民邮电出版社,2005.5.
[3].Xiaoyan Sun, Feng Wu, Shipeng Li, “Improved SP coding technique”, Joint Video Team(JVT) of ISO/IEC MPEG & ITU-T VCEG(ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6)2nd Meeting:Geneva, 2002, JVT-B097.doc
H.264中的SPamp;amp;SI帧技术简述相关推荐
- H.264中IDR帧和I帧区别
IDR(Instantaneous Decoding Refresh)--即时解码刷新. I和IDR帧都是使用帧内预测的.它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I ...
- H.264中帧、片、宏块和NAL的关系
怎么区分H.264视频流的I frame 和 P frame? 我是新手,前些天自己看那H.264规范文档及其他资料寻找答案时, 还有几个概念的关系还没能理解清楚,望达人指点一二: NAL.Slice ...
- H.264 中很有用的一些概念
Q:PSNR 峰值信噪比 是根据它来取qp是不是? A:不是 和QP没有直接关系但是QP的选择会影响到PSNR Q: 如果不用率失真最优化,为什么选择SATD+delta×r(mv,mode)作为模式 ...
- H.264中的一些易混淆概念
Q:PSNR 峰值信噪比 Q:是根据它来取qp是不是? A:不是, 和QP没有直接关系, 但是QP的选择会影响到PSNR Q: 如果不用率失真最优化, 为什么选择SATD+delta×r(mv,mod ...
- H.264 中 SAD SATD及常见知识点
H264标准只定义了码流的格式编码器实现是各公司自己的事,只要形成的码流符合标准就行解码器必须按照这个格式来,这样任何符合标准的码流都可以解出来 Q:什么是SAD,SAE,SATD,SSD,SSE,M ...
- H.264中的I_PCM模式
H.264中的I_PCM模式 I_PCM是一种帧内编码模式,在该模式下,编码器直接传输图像的像素值,而不经过预测和变换.在一些特殊的情况下,特别是图像内容不规则或者量化参数非常低时,该模式比常规的操作 ...
- H.264中POC类型之探讨
有 B 图像的场合.POC 表示的是图像显示顺序.由于POC对于参考序列的初始化,重排序及标记关系重大,所以做了如下的分析,以下讨论情况是针对帧编码. pic_order_cnt_type=0的时候: ...
- 从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差
我酷爱下象棋,经常沉迷其中,不好啊,最近下定决心,尽量少下象棋. 现从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差. 第一帧: 双方把象棋摆放好,准备开始下,这个画面就是第一帧; (对应 ...
- 八、H.264中的熵编码基本方法、指数哥伦布编码
GitHub代码地址:点击这里 本节视频免费 1. H.264中的熵编码基本方法 在成功从NAL Unit中获取到语法元素的码流之后,接下来就是对语法元素的码流进行解析.根据我们在前面的博文中所讲述的 ...
最新文章
- rsync - 远程同步工具
- 90%的用户都不知道手机内部功能
- 最新安卓系统细节曝光:后盖手势控制、浮雕式UI、隐私保护.....本月更新!
- C#文件夹权限操作工具类
- 跟正刊学习SCI英文写作——摘要部分的拆解
- android压缩图片不失真,Android压缩图片到100K以下并保持不失真的高效方法 - feicien的博客 - eoe移动开发者社区...
- Python+Opencv寻找图像中最亮的区域
- WePY:在质疑中前进 | 文末福利
- 会话(session)
- php 二维数组根据键值合并二维数组_php数组实现根据某个键值将相同键值合并生成新二维数组的方法详解...
- 蓝桥杯 ALGO-47 算法训练 蜜蜂飞舞
- 50个开源性能测试工具
- 11. Django基础:应用及分布式路由
- Redis安装到Windows系统上的详细步骤
- u盘资料误删怎么恢复 怎样找回u盘里误删的文件
- ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。
- 关于神舟笔记本电脑结束睡眠后耳机没声音的解决方法
- 写代码也要讲规矩——SLA
- Android让APP运行在新环境上,Android Studio环境在真手机运行app项目教程
- html table 表格脚,HTML表格table
热门文章
- org.zkoss.xel.XelException: Resource not found:
- 大数据hadoop分布式系统
- 微信加拿大服务器,微信新功能,在加拿大也可以任意刷人民币了
- 字体图标 fa fa html5,Font Awesome 4.2.0的所有图标参考
- 激活函数(Activation Function)及十大常见激活函数
- delta和gamma中性_趣谈希腊字母(Delta和Gamma)
- alert的使用方法
- 数学与计算机科学虎扑,北大数学系在国内是最顶级存在吗?
- Linux上音频转换工具mpg123
- 测试开发是什么?为什么现在那么多公司都要招聘测试开发?