视频编译中用于环路恢复的引导偏移校正的制作方法

文档序号:17933784发布日期:2019-06-15 01:09阅读:162来源:国知局
视频编译中用于环路恢复的引导偏移校正的制作方法

数字视频流可以使用帧序列或静态图像来表示视频。数字视频可以用于各种应用,包括例如视频会议、高清视频娱乐、视频广告或用户生成的视频的共享。数字视频流可以包含大量数据,并且消耗计算设备的大量计算或通信资源以用于处理、传输或存储视频数据。已经提出了各种方法来减少视频流中的数据量,包括压缩和其它编码技术。

可以通过将帧或图像分成块来执行使用压缩的编码。解码器可以对重构帧应用一个或多个滤波器,以便去除或平滑由该有损编码引起的伪像。



技术实现要素:

本公开一般涉及视频编译,尤其涉及使用引导偏移校正的环路恢复。能够导致重构帧中的误差减少。

本公开实施方式的方面是一种方法,包括基于分类方案,将重构帧的像素分类成类,类中的至少一些类包括像素的子集;确定类中的至少一些类中的每个类的相应偏移值;对类的每个像素应用该类的相应偏移值,得到类的相应偏移调整像素;对于类中的至少一些类中的每个类,确定与省略该类的相应偏移值相比使用类的相应偏移值时的相应误差率减少。相应误差率减少基于重构帧中的类的像素、类的偏移调整像素、以及被解码以生成重构帧的源帧中的共位源像素。该方法还包括为减少重构帧中的误差,基于误差率减少,选择类中的至少一些类的子集。

本公开实施方式的另一方面是一种装置,被配置为基于分类方案,将重构帧的像素分类成类,类中的至少一些类包括像素的子集;确定类中的至少一些类中的每个类的相应偏移值;对类的每个像素应用该类的相应偏移值,得到类的相应偏移调整像素;对于类中的至少一些类中的每个类,确定与省略该类的相应偏移值相比使用类的相应偏移值时的相应误差率减少,以及为减少重构帧中的误差,选择类中的至少一些类中、具有最高误差率减少值的子集。相应误差率减少基于重构帧中的类的像素、类的偏移调整像素、以及被解码以生成重构帧的源帧中的共位源像素。

该装置可以包括非瞬时存储器和处理器,其中,处理器被配置为执行存储在存储器中的指令以实现上述步骤。

本公开实施方式的另一方面是一种方法,包括从编码比特流解码分类方案的分类参数和重构帧的偏移值,通过下述操作编码分类参数和偏移值:基于分类方案,将由解码源帧的编码器生成的重构帧的像素分类成类,类中的至少一些类包括像素的子集;确定类中的至少一些类中的每个类的相应偏移值;对类的每个像素应用该类的相应偏移值,得到类的相应偏移调整像素;对于类中的至少一些类中的每个类,确定与省略该类的相应偏移值相比使用类的相应偏移值时的相应误差率减少,相应误差率减少基于由编码器生成的重构帧中的类的像素、类的偏移调整像素、以及源帧中的共位源像素;为编码源帧,基于误差率减少,选择类中的至少一些类的子集;以及与源帧相关联地编码分类参数和至少子集中的类的偏移值。该方法还包括基于分类参数,将像素分类成类;以及对重构帧内的类的每个像素应用类的相应偏移值,以生成偏移调整帧。

分类方案可以定义在哪个类中放置重构帧的像素。分类方案可以是基于幅度的分类、基于局部变化的分类、基于边缘的分类或空间分类中的一个或多个。

类的偏移值可以是添加到被分类到该类的每个像素的值。偏移值(或类偏移)可以与类的类误差相关和/或可以被选择以减少该类的类误差。可以通过将偏移添加到像素值来获得偏移调整像素。

可以通过组合类中的像素的各个像素误差来确定类误差。例如,可以通过添加或平均各个像素误差或绝对像素误差来组合各个误差。替选地,可以通过计算均方误差来组合各个误差。

可以通过将重构帧中的像素值与源帧中的共位像素的值比较并且计算差来确定各个像素误差。

可以通过将应用偏移前的类误差与偏移后类误差比较来确定类的误差率减少。可以以上述针对各个误差(或偏移前各个误差)的方式,使用偏移后各个像素误差来计算偏移后类误差。同样地,可以将偏移后各个像素误差计算为应用偏移之后的类中的像素与源帧中的共位像素的像素值之间的差。

在实施例、所附权利要求和附图的下述详细描述中公开了本公开的这些和其他方面。

附图说明

本文的描述参考附图,其中除非另有说明,否则相似的附图标记在几个视图中指代相似的部件。

