一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用自适应乘数系数进行图像滤波的方法及装置与流程

2022-02-21 07:34:56 来源:中国专利 TAG:


1.本发明实施例涉及图像处理(例如,视频图像和/或静止图像编码)领域,提供了使用具有自适应乘数滤波器系数的滤波器进行图像滤波的新方法和装置。


背景技术:

2.视频编码(视频编码和视频解码)广泛用于数字视频应用,例如,广播数字tv、经由互联网和移动网络的视频传输、视频聊天和视频会议等实时会话应用、dvd和蓝光光盘、视频内容采集和编辑系统以及安全应用的可携式摄像机。
3.自从1990年开发h.261标准中的基于块的混合视频编码方法以来,已经开发了新的视频编码技术和方法,而这些新的视频编码技术和方法成为新的视频编码标准的基础。大多数视频编码标准的目标之一是在不牺牲图像质量的情况下,实现相比前一个标准更低的码率。其它视频编码标准包括mpeg-1视频、mpeg-2视频、itu-t h.262/mpeg-2、itu-t h.263、 itu-t h.264/mpeg-4第10部分、高级视频编码(advanced video coding,avc)、itu-t h.265、高效视频编码(high efficiency video coding,hevc)以及这些标准的扩展版(例如,可扩展性和/或三维(three dimension,3d)扩展版)。
4.图1示出了编码系统300的一个实施例的示意性框图,下面将更详细地描述。
5.图2是视频编码器的一个示例性结构的框图。本发明可以在该结构中实现,该结构将在下文更详细地描述。
6.具体而言,所示出的编码器100包括“环路滤波器”120,其中,可以进行本发明提供的滤波操作。然而,更一般地,滤波操作适用于编解码器中的其它位置,例如,适用于插值滤波器中。更一般地,本发明不仅适用于视频编码,而且还适用于静态图像编码。
7.图3是视频解码器的一个示例结构的框图。本发明可以在该结构中实现,该结构也将在下文更详细地描述。具体地,本发明适用于环路滤波器220等。
8.下面将总结一些关于自适应滤波的背景信息。
9.用于视频编码的自适应滤波用以通过使用基于维纳(wiener)的自适应滤波器使原始像素点与解码像素点之间的均方误差最小化。具体而言,所提出的自适应环路滤波器 (adaptive loop filter,alf)位于每个图像的最后一个处理阶段,并且可以作为捕获和修复前面阶段中伪影的手段。合适的滤波器系数由编码器确定并显式地指示给解码器。
10.关于自适应滤波的一般信息可以在chia-yang tsai、ching-yeh chen、tomoo yamakage、 in suk chong、yu-wen huang、chih-ming fu、takayuki itoh、takashi watanabe、takeshichujoh、marta karczewicz和shaw-min lei发表于《ieee journal of selected topics in signalprocessing》(2013年12月第7卷第6期)的文章《adaptive loop filtering for video coding》中找到。
11.上述文档给出的描述介绍了使用自适应滤波器系数进行滤波操作的具体实现方式。该操作的一般原理可以描述如下。
12.通常,滤波方程式如下:
[0013][0014]
这里,r(i,j)是滤波之前的图像帧中的位于坐标(i,j)处的像素点。
[0015]
r'(i,j)为滤波之后的图像帧中的像素点。f(k,l)为滤波器系数。
[0016]
图4示出了一个示例性滤波器内核。在本示例中,c20为滤波器内核的中心坐标(k=0, l=0),l等于8。
[0017]
在该示例中,滤波器内核关于中心对称。但是可能并非普遍如此。
[0018]
在使用整数运算的情况下,滤波方程式可以写为
[0019][0020]
这里,n是对输出进行位移操作的位数,即,输出除以归一化因子。具体而言,n可以是预定义的。“offset”是用于补偿整数运算中损失的标量。在位移了n位的情况下,偏移可以是2
(n-1)
。在上述方程式中,滤波系数f(k,l)可以只具有整数值,而没有分数值。为了确保硬件中的精确实现,根据整数运算实现滤波方程式十分重要。右移位运算“》》n”的结果是除以2n,然后进行向下取整运算。
[0021]
通常(但不一定),如果期望平均照明度不发生变化,则以下方程式成立。
[0022][0023]
在编码器中,通过使原始像素与滤波像素之间的误差的预期值最小化来估计滤波器系数。
[0024][0025]
在上述方程式中,o(i,j)表示原始图像的像素点。
[0026]
图5示出了自适应滤波器的一些典型的示例性滤波器形状。左侧图示出了5
×
5菱形滤波器(具有7个唯一系数的13抽头滤波器),中间图示出了7
×
7菱形滤波器(具有13个唯一系数的25抽头滤波器),右侧图示出了9
×
9菱形滤波器(具有21个唯一系数的41抽头滤波器)。
[0027]
术语“自适应”滤波是指滤波过程可以通过编码器进行调整。这涉及滤波器形状、滤波器大小、滤波系数的数量、滤波系数的值,等等。这些数据也称为“滤波器辅助信息”,会指示给解码器。
[0028]
当自适应滤波应用于包括乘法的滤波实现方式时,即当滤波器系数为所谓的乘法系数或乘数系数时,自适应滤波存在以下问题。换句话说,本发明所要解决的以下问题涉及
使用自适应滤波器系数进行滤波,其中,可以单独适应性地确定(修改)在乘法运算中使用的滤波器系数。关于这一点,“单独”意指对于每个图像(picture/image/frame),和/或对于每个像素,和/或对于每个系数。
[0029]
问题在于,乘法运算的实现成本很高,尤其是在专用硬件实现方式中。使用滤波器需要进行较多次的滤波乘法运算(例如,在9
×
9菱形滤波器的情况下,每个像素进行41次乘法运算,如图4所示)。
[0030]
下文将更详细地说明这一点。
[0031]
假设要使两个无符号的八位整数相乘。滤波器系数为c,像素点为a。
[0032]
乘法过程可以分解为如下所示的8次一位乘法运算以及7次加法运算,其中,每次乘法运算可以实现为二进制运算中的位移位运算。因此,大约1次乘法运算等于7次加法运算。
[0033]
问题在于乘法过程需要大量计算。因此,在专用硬件中的实现成本很高。
[0034][0035]
这里,用二进制表示8位无符号滤波器系数c,其中,c[0]为系数c的最低有效位, c[7]为最高有效位。类似地,a[7]、a[6]
……
a[0]是按顺序对应于最高有效位到最低有效位的各位。证明了二进制运算中的运算p=c*a,结果显示在最低行中。
[0036]
在图4的示例中,滤波器内核包括41个滤波器抽头,这意味着为了处理像素点,需要 41次乘法运算。
[0037]
需要指出的是,本发明及其所解决的上述问题具体涉及使用乘数滤波器系数进行自适应滤波。该问题不适用于固定滤波器,特别是不适用于采用多个固定滤波器的滤波操作。
[0038]
采用多个固定滤波器的示例是插值滤波,用于在帧间预测中的分数像素位置处进行插值,如图6所示。
[0039]
许多已知的编解码器使用固定的插值滤波器进行插值滤波。虽然滤波器的滤波器系数是固定的,但是不同的分数像素位置(图中的半像素位置和四分之一像素位置)对应有
多个滤波器。在该示例中,基于运动矢量对整个滤波器组进行适应性地确定,而不是单独对滤波器系数进行适应性地确定。
[0040]
在图中,大圆对应于图像中的实际像素位置,小圆是通过进行插值滤波操作生成的分数像素点位置。在特定示例中,两个实际图像像素点位置之间有3个分数像素(左四分之一像素、二分之一像素和右四分之一像素)位置。图的左侧示出了用于对二分之一像素(pixel/pel)位置进行插值的插值滤波器。图的右侧示出了用于四分之一像素(pixel/pel)位置的插值滤波器。虽然这些滤波器各不相同,但是每个插值滤波器都是固定的。如上指示,图6的示例仅供说明,并不构成本发明的一部分。
[0041]
本发明旨在提供一种乘法自适应滤波的改进概念,能够简化乘法运算,减少乘法运算的工作量。


技术实现要素:

