Chinaunix首页 | 论坛 | 博客
  • 博客访问: 165716
  • 博文数量: 46
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 396
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-03 12:59
文章分类

全部博文(46)

文章存档

2010年(1)

2009年(2)

2008年(43)

我的朋友

分类: C/C++

2010-09-17 19:20:56

B_Skip类型宏块(200503版标准,表7-14最后一行): 无像素残差,无运动矢量残差(MVD)。解码时,通过Direct预测模式(时间或空间)计算出前、后向MV后,直接利用前、后向MV得到像素预测值。像素重构值=像素预测值        

B_Direct_16*16 类型宏块(200503版标准,表7-14第一行):有像素残差,无运动矢量残差(MVD)。解码时,通过Direct预测模式(时间或空间)计算出前、 后向MV后,利用前、后向MV得到像素预测值。然后,像素重构值=像素预测值+像素残差解码值      

P_Skip类型宏块(200503版标准,表7-13最后一行):也就是COPY宏块。无像素残差,无运动矢量残差(MVD)。直接利用预测MV得到像素预测值。像素重构值=像素预测值  。
 
请一定不要把 Direct 类型宏块、Skip 类型宏块、Direct 预测模式这三个混淆了。B_Skip 类型宏块(大小为 16*16)、B_Direct_8*8 类型块(大小为 8*8)和B_Direct 类型宏块(大小为 16*16)都采用的是 Direct 预测模式;可以看到两种skip类型既无残差也无运动矢量差值,B_Direct分为对16*16和8*8,都是无MVD但是带残差。解码时,通过预测计 算MVPred,再依靠帧间运动补偿恢复宏块的亮度色度信息。
 
Skipped Macroblock 是宏块类型,Direct Prdeiction 是宏块的预测方式
Skipped Macroblock 顾名思义就是跳过不编码的宏块,那么在解码端如何重构这个宏块呢?这就有两种选择:
1、采用 Direct 方式(这是一种特殊的预测方式)先预测出其 MV,后面的处理就跟一般的帧间宏块类似了(根据 MV 获取参考图像,再进行插值重构);
2、不采用 Direct 方式进行预测,而直接 copy 参考宏块。

第一种选择正是 B 片中的 Skip 宏块所采取的方式,同时又分为空间和时间 Direct 预测方式
第二种选择正是 P 片中的 Skip 宏块所采用的方式,也就是直接 copy 参考宏块

现 在应该明白 Skip 与 Direct 的联系了吧?但要注意的是 B 片中有一种类型的宏块:B_Direct_16*16,它很特殊,它的名字里有“Direct”这个单词 ,它的预测方式也采用的 Direct 方式。这种类型的宏块即有 B 片中的 Skip 宏块的特性(MV 采用 Direct 预测方式得到),同时又有一般帧间宏块的特性(有像素残差,Skip 宏块是没有像素残差的)。
 
给大家一个直观的理解:
1,在图像序列里确实存在这样的情况:当前MB(或者submb)的数据和以往图像中的某一块完全一样(主要针对视频中的运动物体),所以从理论上完全可以不传输这一块的数据,而有以往的数据。

2.那么这个以往的数据采用哪一帧呢?显然对于运动物体采用紧邻那一帧最好(至少mv最小的可能性大)。
3.采用哪一块呢?  这个有一点麻烦,但是从逻辑上讲如果运动物体的边缘确定了,中间的块和边缘的块的mv应该一致,所以从临近块中得到mv就是很自然的想法了。

以上就是P帧SIKP的想法。当然按照这个想法做,不是所有的运动物体都能很好的找到匹配块,但是视频编码考虑的是效果和算法的平衡。
当一个skip宏块在比特流中被申明,就不必为这个宏块传输数据了。解码器会为这个跳过宏块计算向量和利用来自list0的首参考帧的MC预 测去重构这个宏块。普通的(非skip)帧间预测, 先得到MVPRED, 然后搜索得到最佳匹配块. (判断最佳的方法....是可能使用MAD作为判断标准....) 然后把模式, 运动残差(MVD), CBP, 和像素残差一起编码传输 (或者还有其他一些flags)



那么在编码时怎样判断当前块可以是skip块呢? 没什么好办法,只能先假定它就是,然后算一下参差是否为0。当然你可以用量化后的数值计算,这样会在一定程度上增大找到sikp的概率。
如果满足以下三个条件则将宏块按 Skip 类型进行编码:
(1)最佳模式选择为Inter16×16;
(2)MC得到的最终运动矢量等于预测运动矢量,即运动矢量的残差为0;
(3)变换系数均被量化为0。

B帧和P帧的想法类似,说起来有点累(因为它有2个参考帧,2种所谓的预测模式),大家可以自己想一想。

总结一下:
图 像压缩研究了很久,但是基本思想却没有什么突破:空间的相关性和时间的相关性。在加上要考虑实现的难度,所以基本的思路很简单。不要看264写的那么复 杂,其实每一条的出处的想法都很简单,所以建议大家多考虑一下实际的图形序列是什么样的,再来理解为什么这样做和各种做法的区别,就没那么困难了。
阅读(3521) | 评论(0) | 转发(0) |
1

上一篇:内存分配知识,全局,局部,静态变量

下一篇:没有了

给主人留下些什么吧!~~