图1是视频编码和解码系统的示意图。

图2是可以实现传送站或接收站的计算设备的示例的框图。

图3是待编码并且随后解码的视频流的图。

图4是根据本公开的实施方式的编码器的框图。

图5是根据本公开的实施方式的解码器的框图。

图6是根据本公开的第一实施方式的用于减少重构帧中的误差的过程的流程图。

图7是根据本公开的实施方式的用于确定类偏移的过程的流程图。

图8是根据本公开的实施方式的用于确定误差率减少的过程的流程图。

图9是用于图示图6的过程的视频帧的图。

图10是根据本公开的第二实施方式的用于减少重构帧中的误差的过程的流程图。

具体实施方式

如上所述,与编译视频流相关的压缩方案可以包括将图像分成块,并且使用一种或多种技术来生成数字视频输出比特流以限制在输出中包括的信息。可以解码所接收的比特流以由有限的信息来重新创建块和源图像。编码视频流或其一部分诸如帧或块可以包括使用视频流中的时间和空间相似性来提高编译效率。例如,可以基于识别先前编译的像素值和当前块中的像素值之间的差(残差)来编码视频流的当前块。以这种方式,仅需要将用于生成其的残差和参数添加到比特流,而不是包括整个当前块。可以使用有损量化步骤来编码残差。从这样的残差解码(即,重构)编码块导致原始块和重构块之间的失真。

可以以各种方式使用重构后环路滤波器来改善由于编码和解码过程而失真或变形的重构帧。例如,环内去块滤波器可以被用来修改块之间的边界附近的像素值,以限制重构帧内的那些边界的可见性。例如,其他环路滤波器可以被用来通过将在编码器处确定的偏移添加到重构帧的像素值,来使图像更接近源图像。那些环路滤波器可以以盲设置操作(即,不访问源帧及其相关的重构帧)。根据本文的教导,对源和重构帧两者的访问使得可以设计对源帧训练并且发送引导解码器实现优异恢复的信息的算法。除了别的以外,本文的教导将描述基于空间和数据自适应特性的像素分类随后编码和发信号通知偏移校正作为视频编译中的引导环路恢复技术的一部分。通过基于从像素特性导出的场境使用偏移来校正像素值,可以去除或至少部分地补偿各种系统误差(诸如帧的平坦区域中的dc偏移)或颜色偏差。

本文首先参考可以结合本教导的系统来描述引导环路恢复。

图1是视频编码和解码系统100的示意图。传送站102可以是例如具有诸如图2中所述的硬件的内部配置的计算机。然而,传送站102的其它合适的实施方式是可能的。例如,传送站102的处理可以分布在多个设备中。

网络104可以连接用于视频流的编码和解码的传送站102和接收站106。具体地,可以在传送站102中对视频流进行编码,并且可以在接收站106中对编码的视频流进行解码。网络104可以是例如互联网。网络104还可以是局域网(lan)、广域网(wan)、虚拟专用网络(vpn)、蜂窝电话网络或将视频流从传送站102传递到本示例中的接收站106的任何其它装置。

在一个示例中,接收站106可以是具有诸如图2中所述的硬件的内部配置的计算机。然而,接收站106的其它合适的实施方式是可能的。例如,接收站106的处理可以分布在多个设备中。

视频编码和解码系统100的其它实施方式是可能的。例如,实施方式可以省略网络104。在另一实施方式中,视频流可以被编码,然后被存储以在稍后的时间传输到接收站106或具有存储器的任何其它设备。在一个实施方式中,接收站106接收(例如,经由网络104、计算机总线和/或一些通信路径)编码的视频流,并且存储视频流以供稍后解码。在示例实施方式中,实时传输协议(rtp)被用于通过网络104输送编码的视频。在另一实施方式中,可以使用除rtp之外的传输协议,例如基于超文本传输协议(http)的视频流传输协议。

例如,当在视频会议系统中使用时,传送站102和/或接收站106可以包括如下所述编码和解码视频流的能力。例如,接收站106可以是视频会议参与者,其从视频会议服务器(例如,传送站102)接收编码的视频比特流以解码和查看,并且进一步编码并且将其自己的视频比特流传送到视频会议服务器,以由其他参与者解码和查看。

图2是可以实现传送站或接收站的计算设备200的框图。例如,计算设备200可以实现图1的传送站102和接收站106中的一个或两者。计算设备200可以以包括多个计算设备的计算系统的形式,或者可以以单个计算设备的形式,例如移动电话、平板电脑、膝上型计算机、笔记本计算机和桌面型计算机等。