[0042]
本发明实施例由独立权利要求的特征定义,并且由从属权利要求的特征定义实施例的其它有利实现方式。
[0043]
根据本发明第一方面,提供了一种使用具有由整数表示的自适应乘数系数的滤波器对图像的像素点集合进行滤波的装置。所述装置包括处理电路,所述处理电路用于确定所述滤波器的至少一个乘数系数的值位于允许值集合内,所述允许值集合是至少部分地基于{-64,
‑ꢀ
32,-16,-8,-4,-2,-1,0,1,2,4,8,16,32,64};获得所述图像的像素点集合;使用所述滤波器对所述图像的像素点集合进行滤波。
[0044]
根据本发明,图像的像素点集合可以是视频信号或静止图像信号的像素点等。所述处理电路可以通过软件和/或硬件的任何组合来实现。所述允许值集合可以特别是预定的允许值集合。通常,本发明还适用于除图像之外的其它信号像素点集合,例如,包括音频数据的信号。
[0045]
本发明的特别方法是对自适应乘法滤波器的滤波器系数能够取的值进行限制,从而简化乘法运算。具体地,限制滤波器系数的允许值,使得在用于表示绝对值的预定个的二进制数位中,只允许使用有限个“1”。这能够简化用于滤波的乘法运算,从而使得滤波操作更有效。
[0046]
如下文所示,在预定总数量的二进制数位中允许的“1”的数量越少,执行滤波操作的效率增益越大。例如,如果系数值可以取的任何值只包括单个“1”,即最多一个“1”,则可以实现最佳效率增益。
[0047]
根据实施例,将所述允许值集合中的最大绝对值限制为预定最大值n
max

