具有帧内预测预处理的视频编码器及与其一起使用的方法_2

文档序号:8475422阅读:来源:国知局
。在本公开内容的实施例中,运动精炼模块为视频信号110的场和/或帧的每个宏块或宏块对确定精炼的运动矢量,该精炼的运动矢量代表宏块从视频信号的参考帧或参考场到当前帧或场的位移。
[0030]基于像素和插值像素,运动精炼模块206以更大的像素水平准确度精炼宏块在当前帧或场中的位置,诸如1/4像素的分辨率或者其它子像素分辨率。候选位置还基于成本公式来评估,以确定具有最有利(诸如最低)成本的位置和精炼的运动矢量。就像在关于运动搜索模块的情况下,成本公式可以基于参考宏块与候选宏块像素值之间的绝对差之和(SAD)以及一个加权比率项,该加权比率项代表编码候选运动矢量与预测运动矢量(PMV)或估计的预测运动矢量之间的差异所需花费的位数,其中预测运动矢量(PMV)是基于在当前宏块右边的邻居宏块的并且基于来自视频信号前一行的邻居当前宏块的运动矢量,而估计的预测运动矢量是基于来自视频信号前一行的邻居当前宏块的运动矢量确定的。在本公开内容的实施例中,成本计算避免使用当前宏块中的邻居子块。以这种方式,运动精炼模块206能够对宏块进行操作,以便同时为该宏块的每个子块确定运动搜索运动矢量。
[0031]当使用估计的预测运动矢量时,成本公式避免使用来自当前行的运动矢量,并且运动搜索模块204和运动精炼模块206都可以并行地对视频信号110的整个行进行操作,以便同时为该行中的每个宏块确定精炼的运动矢量。
[0032]基于与每个宏块相邻的宏块,直接模式模块208为每个宏块生成直接模式运动矢量。在本公开内容的实施例中,直接模式模块208操作成基于用于视频信号110的B条的候选直接模式运动矢量的成本来确定直接模式运动矢量和与直接模式运动矢量关联的成本,诸如以由H.264或HEVC标准定义的方式。
[0033]虽然之前的模块集中在运动矢量的帧间预测,但是帧内预测模块210为多个宏块中的每个宏块生成最佳帧内预测模式。在本公开内容的实施例中,帧内预测模块210如由HEVC或H.264标准所定义的那样操作,但是,其它帧内预测技术同样可以采用。特别地,帧内预测模块210操作成基于从邻居宏块确定的运动矢量来评估多个帧内预测模式,诸如亮度预测模式、色度预测或其它帧内编码,以确定最佳帧内预测模式和关联的成本。
[0034]在本公开内容的实施例中,帧内预测模块210包括生成帧内预测候选数据的预处理。在另一实施例中,帧内预测候选数据被进一步筛选。特别地,预处理和筛选试图缩小在最终处理中考虑的可能的帧内预测分区和帧内预测模式。包括几个可选功能和特征的更多细节结合以下的图8-12来描述。
[0035]基于与精炼的运动矢量、直接模式运动矢量和最佳帧内预测模式关联的成本以及尤其是产生最有利(最低)成本或别的可接受成本的方法,模式决定模块212为多个宏块中的每个宏块确定最终的宏块成本。通过为多个宏块中的每个宏块生成残余亮度和/或色度像素值,重构模块214完成运动补偿。
[0036]通过把残余像素值变换编码并量化成可以被进一步编码的量化的变换系数,诸如通过熵编码模块216中的熵编码、被去块过滤器模块222过滤,视频编码器/解码器102的正向变换和量化模块220生成处理后的视频信号112。在本公开内容的实施例中,进一步的格式化和/或缓冲可以可选地由信号接口 198执行,并且处理后的视频信号112可以表示为从其输出。
[0037]如以上所讨论的,运动补偿模块150的许多模块基于为邻居宏块确定的运动矢量来操作。邻居管理模块218为多个宏块中的至少一个宏块生成并存储邻居数据,用于在对这多个宏块的至少一个邻居宏块进行操作时被运动搜索模块204、运动精炼模块206、直接模式模块208、帧内预测模块210、熵编码模块216和去块过滤器模块222当中至少一个检索。在本公开内容的实施例中,诸如链表、数组或一个或多个寄存器的数据结构被用来在缓冲区、高速缓存、共享内存或其它存储器结构中关联并存储用于每个宏块的邻居数据。邻居数据包括来自邻居宏块和/或子块的运动矢量、参考索引、量化参数、编码的块模式、宏块类型、帧内/帧间预测模块类型、邻居像素值和/或其它数据,这些数据被本公开内容的一个或多个模块或过程用来为当前宏块计算结果。例如,为了确定用于运动搜索模块204和运动精炼模块206的预测模式矢量,需要邻居的运动矢量和参考索引。除了这种数据,直接模式模块208还需要之前参考画面的共同定位的宏块的运动矢量。去块过滤器模块222根据一组过滤强度操作,其中这组过滤强度通过使用邻居的运动矢量、量化参数、参考索引和编码的块模式等来确定。对于熵编码模块216中的熵编码,需要运动矢量差值(MVD)、宏块类型、量化参数增量、帧间预测类型等。
[0038]考虑其中特定宏块MB (X,y)需要来自宏块 MB (χ-l,y_l)、MB (x,y_l)、MB (x+1,y-1)和MB(x_l,y)的邻居数据的例子。在现有技术的编解码器中,邻居数据的准备需要计算相关邻居子块的位置。但是,计算不像常规视频编码标准中那么直接。例如,在H.264编码中,多个分区类型的支持使得用于子块的尺寸和形状显著变化。此外,宏块自适应帧和场(MBAFF)编码的支持允许宏块处于帧模式或场模式。对于每种模式,都在H.264中定义一种邻居推导方法。因此,计算需要相应地考虑每种模式。此外,为了获得全部所需的邻居数据,推导需要被调用四次,因为涉及四个邻居 MB(χ-l, y_l) >MB(x, y-1)、MB(x+l,y-1)和MB(x-l,y)o因此,当前宏块MB(x,y)的编码直到四个邻居的位置都已经确定并且其数据已经从存储器中取出才能开始。
[0039]在本公开内容的实施例中,当处理每个宏块并且确定最终的运动矢量和编码的数据时,邻居数据存储在用于将需要这种数据的每个邻居宏块的数据结构中。由于邻居数据是事先准备的,因此当前宏块MB (X,y)可以在它准备好被处理时立刻开始。指出邻居的正确位置的负担实际上重新分配到其前面的宏块。因此,宏块的编码可以更流畅和更快。例如,当为MB(x-l,y-1)确定最终的运动矢量时,为还未被处理的每个邻居宏块,包括MB (x,y)以及诸如MB (X,y-1)、MB (x_2,y)、ΜΒ (χ-1,y)的其它邻居宏块,存储邻居数据。类似地,当SMB(x,y-l)、MB(x+l,y-l)和MB(x_l,y)确定最终的运动矢量时,为对应于这些宏块当中每一个的还未被处理的每个邻居宏块,包括MB (X,y),存储邻居数据。以这种方式,当MB (X,Y)准备好被处理时,邻居数据已经存储在对应于这个宏块的数据结构中,供快速检索。
[0040]然后,运动补偿可以利用检索出的数据继续前进。特别地,运动搜索模块204和/或运动精炼模块206可以利用检索出的邻居数据为多个宏块当中的每个宏块生成至少一个预测的运动矢量(诸如标准PMV或者估计的预测运动矢量)。另外,直接模式模块208可以利用检索出的邻居数据为多个宏块当中的每个宏块生成至少一个直接模式运动矢量,并且帧内预测模块210可以利用检索出的邻居数据为多个宏块当中的每个宏块生成最佳帧内预测模式,并且编码模块216可以在熵编码中使用检索出的邻居数据,这些每个都如在HEVC标准、H.264标准、MPEG-4标准、VC-1 (SMPTE标准421M)中所阐述的那样或者通过其它标准或其它方式。
[0041]场景检测模块230基于例如视频信号110中的运动检测来检测视频信号110中的场景变化。在本公开内容的实施例中,场景检测模块23为每个画面视频信号110生成运动识别信号。每个画面,诸如视频场(或者,如果是逐行扫描视频源的话就是帧),中的运动可以由被称为全局运动(GM)的参数来表示。与之前相同奇偶性(same-parity)的场相比,GM的值量化场的变化。依据每个宏块对,顶部场与顶部场比较,底部场与底部场比较,等等。GM的值可以作为场或帧中所有像素的像素运动(PM)之和来计算,其中PM的值是对场或帧中的每个像素计算的。
[0042]参数GM可以用来检测视频信号110中的场景变化。当关于一个场发生场景变化时,与“正常”场相比,该场将生成显著更高的GM值。场景变化可以通过分析沿连续场的GM模式来检测,例如通过检测连续场中超过场景检测阈值的GM的增加或减小。一旦检测到对应于特定图像的场景变化,编码器/解码器102的编码参数就被调整,以实现最佳结果。例如,场景变化的检测可以用来触发新画面组(GOP)的开始。在另一个例子中,通过调整QP的值来补偿场景变化、通过启用或禁用视频过滤器或者通过调整或修改由编码器/解码器102进行的编码、解码、转码或其它处理的其它参数,编码器/解码器102对场景变化检测作出响应。
[0043]虽然没有明确示出,但是编码器/解码器102可以包括存储器高速缓存、共享内存、存储器管理模块、梳状过滤器或者其它视频过滤器,和/或支持把视频信号110编码成处理后的视频信号112的其它模块。
[0044]一般性编码和解码过程的更多细节将结合图6和7更具体地描述。
[0045]图6给出了根据本公开内容实施例的视频编码操作的方框流程图。特别地,示出了使用结合图5描述的许多特定于功能的模块来实现类似编码操作的示例视频编码操作。运动搜索模块204基于当前帧/场260和一个或多个参考帧/场262为多个宏块当中的每个宏块生成运动搜索运动矢量。运动精炼模块206基于运动搜索运动矢量为多个宏块当中的每个宏块生成精炼的运动矢量。帧内预测模块210为多个宏块当中的每个宏块评估并选择最佳帧内预测模式。模式决定模块212基于与精炼的运动矢量关联的成本以及最佳帧内预测模式为多个宏块当中的每个宏块确定最终的运动矢量。
[0046]通过由差值电路282从当前帧/场260的像素值中减去,重构模块214为多个宏块当中的每个宏块生成对应于最终的运动矢量的残余像素值,并且通过利用加法电路284再添加(通过变换和量化模块220处理的)残余像素值而生成未过滤的重构帧/场。变换和量化模块220在变换模块270和量化模块272中变换和量化残余像素值并且通过在逆变换模块276和去量化模块274中的逆变换和去量化重新形成残余像素值。此外,量化和变换后的残余像素值被重新排序模块278重新排序并且被熵编码/重新排序模块216的熵编码模块280熵编码,以形成网络抽象层输出281。
[0047]去块过滤器模块222从未过滤的重构帧/场形成当前的重构帧/场264。还应当指出,当前的重构帧/场264可以被缓冲,以便为未来的当前帧/场260生成参考帧/场262。
[0048]如结合图5所讨论的,视频编码器/解码器102的一个或多个模块也可以在解码过程中使用,如以下将结合图7进一步描述的。
[0049]图7给出了根据本公开内容实施例的视频解码操作的方框流程图。特别地,这种视频解码操作包含许多结合图6描述的共同元件,这些共同元件由共同的标号指出。在这种情况下,运动补偿模块207、帧内补偿模块211、模式开关2
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1