计算设备200中的cpu202可以是中央处理单元。替选地,cpu202可以是能够操纵或处理现在存在或将来开发的信息的任何其它类型的设备或多个设备。尽管所公开的实施方式可以用所示的单个处理器例如cpu202来实现,但是可以使用多个处理器来实现速度和效率方面的优点。

在实施方式中,计算设备200中的存储器204可以是只读存储器(rom)设备或随机存取存储器(ram)设备。任何其它合适类型的存储设备可以被用作存储器204。存储器204可以包括由cpu202使用总线212访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括允许cpu202执行这里描述的方法的至少一个程序。例如,应用程序210可以包括应用1至n,其进一步包括执行这里描述的方法的视频编译应用。计算设备200还可以包括辅助存储214,辅助存储214例如可以是与移动的计算设备200一起使用的存储卡。因为视频通信会话可以包含大量的信息,所以它们可以全部或部分地存储在辅助存储214中,并且根据需要被加载到存储器204中以处理。

计算设备200还可以包括一个或多个输出设备,诸如显示器218。显示器218在一个示例中,可以是将显示器与可操作以感测触摸输入的触敏元件组合的触敏显示器。显示器218可以经由总线212耦合到cpu202。除了显示器218或作为其替选,可以提供允许用户编程或以其它方式使用计算设备200的其它输出设备。当输出设备是或包括显示器时,显示器可以以各种方式实现,包括通过液晶显示器(lcd)、阴极射线管(crt)显示器或发光二极管(led)显示器诸如有机led(oled)显示器。

计算设备200还可以包括图像感测设备220或者与图像感测设备220进行通信,图像感测设备220例如是相机,或者现在存在或者将来开发的可以感测诸如操作计算设备200的用户的图像的图像的任何其他图像感测设备220。图像感测设备220可以被定位成使得其指向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以被配置使得视场包括与显示器218直接相邻并且从其可见显示器218的区域。

计算设备200还可以包括声音感测设备222或与声音感测设备222通信,声音感测设备222例如是麦克风或者现在存在或者将来开发的可以感测计算设备200附近的声音的任何其它声音感测设备。声音感测装置222可以被定位成使得其指向操作计算装置200的用户,并且可以被配置为接收在用户操作计算装置200时,由用户发出的声音,例如语音或其它话语。

尽管图2将计算设备200的cpu202和存储器204图示为集成为单个单元,但是可以利用其它配置。cpu202的操作可以分布在可以直接耦合或跨越局域或其它网络耦合的多个机器(每个机器具有一个或多个处理器)上。存储器204可以分布在多个机器上,诸如基于网络的存储器或在执行计算设备200的操作的多个机器中的存储器。尽管这里被描绘为单条总线,但是计算设备200的总线212可以由多条总线构成。此外,辅助存储214可以直接耦合到计算设备200的其它组件,或者可以经由网络访问,并且可以包括诸如存储卡的单个集成单元或诸如多个存储卡的多个单元。计算设备200因此可以以各种各样的配置来实现。

图3是待编码并且随后解码的视频流300的示例的图。视频流300包括视频序列302。在下一层级,视频序列302包括多个相邻帧304。虽然三个帧被描绘为相邻帧304,但是视频序列302可以包括任意多个相邻帧。然后,可以将相邻帧304进一步细分为单独的帧,例如帧306。在下一层级,帧306可以被细分成一系列片段308或平面。例如,片段308可以是允许并行处理的帧的子集。片段308也可以是可以将视频数据分离成单独颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。可以以不同的分辨率对片段308采样。

无论帧306是否被划分成片段308,帧306可以进一步被细分为块310,块310可以包含与例如帧306中的16×16像素相对应的数据。块310也可以被设置成包括来自像素数据的一个或多个片段308的数据。块310还可以是任何其他合适的尺寸,诸如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素或更大。除非另有说明,否则术语块和宏块在本文中可互换使用。

图4是根据本公开的实施方式的编码器400的框图。如上所述,可以在传送站102中,诸如通过提供存储在存储器例如存储器204中的计算机软件程序来实现编码器400。计算机软件程序可以包括机器指令,其当由诸如cpu202的处理器执行时,使传送站102以下文图6所述的方式对视频数据进行编码。编码器400还可以被实现为包括在例如传送站102中的专用硬件。编码器400具有下述级,以在前向路径(由实连接线所示)中执行各种功能,来使用视频流300作为输入产生编码或压缩比特流420:帧内/帧间预测级402、变换级404、量化级406和熵编码级408。编码器400还可以包括重构路径(由虚连接线所示)以重构用于未来块的编码的帧。在图4中,编码器400具有执行重构路径中的各种功能的下述级:去量化级410、逆变换级412、重构级414和环路滤波级416。编码器400的其它结构变体可以被用来编码视频流300。