[0048]
根据实施例,所述至少一个乘数系数的绝对值的二进制表示最多包括两个“1”。更具体地,所述至少一个乘数系数的绝对值的二进制表示最多包括一个“1”。如上所示以及如下将详细描述,允许系数值的二进制表示中的0越多(也就是,1越少),滤波乘法运算越简化,增益和处理效率越高。因此,最有效的情况是只有一个“1”,而两个允许“1”仍能产生良好的结果。当然,哪种情况最好在很大程度上取决于情况的具体内容,特别是对于大型滤波器,有三个或三个以上“1”可能仍然是有益的。
[0049]
通常,所述允许值集合适用于所述滤波器的至少一个乘数系数。
[0050]
根据实施例,所述允许值集合适用于所述滤波器的所有乘数系数。
[0051]
根据替代性实施例,所述乘数系数还划分为至少两组,将所述两组中的一组的乘数系数限制为所述允许值集合。例如,另一组或其它组的乘数系数可以取预定范围内的所有值,或者可以根据其它预定规则进行限制。更具体地,例如,允许所述两组中的另一组的乘数系数取由所述绝对值的预定最大值限定的范围内的所有值。
[0052]
根据实施例,图像的像素点集合是指视频图像的像素点集合。更具体地,所述装置可以用于分别对每个图像和每个像素适应性地确定所述乘数系数。
[0053]
根据本发明的另一特定方面,提供了一种对包括多个像素的图像的当前像素点集合进行编码的装置。所述装置包括:编码器和解码器,用于重建所述当前像素点集合;根据本发明所述第一方面的用于对所述重建像素点集合进行滤波的装置。
[0054]
根据实施例,所述编码装置还包括处理电路,所述处理电路用于:将乘数系数的值映射为二进制码字;将所述码字包括于码流中,以传输到解码装置。
[0055]
更具体地,所述码字的长度取决于不同乘数系数值的数量。换句话说,码字的数量与可能的滤波器系数值一样多。码字到值的映射(为一对一映射)可以是固定映射,也可以根据指示的边信息而改变。
[0056]
根据实施例,所述处理电路还用于:对所述滤波器的乘数系数执行预测;通过将实际确定的值与所述预测产生的预测值进行比较,来确定残差乘数系数。然后,将所述残差乘数系数映射为二进制码字。在这种情况下,可能还将预测控制信息包括于所述码流中,使得接收所述码流的解码装置了解所使用的预测方法,并且可以根据经编码的残差乘数系数重建所述滤波器的乘数系数。或者,可以预定义所述使用的预测方法,从而在所述编码器和解码器中以相同方式使用该预测方法,而无需任何传输的边信息。可能的预测方法可以包括但不限于使用预定义的滤波器预测值进行预测和根据先前信号发送的滤波器系数进行预测。由于表示实际滤波器系数与相应预测的滤波器系数之间的差值的残差滤波器系数的值的绝对值通常相比实际系数、码字的数量小,因此码字的大小更小,这另外减少了向所述解码器信号发送的信息。
[0057]
或者,可以将根据本发明所述第一方面确定的乘数系数映射为码字,以将码字包括于码流中,无需执行预测处理。
[0058]
根据本发明另一方面,提供了一种对包括多个像素的图像的当前编码像素点集合进行解码的装置。所述装置包括:解码器,用于重建所述当前像素点集合;根据本发明所述第一方面的装置,用于对所述重建像素点集合进行滤波。
[0059]
根据实施例,根据本发明所述第一方面的装置中的处理电路还用于:通过进行映射操作,根据包括于接收的码流中的二进制码字获得乘数系数。
[0060]
具体而言,所述获得的乘数系数可以是用于所述滤波的所述滤波器系数。或者,所述获得的乘数系数可以是残差乘数系数,其中,所述残差乘数系数表示实际系数值与根据预测方案预测的乘数系数之间的差值。所述预测方案可以由包括于所述接收的码流中的预测控制信息所指示。在这种情况下,所述处理电路还用于通过根据所述获得的残差乘数系数和所述预测控制信息重建所述滤波器系数的值的方式来确定所述滤波器系数的值。或者,可以预定义所述预测方案(预测方法),从而在所述编码器和解码器中以相同方式使用所述预测方案,不需要任何传输的预测控制信息。然后,所述处理电路通过根据所述获得的残差乘数系数重建所述滤波器系数的值的方式来确定所述滤波器系数的值。
[0061]
根据实施例,所述处理电路进行的确定还包括:确定所述至少一个乘数系数的值是否位于所述允许值集合内,其中,所述至少一个乘数系数的值是通过所述映射操作直接从所述接收的码流中获得的,或者,是根据所述获得的残差乘数系数进行重建得到的;如果所述至少一个乘数系数的值不位于所述允许值集合内,将所述至少一个乘数系数的值转换为位于所述允许值集合内的最接近值。
[0062]
由此,保证了对重建图像像素点使用的滤波器系数遵守本发明提供的规则。
[0063]
附图和以下描述对一个或多个实施例的细节进行了阐述。其它特征、目的和优点在描述、附图和权利要求中是显而易见的。
附图说明
[0064]
下文将参考所附附图和示意图更加详细地描述本发明实施例,其中:
[0065]
图1是用于实现本发明实施例的视频编码系统的一个示例的框图;
[0066]
图2是用于实现本发明实施例的视频编码器的一个示例的框图;
[0067]
图3为用于实现本发明实施例的视频解码器的一个示例性结构的框图;
[0068]
图4示出了可以应用本发明的滤波器内核的一个示例;
[0069]
图5示出了可以应用本发明的自适应滤波器的典型滤波器形状的示例;
[0070]
图6示出了作为比较示例的用于插值滤波的多个固定滤波器的一个示例;
[0071]
图7示出了本发明实施例的一个特定实现示例;
[0072]
图8a示出了用于编码和指示滤波器系数的示例性编码器侧处理;
[0073]
图8b示出了用于解码和重建滤波器系数的示例性解码器侧处理;
[0074]
图9示出了本发明另一实施例的特定实现示例;
[0075]
图10示出了本发明又一实施例的特定实现示例并用于说明通过本发明获得的优势;
[0076]
图11示出了可以应用本发明的滤波器内核的又一示例。
[0077]
在附图中,相同参考符号是指相同特征或至少在功能上等效的特征。
具体实施方式
[0078]
以下描述中,参考形成本发明一部分并以说明的方式示出本发明实施例的具体方面或可以使用本发明实施例的具体方面的附图。应理解,本发明实施例可以用于其它方面,并且包括未在附图中示出的结构或逻辑变化。因此,以下详细描述并不构成任何限定,本发明的范围由所附权利要求书界定。
[0079]
例如,应理解,与描述方法有关的公开内容对于用于执行所述方法的对应设备或系统也同样适用,反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括一个或多个功能单元等单元来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或多个单元分别执行多个步骤中的一个或多个),即使附图中未明确描述或说明这样的一个或多个单元。另一方面,例如,如果根据一个或多个功能单元等单元来描述具体装置,则对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,一个步骤执行一个或多个单元的功能,或多个步骤分别执行多个单元中的一个或多个单元的功能),即使图中未明确描述或说明这样的一个或多个步骤。此外,应理解,除非另有具体说
明,否则本文描述的各种示例性实施例和/或方面的特征可以相互组合。
[0080]
视频编码通常是指对构成视频或视频序列的图像序列的处理。在视频编码领域,术语“帧(frame)”与“图像(picture/image)”可以用作同义词。视频编码包括两部分:视频编码和视频解码。视频编码在源侧执行,通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(以便实现更高效的存储和/或传输)。视频解码在目的地侧执行,通常包括相对于编码器作逆处理,以重建视频图像。涉及视频图像(或通常称为图像,将在下文解释)的“编码”的实施例应理解为同时涉及视频图像的“编码”和“解码”。编码部分和解码部分的组合也称为编解码(codec)(编码和解码)。
[0081]
在无损视频编码情况下,可以重建原始视频图像,即重建的视频图像与原始视频图像具有相同的质量(假设存储或传输期间没有传输损耗或其它数据丢失)在有损视频编码情况下,通过量化等执行进一步压缩,来减少表示视频图像的数据量,而解码器侧无法完全重建视频图像,即重建的视频图像的质量比原始视频图像的质量较低或较差。
[0082]
自h.261以来的几个视频编码标准属于“有损混合视频编解码器”组(即,将像素点域中的空间预测和时间预测与变换域中用于进行量化的2d变换编码结合)。视频序列中的每个图像通常分割成不重叠块集合,通常在块级上执行编码。换句话说,在编码器侧,通常在块(视频块)级对视频进行处理(即编码),例如,通过空间(帧内)预测和时间(帧间) 预测来生成预测块;从当前块(当前处理的块/待处理的块)中减去预测块,得到残差块;在变换域中对残差块进行变换并量化,以减少待传输(压缩)的数据量,而在解码器侧,对经编码或压缩的块进行相对于编码器的逆处理,以重建当前块进行表示。另外,编码器和解码器处理步骤相同,使得编码器和解码器生成相同的预测(例如,帧内预测和帧间预测)和 /或重建,以对后续块进行处理(即编码)。
[0083]
由于视频图像处理(也称为移动图像处理)和静止图像处理(术语“处理”包括编码) 共享许多概念和技术或手段,所以在下文中,术语“图像(picture/image)”以及术语“图像数据(picture data/image data)”用于指代视频序列中的视频图像(如上文所述)和/或静止图像,以避免在不需要时对视频图像和静止图像进行不必要的重复和区分。如果上述描述仅仅是指静止图像,应使用术语“静止图像”。
[0084]
在编码器100的以下实施例中,根据图1至图3(在根据图7至图9更详细地描述本发明实施例之前)描述解码器200和编码系统300。
[0085]
图1是编码系统300(例如,图像编码系统300)的一个实施例的概念性或示意性框图。编码系统300包括源设备310,用于将编码数据330(例如,编码图像330)提供给目的地设备320等,以便对编码数据330进行解码。
[0086]
源设备310包括编码器100或编码单元100,并且可以另外(即,可选地)包括图像源 312、预处理单元314(例如,图像预处理单元314)以及通信接口或通信单元318。
[0087]
图像源312可以包括或者可以是任何类型的图像捕获设备,用于捕获真实世界图像等;和/或任何类型的图像生成设备,例如,用于生成计算机动画图像的计算机图形处理器;或者任何类型的设备,用于获得和/或提供真实世界图像、计算机动画图像(例如,屏幕内容、虚拟现实(virtual reality,vr)图像)和/或其任何组合(例如,增强现实(augmentedreality,ar)图像))。在下文中,除非另有其它具体的说明,所有这些类型的图像 (picture/image)和任何其它类型的图像(picture/image)都将称为“图像(picture/
image)”或“图像数据(picture data/image data)”,而之前关于包括“视频图像”和“静止图像”的术语“图像(picture/image)”的解释仍然适用,除非另有明确的不同规定。
[0088]
(数字)图像是或者可以看作具有强度值的像素点组成的二维数组或矩阵。数组中的像素点也可以称为像素(pixel或pel)(图像元素的简称)。数组或图像在在水平方向和垂直方向(或轴)上的像素点的数量限定了图像的大小和/或分辨率。为了表示颜色,通常采用三种颜色分量,即图像可以表示为或者可以包括三个像素点数组。在rbg格式或颜色空间中,图像包括对应的红色、绿色和蓝色像素点数组。但是,在视频编码中,每个像素通常由亮度 /色度格式表示或者在颜色空间中表示,例如,ycbcr,包括通过y指示的亮度分量(有时也用l指示)以及通过cb和cr指示的两个色度分量。亮度(luminance,简写为luma)分量y表示亮度或灰度级强度(例如,像灰度图像),而两个色度(chrominance,简写为 chroma)分量cb和cr表示色度或颜色信息分量。因此,ycbcr格式的图像包括由亮度像素点值(y)构成的亮度像素点数组和两个由色度值(cb和cr)构成的色度像素点数组。 rgb格式的图像可以转换或变换为ycbcr格式,反之亦然。该过程也称为颜色变换或颜色转换。如果图像是黑白的,则该图像可以只包括亮度像素点数组。
[0089]
例如,图像源312可以是用于捕获图像的摄像机、包括或存储之前捕获或生成的图像的存储器(例如,图像存储器),和/或任何类型的用于获得或接收图像的(内部或外部)接口。例如,所述摄像机可以是集成在源设备中的本地或集成摄像机,所述存储器可以是集成在源设备等中的本地或集成存储器。例如,所述接口可以是从外部视频源接收图像的外部接口,其中,所述外部视频源为类似于摄像机、外部存储器或外部图像生成设备(例如,外部计算机图形处理器、计算机或服务器)的外部图像捕获设备等等。所述接口可以是根据任何专有或标准化接口协议的任何类型的接口,例如,有线接口或无线接口、光接口。所述用于获得图像数据313的接口可以与通信接口318为同一接口或者可以是通信接口318的一部分。
[0090]
每个设备内各单元之间的接口包括电缆连接、usb接口、源设备310与目标设备320之间的通信接口318和322包括电缆连接、usb接口、无线接口。
[0091]
为了区分预处理单元314和预处理单元314执行的处理,图像或图像数据313也可以称为原始图像或原始图像数据313。
[0092]
预处理单元314用于接收(原始)图像数据313并对图像数据313进行预处理,以得到预处理图像315或预处理图像数据315。预处理单元314执行的预处理可以包括修剪、颜色格式转换(例如,从rgb转换为ycbcr)、调色或去噪等。
[0093]
编码器100用于接收预处理图像数据315并提供编码图像数据171(将根据图2等描述更多细节)。
[0094]
源设备310中的通信接口318可以用于接收编码图像数据171并将编码图像数据171直接传输到另一设备(例如,目的地设备320)或任何其它设备,以便进行存储或直接重建;或者用于分别在存储编码数据330和/或将编码数据330传输到另一设备(例如,目的地设备320)或任何其它设备之前,处理编码图像数据171,以便进行解码或存储。
[0095]
目的地设备320包括解码器200或解码单元200,并且可以另外(即,可选地)包括通信接口或通信单元322、后处理单元326和显示设备328。
[0096]
目的地设备320中的通信接口322用于直接从源设备310或从存储器(例如,编码图
像数据存储器)等任何其它源接收编码图像数据171或编码数据330。
[0097]
通信接口318和通信接口322可以用于经由源设备310与目的地设备320之间的包括光连接的直接通信链路(例如,直接有线或无线连接),或者经由任何类型的网络(例如,有线网络、无线网络或其任何组合)或者任何类型的私网和公网或者其任何类型的组合,传输或接收编码图像数据171或编码数据330。
[0098]
例如,通信接口318可以用于将编码图像数据171封装成合适的格式(例如,数据包),以便在通信链路或通信网络上进行传输,并且还可以用于执行数据丢失保护。
[0099]
例如,与通信接口318对应的通信接口322可以用于对编码数据330进行解封装,以得到编码图像数据171,并且还可以用于执行数据丢失保护和数据丢失恢复,例如,包括差错隐藏。
[0100]
通信接口318和通信接口322均可以配置为如图1中从源设备310指向目的地设备320 的编码图像数据330的箭头所指示的单向通信接口,或者配置为双向通信接口,并且可以用于发送和接收消息等,以建立连接,确认和/或重新发送包括图像数据的丢失或延迟数据,并交换与通信链路和/或数据传输(例如,编码图像数据传输)相关的任何其它信息,等等。
[0101]
解码器200用于接收编码图像数据171并提供解码图像数据231或解码图像231(将根据图9等描述更多细节)。
[0102]
目的地设备320中的后处理器326用于对解码图像数据231(例如,解码图像231)进行后处理,以得到后处理图像327等后处理图像数据327。例如,后处理单元326执行的后处理可以包括颜色格式转换(例如,从ycbcr转换为rgb)、调色、修剪或重采样,或任何其它处理,以便提供解码图像数据231供显示设备328等显示。
[0103]
目的地设备320中的显示设备328用于接收后处理图像数据327,以向用户或观看者等显示图像。显示设备328可以是或者可以包括任何类型的显示器(例如,集成或外部显示器 (display/monitor)),以表示重建图像。例如,显示器可以包括阴极射线管(cathode ray tube, crt)、液晶显示器(liquid crystal display,lcd)、等离子显示器、有机发光二极管 (organic light emitting diode,oled)显示器或任何其它类型的显示器(例如,投影仪、全息显示器、生成全息图的装置等)。
[0104]
尽管图1示出了源设备310和目的地设备320作为单独的设备,但是设备实施例还可以同时包括源设备310和目的地设备320或源设备310和目的地设备320的功能,源设备310 或对应功能以及目的设备320或对应功能。在这些实施例中,源设备310或对应功能以及目的地设备320或对应功能可以使用相同的硬件和/或软件或通过单独的硬件和/或软件或其任何组合来实现。
[0105]
根据描述,图1所示的源设备310和/或目的地设备320中的不同单元或功能的存在和划分可能根据实际设备和应用而有所不同,这对技术人员来说是显而易见的。
[0106]
在下文中,将提供编码系统300、源设备310和/或目的地设备320的一些非限制性示例。
[0107]
智能手机、平板电脑或具有集成显示器的手持式摄像机等各种电子产品可以看作是编码系统300的示例。这些电子产品包括显示设备328,其中大多数还包含一体化摄像机(即图像源312)。对一体化摄像机拍摄的图像数据进行处理并显示。所述处理可以包括对图
像数据进行内部编码和解码。另外,可以将编码图像数据存储在集成存储器中。
[0108]
或者,这些电子产品可以具有有线或无线接口,以从外部源(例如,互联网或外部摄像机)接收图像数据,或将编码图像数据传输到外部显示器或存储单元。
[0109]
另一方面,机顶盒不包含一体化摄像机或集成显示器,但对接收到的图像数据执行图像处理,以便在外部显示设备上显示。这种机顶盒可以由芯片组等体现。
[0110]
或者,类似机顶盒的设备可以包括在显示设备中,例如,具有集成显示器的电视机。
[0111]
另一个示例是不包括集成显示器的监控摄像机。这些监控摄像机表示源设备,具有将捕获和编码的图像数据传输到外部显示设备或外部存储设备的接口。
[0112]
相反,智能眼镜或3d眼镜等设备用于ar或vr等,表示目的地设备320。这些设备接收并显示编码图像数据。
[0113]
因此,图1所示的源设备310和目的地设备320仅仅是实现本发明的示例性实施例,且本发明实施例不限于图1所示的实施例。
[0114]
源设备310和目的地设备320可以包括多种设备中的任一种,包括任何类型的手持设备或固定设备,例如,笔记本(notebook/laptop)电脑、手机、智能手机、平板或平板计算机、摄像机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏机、视频流设备、广播接收器设备等。对于大规模专业编码和解码,源设备310和/或目的地设备320 还可以包括服务器和工作站,它们可包含在大型网络中。这些设备可以不使用或者可以使用任何类型的操作系统。
[0115]
编码器和编码方法
[0116]
图2示出了编码器100(例如,图像编码器100)的一个实施例的示意性/概念性框图。编码器100包括输入端102、残差计算单元104、变换单元106、量化单元108、反量化单元 110、逆变换单元112、重建单元114、缓冲器116、环路滤波器120、解码图像缓冲器 (decoded picture buffer,dpb)130、预测单元160、熵编码单元170和输出端172,其中,预测单元160包括帧间估计单元142、帧间预测单元144、帧内估计单元152、帧内预测单元154和模式选择单元162。图2所示的视频编码器100也可以称为混合视频编码器或根据混合视频编解码器的视频编码器。每个单元可以由处理器和非瞬时性存储器组成,以通过处理器执行存储在非瞬时性存储器中的代码来执行其处理步骤。
[0117]
例如,残差计算单元104、变换单元106、量化单元108和熵编码单元170形成编码器 100的前向信号路径,而例如,反量化单元110、逆变换单元112、重建单元114、缓冲器 116、环路滤波器120、解码图像缓冲器(decoded picture buffer,dpb)130、帧间预测单元 144和帧内预测单元154形成编码器后向信号路径,其中,编码器的后向信号路径对应于解码器的为了相同重建和预测提供逆处理的信号路径(参见图3中的解码器200)。
[0118]
编码器用于通过输入端102等接收图像101或图像101中的图像块103,其中,图像 101是形成视频或视频序列的一系列图像中的图像等。图像块103也可以称为当前图像块或待编码图像块,图像101也可以称为当前图像或待编码图像(特别是在视频编码中,为了将当前图像与其它图像区分开,其中,其它图像是同一视频序列中的之前编码和/或解码的图像等,同一视频序列也就是同样包括当前图像的视频序列)。
[0119]
分割
[0120]
编码器100的实施例可以包括分割单元(图2未示出),所述分割单元还可以称为图像分割单元等,用于将图像103分割成多个块(例如,类似于块103的块),通常分割成多个不重叠块。分割单元可以用于对视频序列中的所有图像使用相同的块大小和限定块大小的对应网格,或者用于改变图像或图像子集或图像组之间的块大小,并将每个图像分割成对应块。
[0121]
多个块中的每个块可以具有正方形尺寸或更一般的矩形尺寸。可能不会出现块为非矩形形状的图像区域。
[0122]
类似于图像101,块103同样是或可以看作是具有强度值(像素点值)的像素点组成的二维数组或矩阵,但是块103的尺寸小于图像101的尺寸。换句话说,块103可以包括一个像素点数组(例如,黑白图像101情况下的亮度数组)或三个像素点数组(例如,彩色图像 101情况下的一个亮度数组和两个色度数组)或任何其它数量和/或类型的数组等,取决于所采用的颜色格式。块103在水平方向和垂直方向(或轴)上的像素点的数量限定了块103的大小。
[0123]
图2所示的编码器100用于逐块对图像101进行编码。例如,对每个块103执行编码和预测。
[0124]
残差计算
[0125]
残差计算单元104用于通过以下方式等根据图像块103和预测块165来计算残差块105 (稍后详细介绍了预测块165):逐个像素点(逐个像素)从图像块103的像素点值中减去预测块165的像素点值,以得到像素点域中的残差块105。
[0126]
变换
[0127]
变换单元106用于对残差块105的像素点值进行空间频率变换或线性空间变换等变换 (例如,离散余弦变换(discrete cosine transform,dct)或离散正弦变换(discrete sinetransform,dst)),以得到变换域中的变换系数107。变换系数107也可以称为变换残差系数,表示变换域中的残差块105。
[0128]
变换单元106可以用于进行dct/dst整数化近似,例如,针对hevc/h.265指定的核心变换。与正交dct变换相比,这种整数化近似通常通过某一因子进行缩放。为了维持经过正变换和逆变换处理的残差块的范数,使用其它缩放因子作为变换过程的一部分。缩放因子通常是根据某些约束条件来选择的,例如,缩放因子是用于移位运算的2的幂、变换系数的位深度、准确性与实现成本之间的权衡等。例如,在解码器200侧,通过逆变换单元212 等为逆变换(以及在编码器100侧,通过逆变换单元112等为对应的逆变换)指定具体的缩放因子;相应地,可以在编码器100侧,通过变换单元106等为正向变换指定对应的缩放因子。
[0129]
量化
[0130]
量化单元108用于通过进行标量量化或矢量量化等方式对变换系数107进行量化,以得到量化变换系数109。量化系数109也可以称为量化残差系数109。例如,对于标量量化,可以进行不同的缩放来实现较细或较粗的量化。较小的量化步长对应于较细的量化,而较大的量化步长对应于较粗的量化。可以通过量化参数(quantization parameter,qp)指示合适的量化步长。例如,量化参数可以为预定义的适用量化步长集合的索引。例如,小的量化参数可以对应于精细量化(小的量化步长),大的量化参数可以对应于粗糙量化(大的量化步长),反之亦然。量化可以包括除以量化步长,而反量化单元110等执行的对应反量化可
以包括乘以量化步长。根据高效视频编码(high-efficiency video coding,hevc)的实施例可以用于使用量化参数来确定量化步长。通常,可以根据量化参数使用包含除法的方程式的定点近似来计算量化步长。量化和解量化可以引入其它缩放因子以恢复残差块的范数,由于在量化步长和量化参数的方程式的定点近似中使用的缩放,可能会修改残差块的范数。在一个示例性实现方式中,可以合并逆变换和反量化的缩放。或者,可以使用自定义量化表,在码流中等将量化表从编码器发送给解码器。量化是有损操作,其中,量化步长越大,损耗越大。
[0131]
编码器100(或量化单元108)的实施例可以用于通过对应的量化参数等方式输出包括量化方案和量化步长的量化设置,使得解码器200可以接收和进行对应的反量化。编码器 100(或量化单元108)的实施例可以用于直接输出或通过熵编码单元170或任何其它熵编码单元进行熵编码后输出量化方案和量化步长。
[0132]
反量化单元110用于通过以下方式等对量化系数进行量化单元108的反量化,以得到解量化系数111:根据或使用与量化单元108所使用的相同量化步长执行与量化单元108所执行的量化方案相反的方案。解量化系数111也可以称为解量化残差系数111,对应于变换系数108,但是由于量化造成损耗,解量化系数111通常与变换系数108不完全相同。
[0133]
逆变换单元112用于进行变换单元106进行的变换的逆变换,例如,逆离散余弦变换 (discrete cosine transform,dct)或逆离散正弦变换(discrete sine transform,dst),以得到像素点域中的逆变换块113。逆变换块113也可以称为逆变换解量化块113或逆变换残差块113。
[0134]
重建单元114用于通过以下方式等将逆变换块113和预测块165组合起来,以得到像素点域中的重建块115:以像素点为单位将解码残差块113的像素点值和预测块165的像素点值相加。
[0135]
缓冲单元116(或简称“缓冲器”116)(例如,列缓冲器116)用于缓冲或存储重建块和相应的像素点值,以进行帧内估计和/或帧内预测等。在其它实施例中,编码器可以用于使用存储在缓冲单元116中的未滤波重建块和/或相应的像素点值进行任何类型的估计和/或预测。
[0136]
可以配置编码器100的实施例,使得缓冲单元116不仅用于存储用于帧内估计152和/或帧内预测154的重建块115,而且还用于环路滤波单元120,和/或使得缓冲单元116和解码图像缓冲器130形成一个缓冲器,等等。其它实施例可以用于使用滤波块121和/或来自解码图像缓冲器130的块或像素点(图2未示出)作为帧内估计152和/或帧内预测154的输入或基础。
[0137]
环路滤波单元120(或简称“环路滤波器”120)用于通过使用去块样本自适应偏移 (sampleadaptive offset,sao)滤波器或其它滤波器(例如,锐化或平滑滤波器或协同滤波器)等方式对重建块115进行滤波,以得到滤波块121。滤波块121也可以称为滤波重建块 121。
[0138]
环路滤波单元120的实施例可以包括滤波分析单元和实际滤波单元,其中,滤波分析单元用于为实际滤波器确定环路滤波器参数。滤波分析单元可以用于将固定的预定滤波器参数应用于实际环路滤波器,从预定滤波器参数集合中自适应地选择滤波器参数,或者自适应地为实际环路滤波器计算滤波器参数。
或取决于是否使用像素插值(例如,二分之一/半像素插值和/或四分之一像素插值)。
[0150]
除上述预测模式外,还可以使用跳过模式和/或直接模式。
[0151]
预测单元160还可以用于通过以下方式等将块103分割成较小的块或子块:迭代使用四叉树(quad-tree,qt)分割、二叉树(binary-tree,bt)分割或三叉树(triple-tree,tt)或其任何组合;并且用于对块或子块中的每一个执行预测等,其中,模式选择包括选择分割块 103的树结构以及选择块或子块中的每一个使用的预测模式。
[0152]
帧间估计单元142,也称为帧间估计单元142,用于接收或获得图像块103(当前图像 101的当前图像块103)和解码图像231,或者至少一个或多个之前的重建块(例如,一个或多个其它/不同的之前解码的图像231的重建块),以进行帧间估计(inter estimation/interpicture estimation)。例如,视频序列可以包括当前图像和之前的解码图像231,或换句话说,当前图像和之前的解码图像231可以是一系列构成视频序列中的图像的一部分或者可以形成一系列构成视频序列的图像。
[0153]
例如,编码器100可以用于从多个其它图像中的相同或不同图像的多个参考块中获得参考块,并将参考图像(或参考图像索引等)和/或参考块的位置(x坐标和y坐标)与当前块的位置之间的偏移(空间偏移)作为帧间预测参数143提供给帧间预测单元144。这种偏移也称为运动矢量(motion vector,mv)。帧间估计也称为运动估计(motion estimation,me),帧间预测也称为运动预测(motion prediction,mp)。
[0154]
帧间预测单元144用于获得或接收帧间预测参数143,并根据或使用帧间预测参数143 执行帧间预测,以得到帧间预测块145。
[0155]
尽管图2示出了两个不同的单元(或步骤)用于帧间编码,即帧间估计单元142和帧间预测单元152,但是这两种功能可以通过以下方式等作为一个整体来执行(帧间估计通常要求/包括计算帧间预测块,即上述或一“类”帧间预测152):通过迭代测试可能的帧间预测模式中的所有可能帧间预测模式或预定子集,同时存储当前最佳的帧间预测模式和相应的帧间预测块,并将当前最佳的帧间预测模式和相应的帧间预测块作为(最终的)帧间预测参数 143和帧间预测块145,而不用再执行一次帧间预测144。
[0156]
帧内估计单元152用于获得或接收图像块103(当前图像块)以及同一图像的一个或多个之前的重建块(例如,重建相邻块),以进行帧内估计。例如,编码器100可以用于从多个帧内预测模式中选择(获得/确定)帧内预测模式,并将帧内预测模式作为帧内预测参数 153提供给帧内预测单元154。
[0157]
编码器100的实施例可以用于根据最小残差(例如,帧内预测模式提供与当前图像块 103最相似的预测块155)或最小率失真等优化标准选择帧内预测模式。
[0158]
帧内预测单元154用于根据所选择的帧内预测模式153等帧内预测参数153确定帧内预测块155。
[0159]
尽管图2示出了两个不同的单元(或步骤)用于帧内编码,即帧内估计单元152和帧内预测单元154,但是这两种功能可以通过以下方式等作为一个整体来执行(帧内估计通常要求/包括计算帧内预测块,即上述或一“类”帧内预测154):通过迭代测试可能的帧内预测模式中的所有可能帧内预测模式或预定子集,同时存储当前最佳的帧内预测模式和相应的帧内预测块,并将当前最佳的帧内预测模式和相应的帧内预测块作为(最终的)帧内预测参数 153和帧内预测块155,而不用再次执行一次帧内预测154。
[0160]
熵编码单元170用于单独或联合(或不涉及)对量化残差系数109、帧间预测参数143、帧内预测参数153和/或环路滤波器参数执行熵编码算法或方案(例如,可变长度编码 (variable length coding,vlc)方案、上下文自适应vlc(context adaptive vlc,calvc) 方案、算术编码方案、上下文自适应二进制算术编码(context adaptive binary arithmeticcoding,cabac)),以得到编码图像数据171。输出端172可以使用编码码流171的形式等输出编码图像数据171。
[0161]
解码器
[0162]
图3示出了示例性视频解码器200。视频解码器200用于接收例如由编码器100编码的编码图像数据(例如,编码码流)171,以得到解码图像231。
[0163]
解码器200包括输入端202、熵解码单元204、反量化单元210、逆变换单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器230、包括帧间预测单元244和帧内预测单元254的预测单元260、模式选择单元262和输出端232。
[0164]
熵解码单元204用于对编码图像数据171执行熵解码,以得到量化系数209和/或经解码的编码参数(图3未示出)(例如,(经解码的)帧间预测参数143、帧内预测参数153和/或环路滤波器参数中的任一个或全部)等。
[0165]
在解码器200、反量化单元210、逆变换单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器230的实施例中,预测单元260和模式选择单元262用于执行编码器100(以及相应的功能单元)的逆处理,以对编码图像数据171进行解码。
[0166]
具体而言,反量化单元210在功能上可以与反量化单元110相同,逆变换单元212在功能上可以与逆变换单元112相同,重建单元214在功能上可以与重建单元114相同,缓冲器 216在功能上可以与缓冲器116相同,环路滤波器220在功能上可以与环路滤波器120相同 (关于实际环路滤波器,由于环路滤波器220通常不包括滤波分析单元来根据原始图像101 或块103确定滤波器参数,而是从熵解码单元204等(显式地或隐式地)接收或获得用于编码的滤波器参数),解码图像缓冲器230在功能上可以与解码图像缓冲器130相同。
[0167]
预测单元260可以包括帧间预测单元244和帧内预测单元254,其中,帧间预测单元 244在功能上可以与帧间预测单元144相同,帧内预测单元254在功能上可以与帧内预测单元154相同。预测单元260和模式选择单元262通常用于执行块预测和/或仅从编码数据171 中获得预测块265(无需原始图像101的任何其它信息)以及用于从熵解码单元204等(显式地或隐式地)接收或获得预测参数143或153和/或关于所选预测模式的信息。
[0168]
解码器200用于经由输出端232等输出解码图像231,以向用户呈现或供用户观看。
[0169]
再次参考图1,从解码器200输出的解码图像231可以在后处理器326中进行后处理。由此产生的后处理图像327可以传输到内部或外部显示设备328并显示。
[0170]
实施例的详细内容
[0171]
本发明对自适应乘法滤波器的滤波器系数所能够取的值进行限制,从而简化了乘法运算。使用具有自适应乘数系数的滤波器对一个图像的一组信号像素点进行滤波,其中,乘数系数用整数表示。假设系数c的绝对值的最大值为n,则n的二进制表示需要l=ceil(log2(n))个二进制数位。换句话说,使用l个二进制数位可以表示从0(l个“0”)到2
l

