具体实施方式
本原理针对未编码语法的自适应概率更新的方法和装置。
本描述说明本原理。因此,将认识到:本领域技术人员将能够设计出体现本原理并被包括在本原理的精神和范围内的各种布置,尽管在这里没有明确地描述或示出所述布置。
在此叙述的所有示例和条件性语言意欲用于教导的目的以便帮助读者理解本原理以及由(多个)发明人贡献的以促进现有技术的构思,并且应该被解释为不限于这种具体叙述的示例和条件。
另外,在这里叙述本原理的原理、方面和实施例及其特定示例的所有陈述意欲包括其结构和功能等效物。另外,意图是:这样的等效物包括当前已知的等效物以及将来开发的等效物二者,即所开发的执行相同功能的任何元件,而不论其结构如何。
因此,例如,本领域技术人员将认识到:在此呈现的框图表示体现本原理的说明性电路的概念性视图。类似地,将认识到:任何流程图示(flow chart)、流程图(flowdiagram)、状态转换图、伪代码等表示实质上可以表示在计算机可读介质中并因此由计算机或处理器执行的各种处理,而不管是否明确地示出这样的计算机或处理器。
可以通过使用专用硬件以及与适当的软件相关联的能够执行软件的硬件来提供图中示出的各种元件的功能。当利用处理器来提供所述功能时,可以利用单个专用处理器、利用单个共享处理器、或者利用其中一些可被共享的多个独立处理器来提供所述功能。另外,术语“处理器”或“控制器”的明确使用不应该被解释为排他性地指代能够执行软件的硬件,而是可以隐含地包括,而不限于,数字信号处理器(“DSP”)硬件、用于存储软件的只读存储器(“ROM”)、随机存取存储器(“RAM”)、和非易失性存储装置。
还可以包括其它传统的和/或定制的硬件。类似地,图中示出的任何开关只是概念性的。它们的功能可以通过程序逻辑的运行、通过专用逻辑、通过程序控制和专用逻辑的交互、或者甚至手动地来执行,如从上下文更具体地理解的那样,可以由实施者选择具体技术。
在其权利要求中,被表示为用于执行指定功能的部件的任何元件意欲包含执行那个功能的任何方式,例如包括:a)执行那个功能的电路元件的组合或者b)与适当电路相组合的任何形式的软件,所述软件因此包括固件或微代码等,所述适当电路用于执行该软件以执行所述功能。由这种权利要求限定的本原理在于如下事实,即,以权利要求所要求的方式将由所叙述的各种部件提供的功能组合和集合到一起。因此认为可以提供那些功能的任何部件与在此示出的那些部件等效。
在本说明书中引用的本原理的“一个实施例”或“实施例”及其其它变型,是指连同所述实施例描述的特定特征、结构、特性等被包括在本原理的至少一个实施例中。因此,在说明书各处出现的短语“在一个实施例中”或“在实施例中”及其任何其它变型的出现不一定都指代相同的实施例。
应当认识到,以下“/”,“和/或”,以及“...中的至少一个”中的任一个的使用,例如在“A/B”,“A和/或B”,以及“A和B中至少一个”的情况中,意欲包括仅仅对于第一个列出的选项(A)的选择、仅仅对于第二个列出的选项(B)的选择、或者对于两个选项(A和B)的选择。作为另一示例,“A,B,和/或C”,以及“A,B和C中至少一个”的情况中,这种措辞意欲包括仅仅对于第一个列出的选项(A)的选择、仅仅对于第二个列出的选项(B)的选择、仅仅对于第三个列出的选项(C)的选择、仅仅对于第一个和第二个列出的选项(A和B)的选择、仅仅对于第一个和第三个列出的选项(A和C)的选择、仅仅对于第二个和第三个列出的选项(B和C)的选择、或者对于全部三个选项(A和B和C)的选择。如本领域和相关领域普通技术人员容易认识到的,这可以被扩展用于很多列出的项目。
此外,还应当认识到,尽管在这里关于MPEG-4 AVC标准描述本原理的一个或多个实施例,但是本原理不仅仅限于该标准,并且因此可以关于其它视频编码标准、建议及其扩展使用本原理,包括使用适配统计的算术编码或任何其它熵编码方法的MPEG-4 AVC标准的扩展,同时保持本原理的精神。
如在此使用的,“高级语法”指代在宏块层之上分层级驻留的比特率中出现的语法。例如,在此使用的高级语法,可以指代,但不限于,在码片首标级、补充增强信息级(SEI)、画面参数集(PPS)级、序列参数集(SPS)级以及网络抽象层(NAL)单元首标级的语法。
此外,如在此使用的,词“画面”和“图像”互换地使用并且指代静态图像或者来自视频序列的画面。如已知的,画面可以是帧或场。
另外,如在此使用的,词“发信号通知”指代向对应的解码器指示什么事。例如,编码器可以发信号通知一组码元和/或语法中的特定的一个以便使解码器知晓哪个特定码元和/或语法的相应概率在编码器一侧得到更新。以这样的方式,相同的码元和/或语法可以类似和/或相应地和/或互补地在编码器一侧和解码器一侧进行。因此,例如,编码器可以向解码器传送特定码元和/或语法使得解码器可以使用和/或识别相同的特定码元和/或语法(以上与涉及显式标记(indicia)的显式方法对应)或者,如果解码器已经具有了特定码元和/或语法以及其它,那么可以使用信令(而不进行传送)以便简单地允许解码器知晓并选择特定码元和/或语法(以上与涉及隐式标记的隐式方法对应)。通过避免传送任何实际码元和/或语法,可以实现比特的节约。将要认识到可以以各种方式完成信令。例如,可以使用一个或多个语法元素、标志等来将信息发信号通知给对应的解码器。
转到图1,以参考数字100大体上指示了根据本原理的实施例的可以应用本原理的示例性视频编码器。
视频编码器100包括帧排序缓冲器110,其具有与组合器185的非反相输入端信号通信的输出端。组合器185的输出端与变换器和量化器125的第一输入端信号通信地连接。变换器和量化器125的输出端与熵编码器145的第一输入端和逆变换器和逆量化器150的第一输入端信号通信地连接。熵编码器145的输出端与组合器190的第一非反相输入端信号通信地连接。组合器190的输出端与输出缓冲器135的第一输入端信号通信地连接。
编码器控制器105的第一输出端与帧排序缓冲器110的第二输入端、逆变换器和逆量化器150的第二输入端、画面类型判断模块115的输入端、宏块类型(MB类型)判断模块120的输入端、帧内预测模块160的第二输入端、去块滤波器165的第二输入端、运动补偿器170的第一输入端、运动估计器175的第一输入端、以及参考画面缓冲器180的第二输入端信号通信地连接。
编码器控制器105的第二输出端与补充增强信息(SEI)插入器130的第一输入端、变换器和量化器125的第二输入端、熵编码器145的第二输入端、输出缓冲器135的第二输入端、以及序列参数集(SPS)和画面参数集(PPS)插入器140的输入端信号通信地连接。
画面类型判断模块115的第一输出端与帧排序缓冲器110的第三输入端信号通信地连接。画面类型判断模块115的第二输出端与宏块类型判断模块120的第二输入端信号通信地连接。
序列参数集(SPS)和画面参数集(PPS)插入器140的输出端与组合器190的第三非反相输入端信号通信地连接。
逆量化器和逆变换器150的输出端与组合器119的第一非反相输入端信号通信地连接。组合器119的输出端与帧内预测模块160的第一输入端以及去块滤波器165的第一输入端信号通信地连接。去块滤波器165的输出端与参考画面缓冲器180的第一输入端信号通信地连接。参考画面缓冲器180的输出端与运动估计器175的第二输入端信号通信地连接。运动估计器175的第一输出端与运动补偿器170的第二输入端信号通信地连接。运动估计器175的第二输出端与熵编码器145的第三输入端信号通信地连接。
运动补偿器170的输出端与开关197的第一输入端信号通信地连接。帧内预测模块160的输出端与开关197的第二输入端信号通信地连接。宏块类型判断模块120的输出端与开关197的第三输入端信号通信地连接。开关197的第三输入端确定开关的“数据”输入(相比较于控制输入端,即,第三输入端)是由运动补偿器170提供还是由帧内预测模块160提供。开关197的输出端与组合器119的第二非反相输入端以及组合器185的反向输入端信号通信地连接。
帧排序缓冲器110和编码器控制器105的输入端可以用作编码器100的输入端,用于接收输入画面101。此外,补充增强信息(SEI)插入器130的输入端可以用作编码器100的输入端,用于接收元数据。输出缓冲器135的输出端可以用作编码器100的输出端,用于输出比特流。
转到图2,以参考数字200大体上指示了根据本原理的实施例的可以应用本原理的示例性视频解码器。
视频解码器200包括输入缓冲器210,其具有与熵解码器245的第一输入端信号通信地连接的输出端。熵解码器245的第一输出端与逆变换器和逆量化器250的第一输入端信号通信地连接。逆变换器和逆量化器250的输出端与组合器225的第二非反相输入端信号通信地连接。组合器225的输出端与去块滤波器265的第二输入端和帧内预测模块260的第一输入端信号通信地连接。去块滤波器265的第二输出端与参考画面缓冲器280的第一输入端信号通信地连接。参考画面缓冲器280的输出端与运动补偿器270的第二输入端信号通信地连接。
熵解码器245的第二输出端与运动补偿器270的第三输入端和去块滤波器265的第一输入端信号通信地连接。熵解码器245的第三输出端与解码器控制器205的输入端信号通信地连接。解码器控制器205的第一输出端与熵解码器245的第二输入端信号通信地连接。解码器控制器205的第二输出端与逆变换器和逆量化器250的第二输入端信号通信地连接。解码器控制器205的第三输出端与去块滤波器265的第三输入端信号通信地连接。解码器控制器205的第四输出端与帧内预测模块260的第二输入端、运动补偿器270的第一输入端,以及参考画面缓冲器280的第二输入端信号通信地连接。
运动补偿器270的输出端与开关297的第一输入端信号通信地连接。帧内预测模块260的输出端与开关297的第二输入端信号通信地连接。开关297的输出端与组合器225的第一非反相输入端信号通信地连接。
输入缓冲器210的输入端可以用作解码器200的输入端,用于接收输入比特流。去块滤波器265的第一输出端可以用作解码器200的输出端,用于对输出画面进行输出。
如以上注意的,MPEG-4 AVC标准采用SKIP/Direct模式,其假设可以从已经可用的解码信息中推断出某些语法,从而根本无需编码语法。然而,在一些情况下,发现这可能在将来编码对应的语法时造成一些损坏。在至少一个实施例中,即便当语法/码元未被编码时也更新给定语法/码元的概率估计(例如,对于给定码片中的任何宏块/块)来解决以上问题。
在一个实施例中,将本原理应用于MPEG-4 AVC标准的SKIP模式和Direct模式。尽管在SKIP模式中典型地不编码模式、运动和系数语法,在Direct模式中典型地不编码模式和运动语法,但在该实施例中,仍然更新这些未编码的语法元素的概率。
转到图3,通过参考数字300大体上指示正常(传统)编码处理中的更新输入码元的概率的方法。方法300包括将控制传递给功能块310的开始块305。功能块310接收输入码元,并且传递控制到功能块315。功能块315算术地编码输入码元,并且传递控制到功能块320。功能块320更新输入码元的概率,并且传递控制到结束块399。
转到图4,通过参考数字400大体上指示正常(传统)解码处理中的更新输入码元的概率的方法。方法400包括开始块405,其传递控制到功能块410。功能块410接收包括输入码元的输入比特流,并且传递控制到功能块415。功能块415算术地解码输入码元,并且传递控制到功能块420。功能块420更新输入码元的概率,并且传递控制到结束块499。
转到图5,通过参考数字500大体上指示了根据本原理的实施例的在不编码或不解码码元的情况下更新输入码元的概率的示例性方法。方法500包括开始块505,其传递控制到功能块510。功能块510接收输入码元,并且传递控制到功能块515。功能块515更新输入码元的概率,并且传递控制到结束块599。将要认识到可以在编码器和/或解码器中执行方法500。
在一个实施例中,本原理可以应用于残差系数的有效性等级(significancelevel)的编码处理。系数的有效性指示该系数是零还是非零。编码非零系数的等级。通常,在指示每个残差系数的有效性的有效性地图(significance map)中编码系数有效性。实施有效性地图的一种方法采用以下步骤:如果一组系数具有至少一个有效系数,那么使用右端上下文(right context)算术编码“1”。此后,将该组划分成两个子集。对于每个子集,也编码用于指示该子集是否具有至少一个有效系数的“1”或“0”。重复这个处理直至发送了整个有效性地图。注意到如果为组编码“0”,那么这意味着所有系数为零,并且因此,无需进一步对该组分区。此外,注意到,可以将不同的码元概率应用于每个组大小,并且此外,对于每个组大小,可以取决于在该组在有效性地图内的位置来应用概率。
给出这个示例,在一个实施例中,可以以下方式应用本原理。假定将组编码为“1”,使得在该组中存在至少一个有效系数,并且因此,将该组分区。另外,假定该组的第一子集具有等于零的所有系数,因此算术编码用于该子集的码元“0”。然后,显然地第二子集具有有效系数,这是因为在该组中存在至少一个非零系数并且在第一子集中未发现至少一个非零系数。结果,无需为第二子集编码“1”,这是因为在这个特定情况下解码器可以推论出码元值“1”。然而,在没有编码这个码元的情况下,编码器和解码器二者均可更新码元的概率,这是因为该值对于二者是已知的。这个更新处理有助于提供更加准确的概率估计,并且因此,提供更好的编码效率。
在另一个实施例中,在SKIP/Direct模式中不对所有未编码的语法应用概率更新处理。相反,可以显式地识别将要应用本原理的语法/码元。可替换地,可以隐式地推导在编码处理期间是否需要将本原理应用于某些未编码的语法。
在一个实施例中,对于显式编码,可以使用例如一个或多个高级语法元素(例如,码片首标、SEI消息、PPS、SPS、NAL单元首标、等等)来指定将要应用本原理的未编码的码元/语法。
在另一实施例中,基于以下的一个或多个因素来隐式地推导是否需要将本原理应用于未编码的码元/语法:对应的概率的收敛速度;当前块/宏块的位置(如果当前块/宏块在码片开始处,那么不应用本原理;如果当前块/宏块在码片的结尾处,那么应用本原理),相同码元的时空相邻块的概率状态,已经编码的码元和/或语法的数目(例如,对于块、宏块、码片、画面、视频序列等等),以及对于特定语法元素已经编码了特定码元的次数,等等。
语法
表1示出了根据本原理的实施例的序列参数集(SPS)的自适应概率更新的示例性语法。表2示出了根据本原理的实施例的码片首标的自适应概率更新的示例性语法。
adaptive_probability_update_present_flag:
adaptive_probability_update_present_flag等于0零意味着对序列中的未编码的语法的概率上下文不执行自适应更新;adaptive_probability_update_present_flag等于1意味着对序列中的全部或部分未编码的语法的概率上下文执行自适应更新。
numberupdated_probability_context:number_updated_probability_context指定自适应更新概率上下文的未编码的语法的数目。
index_updated_probability_context:index_updated_probability_context指定阵列中的每个元素的概率上下文索引。每个索引与在某些情况下可以不被编码的语法相关联。
adaptive_probability_update_flag:adaptive_probability_update_flag等于0意味着对码片中的未编码的语法的概率上下文不执行自适应更新;
adaptive_probability_uPdate_flag等于1意味着对码片中的全部或部分未编码的语法的概率上下文执行自适应更新。
表1
seq_parameter_set_rbsp(){ |
描述符 |
... |
|
adaptive_probability_update_present_flag |
u(1) |
if(adaptive_probability_update_present_flag==1) |
|
{ |
|
number_updated_probability_context |
ue(v) |
for(i=0;i<number_updated_probability_context;i++) |
|
index_updated_probability_context[i] |
ue(v) |
} |
|
... |
|
} |
|
表2
slice_header(){ |
描述符 |
... |
|
adaptive_probability_update_flag |
u(1) |
... |
|
} |
|
转到图6,通过参考数字600大体上指示了根据本原理的实施例的在编码器中执行未编码的语法的自适应概率更新的示例性方法。方法600包括开始块605,其传递控制到功能块610。功能块610执行预测模式选择,并且传递控制到循环限制块615。循环限制块615开始对用于编码一个块的所有相关联的语法进行循环,并且传递控制到判断块620。判断块620确定当前语法是否是未编码的语法。如果是,那么将控制传递到功能块625。否则,将控制传递到功能块635。
功能块625执行概率上下文更新,并且传递控制到循环限制块630。循环限制块630结束所有相关联的语法的循环,并且传递控制到结束块699。
功能块635执行算术编码,并且传递控制到功能块640。功能块640执行概率上下文更新,并且传递控制到循环限制块640。
转到图7,通过参考数字700大体上指示了根据本原理的实施例的在解码器中执行未编码的语法的自适应概率更新的示例性方法。方法700包括开始块,其传递控制到循环限制块710。循环限制块710开始对用于解码一个块的所有相关联的语法进行循环,并且将控制传递给判断块715。判断块715确定当前语法是否是未编码的语法。如果是,那么将控制传递到功能块720。否则,将控制传递到功能块740。
功能块720基于其它解码的语法推断未编码的语法,并且传递控制到功能块725。功能块725执行概率上下文更新,并且传递控制到循环限制块730。
循环限制块730结束对所有相关联的语法的循环,并且传递控制到功能块735。功能块735解码一个块,并且传递控制到结束块799。
功能块740执行算术解码,并且传递控制到功能块745。功能块745执行概率上下文更新,并且传递控制到循环限制块730。
转到图8,通过参考数字800大体上指示根据本原理的实施例的在编码器处执行未编码的语法的自适应概率更新的另一种示例性方法。方法800包括开始块805,其传递控制到功能块810。功能块810执行预测模式选择,并且传递控制到循环限制块815。循环限制块815开始所有相关联的语法的循环,并且传递控制到判断块820。判断块820确定是否存在任何未编码的语法。如果是,那么传递控制到功能块825。否则,将控制传递到功能块840。
功能块825检查概率上下文更新条件,并且传递控制到判断块830,所述概率上下文更新条件基于以下中的至少一个因素:系数有效性地图中对应的系数有效性代表的位置、码片或画面中块的位置、对应的概率的收敛速度、已经编码的语法的数目、已经编码的码元的数目、多个未编码的码元和/或未编码的语法中的特定一个关于块的空间邻域和时间邻域中的至少一个的概率状态、以及在序列/画面/码片/块级处的显式或隐式指示。判断块830确定是否满足了概率上下文更新条件。如果是,那么将控制传递到功能块835。否则,将控制传递到循环限制块850。
功能块835执行概率上下文更新,并且传递控制到循环限制块850。循环限制块850结束循环,并且传递控制到结束块899。
功能块840执行算术编码,并且传递控制到功能块845。功能块845执行概率上下文更新,并且传递控制到循环限制块850。
转到图9,通过参考数字900大体上指示根据本原理的实施例的在解码器中执行未编码的语法的自适应概率更新的另一种示例性方法。方法900包括开始块905,其传递控制到循环限制块910。循环限制块910开始对用于解码一个块的所有相关联的语法进行循环,并且传递控制到判断块915。判断块915确定是否存在任何未编码的语法。如果是,那么将控制传递到功能块920。否则,将控制传递到功能块940。
功能块920基于其它解码的语法推断未编码的语法,并且传递控制到功能块925。功能块925检查概率上下文更新条件,并且传递控制到判断块930,所述概率上下文更新条件基于以下中的至少一个因素:系数有效性地图中对应的系数有效性代表的位置、码片或画面中块的位置、对应的概率的收敛速度、已经解码的语法的数目、已经解码的码元的数目、多个未编码的码元和/或未编码的语法中的特定一个关于块的空间邻域和时间邻域中的至少一个的概率状态、以及在序列/画面/码片/块级处的显式或隐式指示。判断块930确定是否满足概率上下文更新条件。如果是,那么将控制传递到功能块935。否则将控制传递到循环限制块950。
功能块935执行概率上下文更新,并且传递控制到循环限制块950。
循环限制块950结束循环,并且传递控制到功能块955。功能块955解码一个块,并且传递控制到结束块999。
功能块940执行算术解码,并且传递控制到功能块945。功能块945执行概率上下文更新,并且传递控制到循环限制块950。
现在将给出本发明的许多附带优点/特点中的一些的描述,其中的一些已经在上面提到过。例如,一个优点/特点在于一种具有编码至少一个块的画面数据的编码器的装置。所述编码器将概率更新处理应用于与所述块相关联的未编码的码元和未编码的语法中的至少一个。
另一个优点/特点在于一种具有如上描述的编码器的装置,其中,关于与所述至少一个块有关的多个未编码的码元和未编码的语法有选择地应用概率更新处理。
又一个优点/特点在于一种具有所述编码器的装置,其中如上所述关于与所述至少一个块有关的多个未编码的码元和未编码的语法有选择地应用概率更新处理,其中,显式地发信号通知选择的未编码的码元和选择的未编码的语法中的至少一个。
另一个优点/特点在于一种具有所述编码器的装置,其中如上所述关于与所述至少一个块有关的多个未编码的码元和未编码的语法有选择地应用概率更新处理,其中,隐式地发信号通知选择的未编码的码元和选择的未编码的语法中的至少一个。
此外,另一个优点/特点在于一种具有所述编码器的装置,其中如上所述关于与至少一个块有关的多个未编码的码元和未编码的语法有选择地应用概率更新处理,其中,响应于以下中的至少一个因素对是否向与块有关的多个未编码的码元和未编码的语法中特定的一个应用概率更新处理进行选择:系数有效性地图中对应的系数有效性代表的位置、码片或画面中块的位置、对应的概率的收敛速度、已经编码的语法的数目、已经编码的码元的数目、以及多个未编码的码元和未编码的语法中的特定一个关于块的空间邻域和时间邻域中的至少一个的概率状态。
另外,另一个优点/特点在于具有所述编码器的装置,其中如上所述关于与至少一个块有关的多个未编码的码元和未编码的语法有选择地应用概率更新处理,其中,响应于对于特定语法已经编码了特定码元多少次,对是否向与块有关的多个未编码的语法和未编码的码元中的特定码元应用概率更新处理进行选择。
另外,另一优点/特点在于一种具有如上所述的编码器的装置,其中,将概率更新处理应用于序列级、画面级、码片级、和块级。
另外,另一优点/特点在于一种具有如上所述的编码器的装置,其中,显式地或者隐式地发信号通知是否通过编码器已经应用了概率更新处理和是否在解码器处应用概率更新处理中的至少一个的指示。
相关领域普通技术人员基于在此教导可以容易地确定本原理的这些和其它特点和优点。应该了解的是可以以各种形式的硬件、软件、固件、专用处理器、或其结合实施本原理的教导。
最优选地,作为硬件和软件的组合来实现本原理的教导。此外,可以作为在程序存储单元上有形地体现的应用程序来实现所述软件。所述应用程序可以被上载到包括任何适当架构的机器并由其执行。优选地,在具有诸如一个或多个中央处理单元(“CPU”)、随机存取存储器(“RAM”)和输入/输出(“I/O”)接口之类的硬件的计算机平台上实现所述机器。该计算机平台还可以包括操作系统和微指令代码。在此描述的各种处理和功能可以是可由CPU执行的微指令代码的一部分或应用程序一部分或者它们的任何组合。此外,诸如附加的数据存储单元和打印单元之类的各种其它外围单元可以连接到该计算机平台。
还应当理解,因为优选地用软件来实现在附图中示出的一些组成系统组件和方法,所以这些系统组件或处理功能块之间的实际连接可能根据本原理被编程的方式而不同。给出这里的教导,相关领域的普通技术人员将能够想到本原理的这些和类似的实现或配置。
尽管在这里参照附图描述了说明性实施例,但是应当理解,本原理不限于那些精确的实施例,并且相关领域的普通技术人员可以在其中进行各种改变和修改,而不背离本原理的范围或精神。所有这样的改变和修改都意欲被包括在如所附权利要求阐述的本原理的范围内。