当呈现视频流300以编码时,可以以块为单位处理帧306。在帧内/帧间预测级402,可以使用帧内(intra-frame)预测(也称为帧内(intra)预测)或帧间(inter-frame)预测(也称为帧间(inter)预测)或两者的组合来编码块。在任何情况下,都可以形成预测块。在帧内预测的情况下,预测块的全部或一部分可以由先前已经编码和重构的当前帧中的样本形成。在帧间预测的情况下,预测块的全部或部分可以由使用运动矢量确定的一个或多个先前构建的参考帧中的样本形成。

接下来,仍然参考图4,可以在帧内/帧间预测级402处从当前块中减去预测块以产生残差块(也称为残差)。变换级404使用基于块的变换,将残差变换为例如频域中的变换系数。这种基于块的变换包括例如离散余弦变换(dct)和非对称离散正弦变换(adst)。其他基于块的变换也是可能的。此外,可以对单个残差应用不同变换的组合。在应用变换的一个示例中,dct将残差块变换到频域中,在该频域中变换系数值基于空间频率。最低频率(dc)系数处于矩阵的左上角并且最高频率系数处于矩阵的右下角。值得注意的是,预测块的大小以及由此产生的残差块可以与变换块的大小不同。例如,预测块可以被分成应用了单独变换的较小块。

量化级406使用量化器值或量化水平,将变换系数转换为离散量子值,其被称为量化变换系数。例如,变换系数可以除以量化器值并舍位。然后,由熵编码级408对量化的变换系数进行熵编码。可以使用任何多种技术,包括令牌和二进制树来执行熵编译。然后,将熵编码系数与用于解码块的其他信息包括例如所使用的预测的类型、变换类型、运动矢量和量化器值一起输出到压缩比特流420。可以将用于解码块的信息熵编译成压缩比特流420内的块、帧、片和/或段头。压缩比特流420也可以被称为编码视频流或编码视频比特流,并且这些术语在本文中可互换使用。

图4中的重构路径(由虚连接线所示)可以被用来确保编码器400和解码器500(下文所述)使用相同的参考帧和块来解码压缩比特流420。重构路径执行类似于在下文更详细所述的、解码过程期间发生的功能的功能,包括在去量化级410对量化的变换系数进行去量化,并且在逆变换级412对去量化变换系数进行逆变换以产生衍生残差块(也称为衍生残差)。在重构级414,可以将在帧内/帧间预测级402预测的预测块添加到衍生残差以创建重构块。环路滤波级416可以被应用于重构块以减少诸如成块伪像的失真。

编码器400的其他变体可以被用来编码压缩比特流420。例如,基于非变换的编码器400可以直接量化残差信号而无需针对某些块或帧的变换级404。在另一实施方式中,编码器400可以将量化级406和去量化级410组合成单个级。

图5是根据本公开的实施方式的解码器500的框图。解码器500可以在接收站106中实现,例如,通过提供存储在存储器204中的计算机软件程序。计算机软件程序可以包括机器指令,当由诸如cpu202的处理器执行时,使得接收站106以下文图10中描述的方式解码视频数据。解码器500还可以以包括在例如传送站102或接收站106中的硬件来实现。

类似于上文讨论的编码器400的重构路径,解码器500在一个示例中包括下述级以执行各种功能来从压缩比特流420产生输出视频流516:熵解码级502、去量化级504、逆变换级506、帧内/帧间预测级508、重构级510、环路滤波级512和去块滤波级514。解码器500的其他结构变体可以被用来解码压缩比特流420。

当呈现压缩比特流420以解码时,压缩比特流420内的数据元可以由熵解码级502解码以产生量化变换系数的集合。去量化级504对量化的变换系数进行去量化(例如,通过将量化的变换系数乘以量化器值),并且逆变换级506使用所选择的变换类型对去量化的变换系数进行逆变换以产生衍生残差,该衍生残差可以与在编码器400中由逆变换级412创建的衍生残差相同。使用从压缩比特流420解码的报头信息,解码器500可以使用帧内/帧间预测级508来创建与例如在帧内/帧间预测级402处在编码器400中创建的相同的预测块。在重构级510,可以将预测块添加到衍生残差以创建重构块。环路滤波级512可以被应用于重构块以减少成块伪像。可以将其他滤波应用于重构块。在该示例中,去块滤波级514被应用于重构块以减少成块失真,并且结果被输出为输出视频流516。输出视频流516也可以被称为解码视频流,并且术语在本文中可互换使用。