1(l个“1”) 的绝对系数值(系数的符号由单独的符号位表示,此处不讨论)。根据本发明的特定方法,对这组值进行限制,使得系数c可以取的任何值最多包括二进制表示中的p个“1”(“1”),
其中,p《l。例如,所有“1”(l个“1”)的情况排除在外。
[0172]
如下文所示,允许的“1”的数量p越小,效率增益和滤波操作的性能越好。例如,如果系数c可以取的任何值只包括单个“1”,即最多一个“1”,则可以实现最佳效率增益。
[0173]
在下文中,将详细描述实现本发明的特定实施例。
[0174]
需要说明的是,下文给出的参数的示例性值仅仅出于说明目的,技术人员了解,可以在所附权利要求书的范围内的任何其它可能值内替换这些参数值。
[0175]
通常,使用有限精度实现滤波器系数。使用l个位连同可选符号位表示滤波器系数。位的数量l取决于系数的最大绝对值。具体地,假设系数c的绝对值的最大值为n,则n的二进制表示需要l=ceil(log2(n))个二进制数位。
[0176]
ceil(x)函数,也表示为或ceiling(x),将x映射为大于或等于x的最小整数。
[0177]
根据本发明的第一个示例性实施例,滤波器系数的l个位(即排除符号位)中最多有一位可以同时为“1”(“1”)。不允许有其它可能性。
[0178]
例如:
[0179]
假设l=6,并且用1位(最左位)表示系数的符号。
[0180]
允许使用以下滤波器系数等:0(0000000)、1(0000001)、

