H.264中的SP&SI帧技术简述

1           应用背景(详细可见文献[12]

       流间切换、随机接入、错误恢复、快进快退、拼接

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帧技术简述相关推荐

  1. H.264中IDR帧和I帧区别

    IDR(Instantaneous Decoding Refresh)--即时解码刷新.       I和IDR帧都是使用帧内预测的.它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I ...

  2. H.264中帧、片、宏块和NAL的关系

    怎么区分H.264视频流的I frame 和 P frame? 我是新手,前些天自己看那H.264规范文档及其他资料寻找答案时, 还有几个概念的关系还没能理解清楚,望达人指点一二: NAL.Slice ...

  3. H.264 中很有用的一些概念

    Q:PSNR 峰值信噪比 是根据它来取qp是不是? A:不是 和QP没有直接关系但是QP的选择会影响到PSNR Q: 如果不用率失真最优化,为什么选择SATD+delta×r(mv,mode)作为模式 ...

  4. H.264中的一些易混淆概念

    Q:PSNR 峰值信噪比 Q:是根据它来取qp是不是? A:不是, 和QP没有直接关系, 但是QP的选择会影响到PSNR Q: 如果不用率失真最优化, 为什么选择SATD+delta×r(mv,mod ...

  5. H.264 中 SAD SATD及常见知识点

    H264标准只定义了码流的格式编码器实现是各公司自己的事,只要形成的码流符合标准就行解码器必须按照这个格式来,这样任何符合标准的码流都可以解出来 Q:什么是SAD,SAE,SATD,SSD,SSE,M ...

  6. H.264中的I_PCM模式

    H.264中的I_PCM模式 I_PCM是一种帧内编码模式,在该模式下,编码器直接传输图像的像素值,而不经过预测和变换.在一些特殊的情况下,特别是图像内容不规则或者量化参数非常低时,该模式比常规的操作 ...

  7. H.264中POC类型之探讨

    有 B 图像的场合.POC 表示的是图像显示顺序.由于POC对于参考序列的初始化,重排序及标记关系重大,所以做了如下的分析,以下讨论情况是针对帧编码. pic_order_cnt_type=0的时候: ...

  8. 从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差

    我酷爱下象棋,经常沉迷其中,不好啊,最近下定决心,尽量少下象棋. 现从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差. 第一帧: 双方把象棋摆放好,准备开始下,这个画面就是第一帧; (对应 ...

  9. 八、H.264中的熵编码基本方法、指数哥伦布编码

    GitHub代码地址:点击这里 本节视频免费 1. H.264中的熵编码基本方法 在成功从NAL Unit中获取到语法元素的码流之后,接下来就是对语法元素的码流进行解析.根据我们在前面的博文中所讲述的 ...

最新文章

  1. rsync - 远程同步工具
  2. 90%的用户都不知道手机内部功能
  3. 最新安卓系统细节曝光:后盖手势控制、浮雕式UI、隐私保护.....本月更新!
  4. C#文件夹权限操作工具类
  5. 跟正刊学习SCI英文写作——摘要部分的拆解
  6. android压缩图片不失真,Android压缩图片到100K以下并保持不失真的高效方法 - feicien的博客 - eoe移动开发者社区...
  7. Python+Opencv寻找图像中最亮的区域
  8. WePY:在质疑中前进 | 文末福利
  9. 会话(session)
  10. php 二维数组根据键值合并二维数组_php数组实现根据某个键值将相同键值合并生成新二维数组的方法详解...
  11. 蓝桥杯 ALGO-47 算法训练 蜜蜂飞舞
  12. 50个开源性能测试工具
  13. 11. Django基础:应用及分布式路由
  14. Redis安装到Windows系统上的详细步骤
  15. u盘资料误删怎么恢复 怎样找回u盘里误删的文件
  16. ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。
  17. 关于神舟笔记本电脑结束睡眠后耳机没声音的解决方法
  18. 写代码也要讲规矩——SLA
  19. Android让APP运行在新环境上,Android Studio环境在真手机运行app项目教程
  20. html table 表格脚,HTML表格table

热门文章

  1. org.zkoss.xel.XelException: Resource not found:
  2. 大数据hadoop分布式系统
  3. 微信加拿大服务器,微信新功能,在加拿大也可以任意刷人民币了
  4. 字体图标 fa fa html5,Font Awesome 4.2.0的所有图标参考
  5. 激活函数(Activation Function)及十大常见激活函数
  6. delta和gamma中性_趣谈希腊字母(Delta和Gamma)
  7. alert的使用方法
  8. 数学与计算机科学虎扑,北大数学系在国内是最顶级存在吗?
  9. Linux上音频转换工具mpg123
  10. 测试开发是什么?为什么现在那么多公司都要招聘测试开发?