解码器500的其他变体可以被用于解码压缩比特流420。例如,解码器500可以在没有去块滤波级514的情况下产生输出视频流516。在解码器500的一些实施方式中,在环路滤波级512之前应用去块滤波级514。附加地或替选地,代替环路滤波级416或者除了环路滤波级416之外,编码器400包括去块滤波级。

如上所述,可以使用引导偏移校正来减少重构帧中的误差。图6是根据本公开的实施方式的用于减少重构帧中的误差的方法或过程600的流程图。过程600可以在诸如编码器400的编码器中实现,并且可以实现为例如可以由诸如传送站102的计算设备执行的软件程序。软件程序可以包括机器可读指令,该指令可以被存储在诸如存储器204或辅助存储214的存储器中,并且可以由诸如cpu202的处理器执行,以使计算设备执行过程600。在至少一些实施方式中,可以由编码器400的环路滤波级416全部或部分地执行过程600。

可以使用专用硬件或固件来实现过程600。一些计算设备可以具有多个存储器、多个处理器或两者。可以使用不同的处理器、存储器或两者来分布过程600的步骤或操作。使用以单数形式的术语“处理器”或“存储器”涵盖具有一个处理器或一个存储器的计算设备以及具有可以用在执行一些或所有所述步骤中的多个处理器或多个存储器的设备。

在602处,将重构帧的像素分类成类。在本文中,这也可以被称为将像素分配到类。并非帧的所有像素都必须分类成类。在一些实施方式中,仅对帧的一些像素进行分类。例如,帧的像素可以被分割成像素组,其中,仅某些组的像素被分类成类。分段可以分成块,诸如参考图3所述,或附加或替选地分成片、片段、帧或块的对角线细分,或任何其他形状或不同形状。重构帧的像素可以被分类成一个或多个类。分类可期望地基于分类方案。分类方案可以包括多个分类。在分类方案包括多个分类的情况下,可以将重构帧的像素分类为用于多个分类中的每个分类的相应类。诸如在配置文件中可以预定义可用于分类方案的分类的类的数量或基数。可以在像素分类时间,从或不从预定义数字开始,动态地确定可用于分类的类的数量。动态确定可用于分类的类的数量可以基于分类方案的结果。

在本文的示例中,分类方案包括基于幅度的分类、基于局部变化的分类、基于边缘的分类或空间分类中的一个或多个。

基于幅度的分类例如基于像素值将像素分配到强度类。基于幅度的分类可以将像素分类为多个区间(bin)或区间的基数,其中,区间对应于基于幅度的分类的类。在实施方式中,划分帧的像素的幅度范围以获得期望数量的类,诸如通过使用8、16、32或64个区间。例如,在幅度范围是0-255并且寻求64个类的情况下,可以为4个像素值设计64个区间中的每一个。在该示例中,bin1可以被用于分类具有0-3范围内的值的像素,bin2可以被用于分类具有4-7范围内的值的像素,bin3可以被用于分类具有8-11范围内的值的像素等等。类似的逻辑可以适用于其他数量的类。

基于局部变化的分类基于像素相对于一个或多个空间相邻像素的值的值,将局部变化类分配给像素。例如,可以基于像素的值与像素的八个空间相邻像素的值的平均值之间的绝对差来确定局部变化类。可以使用更少或更多的像素。可以使用像素值的其他组合。例如,局部变化类可以基于像素的值与像素的空间相邻像素的相应值之间的绝对差的平均值。可以将像素分配到多个可用类中的一个,其中,类被定义为输出值的范围。例如,可以基于落在该类的绝对值的范围内的绝对差,将像素分配到类。在另一示例中,可以基于落在该类的平均值的范围内的平均值,将像素分配到类。可以预定义基于局部变化的分类的类的数量。替选或附加地,可以在确定所有或一些输出值之后,确定用于基于局部变化的分类的类的数量。例如,类内的像素的数量可以限于最大像素数。当类内的像素的数量达到最大像素数时,可以拆分该类。该类最初可以是预定义的类,然后进行拆分。替选地,可以通过输出值的范围来初始定义类,直到达到最大像素数,然后拆分该类。可以以任何方式拆分该类。一个示例是对半拆分该类。

基于边缘的分类将边缘类分配给像素。边缘类可以指示像素与边缘的接近程度。边缘类可以由梯度量值的范围来定义。可以在像素的x方向和y方向上计算梯度量值。例如,sobel算子可以执行二维空间梯度测量以生成近似绝对梯度量值。可以进行对例如对应于边缘的像素的高空间频率的其他测量,以便将像素分配到边缘类。可以组合不止一种技术来生成用于分配到边缘类的一个或多个输出值。