1(1000001)、2 (0000010)、

2(1000010)、4(0000100)、

4(1000100)、8(0001000)、

8(1001000)、 16(0010000)
……–
32(1100000)。
[0181]
不允许使用以下滤波器系数等:3(0000011)、

15(1001111)、31(0011111)
……
[0182]
在这种情况下,由于所述限制允许乘法可以实现为单个位移位运算,因此获得了优势。
[0183]
位移位运算在数学上可以表示为:f(x,m)=x
×2m
,其中,m为大于等于0的整数。根据上述实施例的概括,滤波器系数的l个位中最多有m个位可以同时为“1”。不允许有其它可能性。
[0184]
例如:
[0185]
假设l=6,m=2,并且用1位表示系数的符号。
[0186]
允许使用以下滤波器系数等:0(0000000)、3(0000011)、9(0001001)、

4 (1000100)、

9(1001001)、18(0010010)、33(0100001)
……
[0187]
不允许使用以下滤波器系数等:7(0000111)、

19(1010011)、31(0011111)
……
[0188]
在这种情况下,所述限制允许乘法可以通过两个位移位和一个加法运算来实现。
[0189]
在上述更一般的情况下,在m《l的情况下,由于所述限制允许乘法通过m位移位和 m

1次加法运算实现,因此获得了优势。
[0190]
在上述示例中,假设自适应滤波器的乘法的所有滤波器系数使用了限制的绝对值集合。
[0191]
在下文中,将参考图7描述更复杂的示例性实施例,其中,使用了根据本发明的限制,但没有应用于所涉及的滤波器的所有滤波器系数。
[0192]
在该示例中,在第一步骤中,将系数分成两组。在图中,第一组对应滤波器中心部分的空心圆指示的系数位置,第二组对应图中的滤波器外围部分的实心黑圆指示的系数位置。
[0193]
第一组中的滤波器系数可以取预定范围内的任意值。在所示示例中,假设所述范
围对应集合“s1”,其中,s1=[

511
……
511]。这对应于l=9的总位数(不包括符号位)。
[0194]
第二组中的滤波器系数可以取集合“s2”中的任意值,其中,“s2”是s1的子集。更具体地,在一个示例中,集合s2定义为s2=[

32,

16,

8,

4,

2,

1,0,1,2,4,8, 16,32]。相应地,集合s2中的允许值被限制为那些可以用二进制表示中的单个“1”表示的值。此外,最大绝对允许值被限制为32,即还假设数量l被限制为l=6。通常,需要说明的是,可以针对每个组单独和不同地设置数量l。此外,允许值集合的具体分组和定义可以随图像(帧)的不同而变化。或者,对于不同的滤波器形状(如图5所述,5
×
5菱形、 7
×
7菱形、9
×
9菱形),集合的分组和定义可以不同。或者,分组和定义可以是预定义的。
[0195]
在本示例中,优势在于,集合s2采用1位移位而不是9位乘法。
[0196]
在编码器处,必须将相应的数据包括于码流中并指示给解码器,从而在解码器处也能够正确确定滤波器系数。当然,使用限制的允许系数值集合会减少信令开销,使得编码更有效,这是因为表示将在码流中指示的系数需要更少的位。
[0197]
更具体地,需要对编码器使用的滤波器系数的值进行编码并传输给解码器。在编码器侧,经由映射表或映射函数将滤波器系数的值转换为二进制码字(从滤波器值转换为码字)。为了正确解析滤波器系数,必须在解码器中进行相同的映射操作(从码字映射为滤波器系数值)。
[0198]
s1和s2的映射函数或映射表可能不同。下文给出了滤波器系数集合s1和s2的示例性映射操作。
[0199]
在下文示例中,s1由{0,1
……
511}给出,s2由{0,2,4,8,16,32}给出(这里只考虑绝对值)。
[0200][0201][0202]
需要在编码器和解码器中执行正向(在编码器中)和反向(在解码器中)映射操作,从而使解码器能够正确解析滤波器系数值。在上文示例中,由于s2中不同值的数量要少得多,使用s1的映射来表示s2滤波器系数是浪费的,所以s2和s1的滤波器系数映射操作是不同的。因此,本发明会减少信令开销,使得编码更有效,这是因为表示要在码流中指示的系数需要更少的位。
[0203]
在下文中,将结合图8给出指示滤波器系数的概述。图8a示出了在编码器侧进行的处理,图8b示出了在解码器侧进行的处理。
[0204]
在编码器中,如通过本发明的特定方法进行确定一样,根据允许系数值确定要用于重建像素点的滤波器系数(步骤s80)。
[0205]
使用确定的滤波器系数对重建图像像素点进行滤波(步骤s82)。根据本发明,用于重建图像像素点的滤波器系数需要遵守根据本发明阐述的规则。
[0206]
以下预测滤波器系数的步骤(步骤s84)是可选的。可以可选地进行滤波器系数预测,以减少要指示给解码器的信息。可能的预测方法是使用预定义的滤波器预测值进行预测和根据先前指示的滤波器系数进行预测。然而,预测方法不限于这里通过示例给出的这些方法,可以使用熟练人员了解的任何合适的预测方法。
[0207]
在以下步骤(s86)中,将残差系数映射为二进制码字。由于上述预测步骤s84为可选步骤,因此,需要说明的是,可以直接对在步骤s80中确定的滤波器系数进行映射。
[0208]
更具体地,每个整数值滤波器系数(滤波器系数残差)在包括于码流中之前转换为二进制码字。存在和滤波器系数值(滤波器系数残差值)一样多的码字。码字到值的映射(为一对一映射)可以是固定映射,也可以根据指示的边信息而改变。
[0209]
在最后步骤s88中,将二值化(可选地,残差)滤波器系数(即滤波器系数映射为的码字)包括于码流中。在步骤s84中执行预测的情况下,还需要生成预测控制信息并将所述预测控制信息包括于码流中,以向解码器指示关于预测处理的必要信息,从而能够执行重建。
[0210]
通常,按相反的顺序在解码器中进行在编码器中进行的操作。下面参考图8b对此进行更详细论述。
[0211]
在初始步骤s90中,解析接收的码流。由此得到的二值化滤波器系数(即传输码字)可选地表示残差滤波器系数(如果在编码器侧进行预测)。这通过从解析的码流中获得的预测控制信息来指示。
[0212]
在任何情况下,在步骤s92中,通过逆映射流程(与编码器相比)将二进制码字映射为滤波器系数(或残差滤波器系数)。
[0213]
因此,在解码器侧确定(重建)滤波器系数(步骤s94)。如果进行了预测,使得步骤 s92产生的滤波器系数是残差滤波器系数,则重建还包括执行预测控制信息所指示的预测,并将预测结果包括于残差滤波器系数中,以获得重建滤波器系数。
[0214]
在重建滤波器系数(如果适用,通过合并预测值信息和滤波器残差来重建)之后,将滤波器系数应用于重建图像像素点(步骤s96)。
[0215]
根据本发明,应用于重建图像像素点的滤波器系数需要遵守根据本发明定义的规则。
[0216]
因此,如果重建(特别是,合并预测结果和残差结果)产生的滤波器系数不具有根据本发明规则允许的滤波器系数值(滤波器系数值不位于允许值集合中),则滤波器系数的重建过程还包括取整操作。具体地,取整操作可以将输入的滤波系数值转换为最接近的允许系数值。
[0217]
如果进行了滤波器系数预测,则通过添加预测结果(“预测值”)和残差滤波器系数来获得用于对重建图像像素点进行滤波的滤波器系数(如前面段落从编码器和解码器角度
所论述)。显然,残差滤波器系数可能不存在(等于0),特别是在预测接近完美(待预测滤波器系数与预测值非常相似)时。在这种情况下,根据本发明,适用以下2个选项之一:
[0218]
1.通过预测获得的系数值需要遵守根据本发明定义的规则。例如,在根据预定义滤波器进行预测的情况下,预定义滤波器的滤波器系数需要遵守根据本发明定义的规则。
[0219]
2.需要将预测之后获得的滤波器系数取整为最接近的允许系数值。
[0220]
还需要说明的是,为了简单起见这里已经解释了划分为两个组,但是也可以有两个以上组,其中,根据本发明确定至少一组的允许值集合,即只包括预定个二进制数位内的有限个“1”。
[0221]
例如,图9示出了将滤波器系数划分为三组的情况。
[0222]
靠近滤波器内核的中心放置的第一组系数具有集合s1=[

511
……
511]中的允许滤波器系数值。
[0223]
第二组滤波器系数位于内核外围,用虚线圆指示,允许滤波器系数值位于修改的限制集合s2内,其中,s2在这里为s2=[

128,

64,

32,

16,

8,

4,

2,

1,0,1,2,4,8, 16,32,64,128]。这是可以用l=8个二进制数位表示,只有单个“1”的所有系数值的集合。
[0224]
滤波器系数的第三组位于第一组与第二组之间,用实心圆指示,允许滤波器系数值位于另一限制集合s3内,其中,
[0225]
s3=[

64,

48,

40
……
0,1,2,3,4,5,6,8,9,10,12,16,17,18,20,24,32,33,34,36,40,48,64]。
[0226]
换句话说,集合s3是可以用l=7个二进制数位表示的所有系数的集合的一种示例,其中,在系数的绝对值中,最多两个位是“1”,并且使用最大绝对值设置为64的附加限制。 (另外,例如,也应当允许绝对值96,因为它可以用7个二进制数位中的两个前导“1”来表示。)
[0227]
在下文中,本发明的特别优势将通过图10中示出的另一个示例性实施例来描述。
[0228]
在图10的示例中,以与图7相同的方式进行分组。
[0229]
第一组中的滤波器系数可以取具有9位全范围和符号位的任何值,即上述集合s1=[
–ꢀ
511
……
511]。
[0230]
第二组中的滤波器系数可以取限制值集合s2,其中,s2在这里为s2=[

128,

64,

32,

16,

8,

4,

2,

1,0,1,2,4,8,16,32,64,128]。这对应于那些可以用二进制表示中的单个“1”表示的值。此外,最大绝对允许值被限制为128,即还假设数量l被限制为l=8。
[0231]
换句话说,滤波器大小对应于图4中所示的大小,即9
×
9菱形滤波器。如背景部分所指出,需要传统所需的9位滤波器系数的41次相乘。由于一次相乘相当于8次二进制相加,如背景部分所述,因此每个像素的加法运算数量为48
×
8=328次加法运算。
[0232]
根据本发明,外围28个系数(即第二组中的系数)可以实现为单个位移位运算。位移位运算的实现在硬件上不复杂,因此在计算中可以省略。
[0233]
9位系数的13次乘法运算相当于每个像素进行13
×
8=104次加法运算。因此,每个像素的运算数量减少了68%。
[0234]
上述数量是粗略估计,复杂度减少的精确值取决于实际实现方式。
[0235]
在下文中,解释了使用至少两个系数组的实现方式的另一优势。
[0236]
根据本发明,并非对所有滤波器系数都进行粗糙量化,第一组中的滤波器系数具
有较细量化。
[0237]
通常,滤波器系数的粗糙量化会造成编码损耗。然而,允许第一组滤波器系数取大集合的值可以用于由编码器补偿编码损耗。
[0238]
可能的编码器实现方式如下。在以下描述中,使用的滤波器系数标签如图11所示,其可能不同于先前结合其它附图使用的标签:
[0239]
步骤1:假设对系数值没有限制,使用最小二乘法来导出所有滤波器系数(c0……c20
)。
[0240]
步骤2:通过将系数(c7……c20
)取整为最接近的允许值来施加限制。
[0241]
本步骤在滤波器系数中引入量化噪声,从而降低编码增益。
[0242]
步骤3:重新估计自由选择的滤波器系数(c0……
c6),以补偿量化误差。在第三步骤中可以恢复在步骤2中引入的大部分编码损耗。
[0243]
更详细地:
[0244]
在第一步骤中,针对41抽头滤波器(具有21个唯一系数)求解以下方程式:
[0245][0246]
上述方程式称为最小二乘方程式,用于在编码器中求解滤波器系数c
x

