从丢失的空间可扩展层恢复运动向量的制作方法_2

文档序号:8461038阅读:来源:国知局
的层列表24或恢复的层列表26中找到值LI,这是因为层L2也丢失了。
[0022]在确定值LO在解码的层列表24中以后,所示出的选择器22通过将值LO置于SLN线40上而将会选择层LO作为支持层,并且通过将值LI置于PLN线42上而选择层LI作为处理的层。由此,可以将针对层LO的运动向量系数从重调尺寸系数列表44传送到上采样模块38,其可以根据接收到的系数而进行插值(例如,上采样)并且在线48上将插值结果存储到缓冲器14以作为针对未解码的层LI的中间运动向量系数。然而,特别值得注意的是,选择器22可以继续将输出门20维持在闭合状态,这是因为PLN(Ll)不等于CLN(L3)。简而言之,还没有获取针对目标运动向量的系数(即,层L3系数),所以迭代过程可以持续整个增强层的组/序列,直到已恢复出目标运动向量。
[0023]接着可以通过将值LI添加到恢复的层列表26而更新恢复的层列表26。接着,选择器22可以将层LI指定为支持层并将层L2指定为处理的层,其中可以重复上述步骤以便插值针对未解码的层L2的中间运动向量系数。接着,可以将L2中间运动向量系数写入到缓冲器14并且可以将值L2添加到恢复的层列表。在该示例中,将再次重复所描述的步骤,其中层L2被指定为支持层并且层L3被指定为处理的层。在这样的情况下,针对层L3的插值的运动向量系数将会被认为是目标运动向量系数并且被写入到缓冲器14。另外,选择器22将确定PLN(L3)等于CLN(L3),并且可以打开输出门20以便允许将目标运动向量传递到输出。
[0024]尽管上述示例使用之前紧挨的层作为参考层,但是也可以使用其它方法。例如,在SVC (可扩展视频编码,例如推荐H.264,针对通用视听服务的高级视频编码,Annex G,ITU-T,01/2012)流中可遇到以下配置:
[0025]LO是以64kbit/s采样的基础层,帧尺寸为200x100 ;
[0026]LI是以256kbit/s采样的增强层,帧尺寸为200x400 ;
[0027]L2是以1024kbit/s采样的增强层,帧尺寸为200x400 ;并且
[0028]L3是以1024kbit/s采样的增强层,帧尺寸为400x800。
[0029]其中,针对L1、L2和L3的参考层分别为L0、L1和LI。如已经指出的,可以由解码器16从视频比特流中提取该信息并将该信息存储在参考层列表28中。
[0030]图3示出了用于处理解码的视频比特流的方法50。方法50可以以如下形式实现:可执行软件以作为存储在存储器的机器或计算机可读存储介质中的一组逻辑指令,该存储器可以是例如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪速存储器等;可配置逻辑,诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD);使用电路技术的固定功能逻辑硬件,诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术;或其任意组合。例如,用于执行在方法50中所示的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,该一种或多种编程语言包括面向对象编程语言(例如,Java、Smalltalk、C++等)和传统的过程编程语言(例如,“C”编程语言或类似的编程语言)。
[0031]所示出的处理块52支持初始化处理的层号(PLN)、初始化支持层号(SLN)并且关闭恢复模块的输出门。更具体地,处理的层号可以被设置为当前层号(CLN,例如,PLN — CLN)并且支持层可以被设置为参考层号(RLN,例如,SLN — RLN)。块54可以确定支持层是否在解码的层列表中或在恢复的层列表中。如果不在,则运动向量恢复可以是适合的。由此,处理的层号可以被设置为支持层号(例如,PLN —SLN)。所示出的块56还支持将支持层号设置为适当的参考层列表值(RefLL[SLN],例如,SLN —RefLL[SLN]),其中适当的参考层列表值可以被编码成视频比特流。例如,如果层L4参考层L3,层L3参考层LI,并且层 L2 参考层 LI,则 RefLL 可以被如下填充:RefLL[0] = -1,RefLL[I] = 0,RefLL[2]=1,RefLL[3] = 1,RefLL[4] = 3。
[0032]可以在块58处做出关于支持层号是否小于零的确定(即,在迭代中已达到基础层)。如果小于零,则所示出的过程回到在块54处确定关于支持层是否在解码的层列表中或在恢复的层列表中。如果找到了支持层,则块60可以确定当前层号是否等于处理的层号(例如,CLN = PLN)。如果不等于,则所示出的块62将处理的层号和支持层号输出到缓冲器,并且将输出门维持在闭合状态。另外,可以在块64处上采样支持层的运动向量,块64还可以支持将处理的层号添加到恢复的层列表。接着,块66可以将处理的层号设置为当前层号并且将支持层号设置为参考层号(例如,PLN — CLN, SLN — RLN),其中该过程可以回到在块54处确定关于支持层是否在解码的层列表中或在恢复的层列表中。
[0033]如果在块60处确定当前层号等于处理的层号,则在块68处可以打开输出门以便允许目标运动向量离开恢复模块。如果在块58处确定支持层号小于零(例如,在迭代中已达到基础层),则所示出的块70将处理的层号和支持层号设置为负一(例如,PLN — -1,SLN--1)以停止该搜索。由此,所示出的块72将处理的层号和支持层号输出到缓冲器,并且将输出门维持在打开状态。接着,可以在块74处上采样支持层的运动向量,块74还可以将处理的层号添加到解码的层列表。
[0034]选择转向图4,示出了逻辑架构15的修改的恢复模块76,其中上采样模块78在可靠性图中将与恢复的运动向量相关联的宏块标记为不可靠。所示出的恢复模块76还包括被配置为校正不可靠宏块的校正模块80。在这方面,丢失的数据可以与帧的整个层级或片不相关。相反,不可靠宏块可以由可靠宏块包围。由此,所示出的校正模块80使用与可靠宏块相关的数据来修正不可靠宏块的运动向量。例如,校正模块80可以包括用于确定/计算针对多个周围的可靠宏块的平均运动向量,确定该平均运动向量与恢复的目标运动向量之间的差值,以及如果该差值超出阈值则将该平均运动向量分配给目标运动向量的逻辑。
[0035]图5A示出了逻辑架构82,逻辑架构82可以从通信信道/链路的编码器侧提供额外的稳定性。一般地,逻辑架构82可以被配置为识别与视频比特流相关联的宏块,并且基于关于该宏块中的一个或多个运动向量的期望的恢复误差,为该宏块选择编码模式。在这方面,帧内编码模式可以不利用运动向量并且可以比帧间编码模式更有可能产生层恢复误差。由此,相比于针对帧内编码模式,可以给帧间编码模式更大的优先级。
[0036]在所示出的示例中,优先级模块84基于所期望的恢复误差而将优先级系数分配给多个编码模式中的每一个,以获取相对应的多个系数。该架构还可以包括代价(cost)逻辑86,用于从缓冲器88接收宏块并基于每一个宏块而确定多个编码模式中的每一个的率失真代价,以获取相对应的多个率失真代价。另外,优先级模块84可以通过相对应的优先级系数来调节(adjust)每一率失真代价,以获取多个经调节的率失真代价,其中优化逻辑90可以在多个经调节的率失真代价中识别最优值,其中所选择的编码模式是与该最优值相关联的O
[0037]在一个示例中,最优模式84包括乘法逻辑92以将每一率失真代价乘以相对应的优先级系数,以获取多个经调节的率失真代价。因此,可以将大于一的系数分配给很可能导致恢复的运动向量的重大误差的模式,其中这样的值将增加与这些模式相关联的代价。架构82还可以包括帧缓冲器94,帧缓冲器94向宏块编码器-解码器96提供帧数据,宏块编码器-解码器96进而使用该帧数据和来自模式控制逻辑98的模式数据以向代价逻辑86供应做出率失真代价确定所需要的信息。
[0038]图5B示出了用于选择编码模式的方法100。方法100可以以如下形式实现:可执行软件以作为存储在存储器的机器或计算机可读存储介质中的一组逻辑指令,该存储器可以是例如RAM、R0M、PR0M、固件、闪速存储器等;可配置逻辑,诸如例如PLA、FPGA、CPLD ;使用电路技术的固定功能逻辑硬件,诸如例如ASIC、CM0S或TTL技术;或其任意组合。所示出的处理块102支持识别与视频比特流相关联的宏块。在块104处
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1