空间分类将图块(tile)类分配给像素。帧可以被分成共享共同宽度和共同高度的图块。宽度和高度可以相同,或者宽度和高度可以不同。图块可以全部或部分地对应于块。底部边缘、右边缘或两者的图块可以具有比其余图块更小或更大的尺寸。空间分类的类的数量可以等于或小于帧的图块的数量。可以基于像素位于哪个图块将像素分配到图块类。

图9描绘了源帧902、从例如重构级414输出的重构帧904、以及在下文的描述中使用的偏移调整帧906。作为示例而非限制,图9图示了将重构帧904划分为三个图块910a-910c。可以使用任意多种技术来划分分区。每个图块910a、910b具有4像素×4像素的尺寸。然而,图块910c位于帧的右边缘,并且小于图块910a、910b。可以将图块910a内的像素分配到第一图块类,可以将图块910b内的像素分配到第二图块类,以及可以将图块910c内的像素分配到第三图块类。

回到参考图6,将像素分类成类可以进一步基于各个分类,将重构帧904的每个像素分配到分类方案的单个类。可以从各个分类的类中导出分类方案的类的总数。作为示例而非限制,假设基于幅度的分类导致或被配置有16个类,基于局部变化的分类导致或被配置有10个类,基于边缘的分类导致或被配置有20个类,以及空间分类导致或被配置有4个类,分类方案的类的总数可以是12,800(即,16×10×20×4)个类,其中,这些类中的每一个包括强度类、局部变化类、边缘类和图块类的组合。可以使用其强度类、局部变化类、边缘类和图块类,将帧的每个像素分配到12,800个类中的一个。可以将像素的强度类、局部变化类、边缘类和图块类与每个类的强度类、局部变化类、边缘类和图块类进行比较,直到找到与像素共享所有四个类的类为止。然后将像素分配到该类。

再次将图9用作非限制性示例,重构帧904的像素被分配到类1-4,如阴影所示。

可以使用分类方案的类的其他配置。例如,至少一些像素类与一个或多个已知或确定的值相关联,并且基于对那些像素已知或确定的值,将像素分配到那些像素类。在这种情况下,或者在每个像素类具有这样的值的情况下,可以例如通过乘法或以其他方式来组合像素类的值,以生成值或值范围。被用来将像素分配到像素类的像素的值可以类似地或不同地组合以确定分类方案的单个类。

可以使用包括其他分类的其他分类方案。如前所述,其他类的数量也是可能的。可以使用通过使用一些而非全部类来分配像素。

在604处,对分类方案的类确定类偏移。类偏移可以是待添加到类的每个像素的值。如图7所示,可以实现604处的类偏移的确定。图7是用于在本公开的实施方式中确定类偏移的过程700的流程图。

在702处,确定类的类误差。可以通过类中的源帧的像素与重构帧的像素之间的比较来确定类误差。可以在类中的重构帧的像素与源帧内的共位像素的值之间执行比较。例如,线920和930指向图9的源帧902和重构帧904的每一个内的共位像素。可以使用类的重构帧中的重构像素的值与源帧中的相应(即,共位)像素的值之间的差来计算类误差。诸如通过将它们加在一起来组合差以获得类误差。类误差可以是正数或负数,即有符号值。

在704处,确定最小化类误差的值。在实施方式中,最小化误差使源帧和重构帧之间的类的平方误差最小化。确定值的需要很少计算的一种技术是计算每像素的平均误差。可以通过将类误差除以类中的像素的数量来计算每像素的平均误差。在704处对类确定的值是604处的类的类偏移。

如果存在在706处还没有确定类偏移的多个类,则过程700返回到702以考虑下一类。否则,过程700终止。

再次参考图6,过程600确定由于在606处对类的像素应用类偏移而导致的类的误差率减少。可以对包括像素的每个类进行该确定。在实施方式中,如图8所示,实现606处确定误差率减少。图8是用于确定误差率减少的过程800的流程图。

在802处,对类的像素应用类的类偏移,得到偏移调整像素。偏移调整像素得到偏移调整帧,诸如图9的偏移调整帧906。

在804处,确定类的偏移后误差。其在本文中也被称为偏移后类误差。可以使用源帧的像素和偏移调整帧中的类的相应(即,共位)像素来计算偏移后类误差。例如,可以使用源帧902的像素值和属于该类的偏移调整帧906的相应像素值来计算偏移后类误差。例如,线922和932图示了这样的对应像素。与预测之前的像素的原始值相比,可以使用在应用偏移之后的类中的像素的像素值之间的差来计算偏移后类误差。偏移后类误差可以是像素值之间的均方误差。偏移后类误差可以是像素值之间的绝对差误差之和。可以使用任何其他合适的误差测量。