[0247]
x
x,y
项是r(i k,j l)*r(i m,j n)的预期值,表示滤波之前2个重建像素点之间的相关性。根据待使用的滤波器形状来选择指数k、l、m和n。
[0248]
p
x
项表示r(i k,j l)*o(i,j)的预期值。
[0249]
在第二步骤中,对于滤波器系数c7至c
20
,寻找满足如下限制的最接近近似系数:
[0250][0251]
系数c7’
至c
20’遵守本发明规定的规则。请注意,上述函数f()将量化噪声引入先前通过求解最小二乘方程获得的滤波器系数c7至c
20

[0252]
预期第二步中引入的量化噪声会降低滤波操作的性能。滤波性能通常由峰值信噪比 (peak signal-to-noise ratio,psnr)等指标来衡量,因此,在步骤2之后,将降低滤波图像的psnr。
[0253]
在第三步骤中,针对13抽头滤波器(具有7个唯一系数)求解以下方程式:
[0254][0255]
在第三步骤中,考虑到在第二步骤中引入的量化噪声,再次计算滤波系数c0至c7。第三步骤有利地缓解了由于执行步骤2而导致的滤波性能降低。
[0256]
应注意,通常,使用自适应乘性滤波器系数不限于对重建图像像素点进行滤波操作。如图2和图3中所述,重建块通常对应于在合并逆变换块和预测块之后获得的图像块。对
本领域技术人员显而易见的是,还可以在编码和解码操作的其它步骤处使用自适应滤波器系数对预测块(265、165)、逆变换块(213、113)、量化系数(209、109)、解量化系数(111、 211)或解码图像(231)等进行滤波操作。在这种情况下,本发明适用于滤波操作的滤波器系数。
[0257]
总之,本发明涉及一种用于使用自适应乘法滤波器对重建图像,特别是视频图像进行滤波的改进装置和方法。通过将滤波器系数的允许值限制到那些只有二进制表示的有限个“1”的滤波器系数,提高了滤波操作的效率。
[0258]
需要说明的是,本说明书提供了图像(帧)的解释,但在隔行扫描图像信号的情况下,字段替代图像。
[0259]
尽管已主要根据视频编码描述了本发明实施例,但需要说明的是,编码器100和解码器 200(相应地,系统300)的实施例还可以用于静止图像处理或编码,即在视频编码中独立于任何之前或连续的图像的单个图像的处理或编码。通常,如果图像处理编码限于单个图像 101的情况下,则只有帧间估计142、帧间预测144和244不可用。视频编码器100和视频解码器200的大部分(如果不是全部的话)其它功能(也称为手段或技术)可以同样用于静止图像,这些功能包括分割、变换(缩放)106、量化108、反量化110、逆变换112、帧内估计142、帧内预测154、254和/或环路滤波120、220以及熵编码170和熵解码204等。
[0260]
除非另有明确说明,否则凡有实施例和描述提及术语“存储器”,术语“存储器”应被理解和/或应包括磁盘、光盘、固态驱动器(solid state drive,ssd)、只读存储器(read
‑ꢀ
only memory,rom)、随机存取存储器(random access memory,ram)、usb闪存驱动器或任何其他适合类型的存储器。
[0261]
除非另有明确说明,否则凡有实施例和描述提及术语“网络”,术语“网络”应被理解和/或应包括任何类型的无线或有线网络,如局域网(local area network,lan)、无线局域网(wireless lan,wlan)、广域网(wide area network,wan)、以太网、互联网、移动网络等。
[0262]
本领域技术人员将理解,各种图(方法和装置)中的“步骤”(“单元”或“模块”)表示或描述本发明实施例的功能(而不一定是硬件或软件中的各个“单元”),因此同等地描述装置实施例以及方法实施例的功能或特征(单元等同步骤)。
[0263]
术语“单元”仅仅是用于说明编码器/解码器的实施例的功能,并非旨在限制本发明。
[0264]
在本技术中提供若干实施例中,应理解,所公开的系统、装置和方法可通过其它方式实现。例如,上述装置实施例仅仅是示例性的。例如,单元分割仅仅是逻辑功能分割,实际实现时可以是另一种分割。例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0265]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0266]
另外,本发明实施例中的功能单元可集成到一个处理单元中,或每个单元可物理上单独存在,或两个或更多单元可集成到一个单元中。
[0267]
本发明实施例还可以包括一种装置,例如,编码器和/或解码器,所述装置包括处理电路,用于执行本文描述的任何方法和/或过程。
[0268]
编码器100和/或解码器200的实施例可以实现为硬件、固件、软件或其任何组合。例如,编码器/编码或解码器/解码的功能可以由处理电路执行,无论是否有固件或软件,例如,处理器、微控制器、数字信号处理器(digital signal processor,dsp)、现场可编程门阵列 (field programmable gate array,fpga)、专用集成电路(application-specific integrated circuit, asic)等。
[0269]
编码器100(和相应的编码方法100)和/或解码器200(和相应的解码方法200)的功能可以通过存储在计算机可读介质上的程序指令来实现。所述程序指令在执行时使得处理电路、计算机、处理器等执行编码和/或解码方法的步骤。所述计算机可读介质可以是存储所述程序的任何介质,包括非瞬时性存储介质,例如,蓝光磁盘、dvd、cd、usb(闪存) 驱动器、硬盘、经由网络可用的服务器存储等。
[0270]
本发明实施例包括或者是一种包含程序代码的计算机程序。所述程序代码在计算机上执行时用于执行本文描述的任一方法。
[0271]
本发明实施例包括或者是一种包含程序代码的计算机可读介质。所述程序代码在由处理器执行时,使得计算机系统执行本文描述的任一方法。
[0272]
本发明的实施例包括或是执行本文描述的任一方法的芯片组。
[0273]
参考符号列表
[0274]
100
ꢀꢀꢀꢀ
编码器
[0275]
102
ꢀꢀꢀꢀ
输入端(例如,输入端口、输入接口)
[0276]
103
ꢀꢀꢀꢀ
图像块
[0277]
104
ꢀꢀꢀꢀ
残差计算[单元或步骤]
[0278]
105
ꢀꢀꢀꢀ
残差块
[0279]
106
ꢀꢀꢀꢀ
变换(例如,还包括缩放)[单元或步骤]
[0280]
107
ꢀꢀꢀꢀ
变换系数
[0281]
108
ꢀꢀꢀꢀ
量化[单元或步骤]
[0282]
109
ꢀꢀꢀꢀ
量化系数
[0283]
110
ꢀꢀꢀꢀ
反量化[单元或步骤]
[0284]
111
ꢀꢀꢀꢀ
解量化系数
[0285]
112
ꢀꢀꢀꢀ
逆变换(例如,还包括缩放)[单元或步骤]
[0286]
113
ꢀꢀꢀꢀ
逆变换块
[0287]
114
ꢀꢀꢀꢀ
重建[单元或步骤]
[0288]
115
ꢀꢀꢀꢀ
重建块
[0289]
116
ꢀꢀꢀꢀ
(列)缓冲器[单元或步骤]
[0290]
117
ꢀꢀꢀꢀ
参考像素点
[0291]
120
ꢀꢀꢀꢀꢀ
环路滤波器[单元或步骤]
[0292]
121
ꢀꢀꢀꢀꢀ
滤波块
[0293]
130
ꢀꢀꢀꢀꢀ
解码图像缓冲器(decoded picture buffer,dpb)[单元或步骤]
[0294]
142
ꢀꢀꢀꢀꢀ
帧间估计(inter estimation/inter picture estimation)[单元或步骤]
[0295]
143
ꢀꢀꢀꢀꢀ
帧间估计参数(例如,参考图像/参考图像索引,运动矢量/偏移)
[0296]
144
ꢀꢀꢀꢀꢀ
帧间预测(inter prediction/inter picture prediction)[单元或步骤]
[0297]
145
ꢀꢀꢀꢀꢀ
帧间预测块
[0298]
152
ꢀꢀꢀꢀꢀ
帧内估计(intra estimation/intra picture estimation)[单元或步骤]
[0299]
153
ꢀꢀꢀꢀꢀ
帧内预测参数(例如,帧内预测模式)
[0300]
154
ꢀꢀꢀꢀꢀ
帧内预测(intra prediction/intra frame/picture prediction)[单元或步骤]
[0301]
155
ꢀꢀꢀꢀꢀ
帧内预测块
[0302]
162
ꢀꢀꢀꢀꢀ
模式选择[单元或步骤]
[0303]
165
ꢀꢀꢀꢀꢀ
预测块(帧间预测块145或帧内预测块155)
[0304]
170
ꢀꢀꢀꢀꢀ
熵编码[单元或步骤]
[0305]
171
ꢀꢀꢀꢀꢀ
编码图像数据(例如,码流)
[0306]
172
ꢀꢀꢀꢀꢀ
输出端(输出端口,输出接口)
[0307]
200
ꢀꢀꢀꢀꢀ
解码器
[0308]
202
ꢀꢀꢀꢀꢀ
输入端(端口/接口)
[0309]
204
ꢀꢀꢀꢀꢀ
熵解码
[0310]
209
ꢀꢀꢀꢀꢀ
量化系数
[0311]
210
ꢀꢀꢀꢀꢀ
反量化
[0312]
211
ꢀꢀꢀꢀꢀ
解量化系数
[0313]
212
ꢀꢀꢀꢀꢀ
逆变换(缩放)
[0314]
213
ꢀꢀꢀꢀꢀ
逆变换块
[0315]
214
ꢀꢀꢀꢀꢀ
重建(单元)
[0316]
215
ꢀꢀꢀꢀꢀ
重建块
[0317]
216
ꢀꢀꢀꢀꢀ
(列)缓冲器
[0318]
217
ꢀꢀꢀꢀꢀ
参考像素点
[0319]
220
ꢀꢀꢀꢀꢀ
环路滤波器(环内滤波器)
[0320]
221
ꢀꢀꢀꢀꢀ
滤波块
[0321]
230
ꢀꢀꢀꢀꢀ
解码图像缓冲器(decoded picture buffer,dpb)
[0322]
231
ꢀꢀꢀꢀꢀ
解码图像
[0323]
232
ꢀꢀꢀꢀꢀ
输出端(端口/接口)
[0324]
244
ꢀꢀꢀꢀꢀ
帧间预测(inter prediction/inter frame/picture prediction)
[0325]
245
ꢀꢀꢀꢀꢀ
帧间预测块
[0326]
254
ꢀꢀꢀꢀꢀ
帧内预测(intra prediction/intra frame/picture prediction)
[0327]
255
ꢀꢀꢀꢀꢀ
帧内预测块
[0328]
260
ꢀꢀꢀꢀꢀ
模式选择
[0329]
265
ꢀꢀꢀꢀꢀ
预测块(帧间预测块245或帧内预测块255)
[0330]
300
ꢀꢀꢀꢀꢀ
编码系统
[0331]
310
ꢀꢀꢀꢀ
源设备
[0332]
312
ꢀꢀꢀꢀ
图像源
[0333]
313
ꢀꢀꢀꢀ
(原始)图像数据
[0334]
314
ꢀꢀꢀꢀ
预处理器/预处理单元
[0335]
315
ꢀꢀꢀꢀ
预处理图像数据
[0336]
318
ꢀꢀꢀꢀ
通信单元/接口
[0337]
320
ꢀꢀꢀꢀ
目的地设备
[0338]
322
ꢀꢀꢀꢀ
通信单元/接口
[0339]
326
ꢀꢀꢀꢀ
后处理器/后处理单元
[0340]
327
ꢀꢀꢀꢀ
后处理图像数据
[0341]
328
ꢀꢀꢀꢀ
显示设备/单元
[0342]
330
ꢀꢀꢀꢀ
传输/接收/通信(编码)图像数据。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献