现在的位置: 首页 > 综合 > 正文

slice、aso、fmo、slice groups

2013年04月15日 ⁄ 综合 ⁄ 共 1593字 ⁄ 字号 评论关闭

以下为在网上找到的一篇贴子,结合我读的英文资料,解决了一部分我对SLICE的相关疑问:

如果不使用FMO(后面将会介绍),slice就是按扫描顺序排列的一系列宏块的集合。一副图像可以划分为1个或多个slice,每个silce解码相互独立,且按扫描顺序解码,当然滤波的时候slice边缘块要利用相邻的slice信息。

ASO(Arbitrary Slice Order):如果不使用ASO,那么slice总是按扫描顺序编解码的;如果使用了ASO,序号靠后的slice可以先于前面的slice编解码。

FMO(Flexible Macroblock Ordering):前面的slice内部宏块总是连续的。FMO技术通过映射表(macroblock to slice group map)决定具体每个宏块属于哪个slice groups,突破了宏块连续的限制。标准定义了六种FMO方式:Interleaved、Dispersed、Foreground and background、Box-out、Raster scan、Wipe、Explicit。具体描述见标准^_^。

slice groups又可以按扫描顺序分成多个slice,当不使用FMO时,就相当于整个图像是一个slice groups的情形。由于各slice groups的解码也是独立的。当码流传输错误的时候,解码端可以根据邻近正确解码的其他slice groups宏块,进行错误隐藏。

注意:1、FMO提高了错误隐藏的能力,但也使码流有所增加。

2、slice groups中不允许包含slice groups。

前两天在群上看到有人争论slice、slice groupe能否对象编码,^_^,比较有意思。首先肯定的是,slice不能,因为其内部宏块是按扫描顺序排列的。至于slice groupe,运用FMO可以灵活对宏块分割,作用主要是为了增强解码端的错误隐藏能力。至于对于关联较大(属于同一个对象)的宏块划分为同一个 slice groupe,可以一定程度上改善编码效率,但应该改善不大。因为只能靠宏块的组合逼近对象,毕竟的效果不好。而且必须使用Explicit方式,为每个宏块归类slice groupe会增大码流。而且,编码器要检测宏块的关联性(属于同一对象)会增大计算复杂度。

不管使用FMO与否,slice都可以分成五种类型:I、P、B、SI、SP,具体内容见相关内容。

下面为我自己总结的有关slice的信息:
1.Redundant Coded Picture:
一般情况下解码器利用Primary Coded Picture解码,在其损坏情况下,将其损坏的部分的数据用Redundant Coded Picture中解码出的数据来代替。
这里Redundant coded Picture是怎么出现的我没有懂清楚。
2.有关Baseline Profile的结构问题:
(1)Baseline Profile包括I slice 和 P slice
I slice :只有intra-macroblocks
P slice :有inter-macroblocks,intra-macroblocks 和 skipped macroblocks
(2)图形界限的制定
方式一:在两幅图象之间插入RBSP
RBSP作用:a.表示一幅新图象的开始;
b.指示新图象中所使用的slice类型;
方式二:依靠新图象第一个slice的header来判断新图象的到来。
3.Arbitrary Slice Order(ASO)
Baseline Profile支持这种模式,即一帧中的slices可以以任何顺序解码。
4.Slice groups
Multipule Slice groups = FMO = Flexible Macroblock Ordering

 

转自:http://blog.sina.com.cn/s/blog_5391b49c0100088m.html

抱歉!评论已关闭.