在806处,过程800确定对重构帧904的像素应用类的类偏移的影响。应用类偏移的影响可以是指与应用类偏移前的误差相比,由于应用类偏移而导致的误差减少量。影响可以是用于该类的重构误差与偏移后误差的比较。类的重构误差是基于源帧中的类的像素的像素值和重构帧中的类的像素的像素值计算的类的像素的误差。期望地,不管使用何种技术,使用与在804处确定类的偏移后误差相同的技术来计算重构误差。在一些情况下,在806处确定像素的类的误差的偏移的影响包括计算该类的重构误差和偏移后误差之间的差。在一个示例中,差是从重构误差中减去偏移后误差的结果。作为偏移的结果,可以将影响存储为类的误差率减少。

尽管图8将确定类的偏移后误差以及确定偏移对误差的影响示为单独的操作,但这不是必需的。这些操作可以被组合或同时执行或者迭代地执行,以便为过程600提供误差率减少的值。在替代示例中,可以通过与像素在重构帧和偏移后帧的每一个中的值比较,比较源帧中的像素的值,计算类中的各个像素的误差。可以累加该类的像素的两个误差之间的差,然后除以像素的数量,以确定该类的误差率减少。可以使用确定由使用类偏移导致的对类的影响(在该示例中,误差率减少)的其他技术。

如果存在在808处还没有确定影响的更多类,则过程800返回到802以考虑下一类。否则,过程800终止。

再次回到图6,在608处选择类偏移的子集。在实施方式中,类偏移的子集包括导致其相关类的最大误差率减少的那些类偏移。为了确定最大的误差率减少,可以以绝对值、其任意组合或以其他方式,相对于彼此排序误差率减少。形成子集的类偏移的数量可以基于定义的数量。例如,定义的数量可以是8、16、32或64。定义的数量可以基于可用于编码类偏移的比特的数量。在实施方式中,并且仅作为示例,在用于非零偏移的6个比特可用于编码的情况下,所选择的类偏移的子集使得能够通过6个比特编码所选择的类偏移值的范围(即,值的范围[-32,31])。替代或者除了被限于所定义的数量以外,包括在类子集中的类可以是具有高于某个最小值的误差率减少的那些类。在608处,作为过程600的部分,可以将未被选择为子集的一部分的类偏移设置为零。这可以在本文中被称为对类偏移进行阈值处理。

在610处,将类偏移编码为比特流。例如,比特流可以是压缩比特流488。类偏移可以与类的标识符诸如类编号相关联地编码,或者可以被编码为从第一类到最终类的值序列。在类偏移具有零值的情况下,可以省略它。在将一些类偏移设置为零的实施方式中,可以使用游程长度golomb-rice编译,其中,使用具有在比特流中指示的预先指定参数之一(m=2,4,8或16)的golomb-rice代码对零值的每个游程进行编码。可以二进制编译非零类偏移。可以在包含在比特流中之前,算术编译类偏移的编码序列。

虽然没有明确示出,但是在610处可以在比特流中编码每个类的参数。在实施方式中,编码的参数是解码器将需要重构编码器使用的类所需的那些参数。参数可以被包括在查找表中,用于在比特流中信号告知解码器,从而可以再现查找表。参数可以包括用于基于幅度的分类的区间的数量。参数可以包括用于基于局部变化的分类的值的范围。参数可以包括边缘分类中的每个边缘类的值的范围。参数可以包括用于空间分类的图块的尺寸。在所有类偏移被包括在比特流中的情况下,例如,在编码零值的情况下,可以避免在对类偏移进行阈值处理之后指示要保留的偏移的数量。

图10是用于减少重构帧中的误差的过程1000的流程图。过程1000可以由诸如解码器500的解码器执行。例如,过程1000可以全部或部分地由解码器500的环路滤波器级512执行。可以通过在存储器诸如接收站106的存储器204中存储将由处理器诸如cpu202执行的指令,执行过程1000的实施方式。

可以使用专用硬件或固件来实现过程1000。一些计算设备可以具有多个存储器、多个处理器或两者。可以使用不同的处理器、存储器或两者来分布过程1000的步骤或操作。为了简化说明,过程1000被图示和描述为一系列步骤或操作。然而,根据本公开的教导可以以各种顺序和/或同时发生。另外,根据本公开的步骤可以与本文未呈现和描述的其他步骤一起发生。此外,并非所有示出的步骤或操作都可以被用来实现根据所公开的主题的方法。

在1010处,从接收的编码比特流中提取分类参数。在实施方式中,诸如编码器400的编码器和诸如解码器500的解码器可以具有相同的分类器系统。分类器系统可以是模块或指令集,其基于参考过程600所述的分类方案对重构帧的像素进行分类,诸如参考重构帧904所示。分类参数可以是由编码器诸如在610处执行过程600的编码器编码的分类参数。分类参数被用于生成用于分配像素的类。

在1020处,使用像素的特性,将重构帧的像素诸如由重构级510产生的帧分类成类。例如,可以类似于在602处关于过程600所述的分类来执行分类。

在1030处,从编码比特流解码类偏移。在示例中,解码包含类偏移的非零值和零值两者的偏移序列。如何解码类偏移取决于它们如何被编码到比特流中。解码类偏移可以包括使用算术解码熵解码随后二进制解码非零类偏移并且使用游程长度golomb-rice编译解码零值类偏移。

在1040处,将类偏移添加到重构帧。当使用去块滤波器时,可以在应用去块滤波器之前或之后对重构帧执行1040处的操作。向重构帧添加类偏移可以包括将类的非零类偏移添加到在类内分类的像素的像素值。这可以针对每个非零类偏移或针对所有类偏移来完成。

为了简化说明,过程600、700、800和1000被图示和描述为一系列步骤。然而,根据本公开的步骤可以以各种顺序和/或同时发生。另外,根据本公开的步骤可以与本文未呈现和描述的其他步骤一起发生。此外,可能不需要所有示出的步骤来实现根据所公开的主题的方法。

上文所述的编码和解码的方面示出一些编码和解码技术。然而,应当理解到,作为权利要求中使用的那些术语的编码和解码可以是指数据的压缩、解压缩、变换或任何其它处理或变化。

词语“示例”或“实施方式”在本文中用于表示用作示例、实例或说明。在本文中被描述为“示例”或“实施方式”的任何方面或设计不一定被解释为比其它方面或设计优选或有利。相反,使用词语“示例”或“实施方式”旨在以具体的方式呈现概念。如本申请中所使用的,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有规定或从上下文中清楚,“x包括a或b”旨在表示任何自然的包括性排列。也就是说,如果x包括a;x包括b;或x包括a和b两者,则在任何前述情况下满足“x包括a或b”。此外,除非另有说明或从上下文中清楚地指示单数形式,否则本申请和所附权利要求中使用的冠词“a(一)”和“an(一)”通常应被解释为意指“一个或多个”。此外,贯穿全文使用术语“实施例”或“实施方式”并不旨在表示相同的实施例或实施方式,除非这样描述。

传送站102和/或接收站106(以及其上存储的和/或由其执行,包括由编码器400和解码器500执行的算法、方法、指令等等)的实施方式可以以硬件、软件或其任何组合实现。硬件可以包括例如计算机、知识产权(ip)核、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其它合适的电路。在权利要求中,术语“处理器”应当被理解为单独地或组合地包括任何前述硬件。术语“信号”和“数据”可互换使用。此外,传送站102和接收站106的部分不一定必须以相同的方式实现。

此外,在一个方面中,例如,传送站102或接收站106可以使用具有计算机程序的通用计算机或通用处理器来实现,所述计算机程序在被执行时实现本文所述的任何相应的方法、算法和/或指令。附加地或替选地,例如,可以使用可以包含用于执行本文所述的任何方法、算法或指令的其它硬件的专用计算机/处理器。

传送站102和接收站106可以例如在视频会议系统中的计算机上实现。替选地,传送站102可以在服务器上实现,并且接收站106可以在与服务器分离的设备诸如手持通信设备上实现。在这种情况下,传送站102可以使用编码器400将内容编码为编码视频信号,并将编码视频信号传送到通信设备。继而,通信设备然后可以使用解码器500对编码的视频信号进行解码。替选地,通信设备可以解码在通信设备上本地存储的内容,例如未由传送站102传送的内容。其它传送站102和接收站106实施方案是可用的。例如,接收站106可以是通常固定的个人计算机而不是便携式通信设备,和/或包括编码器400的设备还可以包括解码器500。

此外,本公开的实施方式的全部或一部分可以采用可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如有形地包含、存储、传达或输送由任何处理器使用或与任何处理器结合使用的程序的任何设备。介质可以是例如电子、磁性、光学、电磁或半导体器件。也可使用其它合适的介质。

已经描述了上述实施例、实施方式和方面以便于容易理解本公开,并且不限制本公开。相反,本公开旨在覆盖包括在所附权利要求的范围内的各种修改和等同布置,其范围符合最宽泛的解释,以包括法律允许的所有这样的修改和等同结构。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1