背景技术
在基于块的预测视频编码模型中,可以通过以下步骤来对图像块进行编码:生成预测、从图像块中减去该预测以生成残差、对该残差进行变换、对变换后的残差进行量化、并最终发送量化的残差系数。由于量化处理可能导致信息丢失,所以在相邻的编码块之间可能经常产生可见的块伪像。具体地,平滑区域和相邻编码块之间的边缘可能看起来不连续,这是非常不期望的。
为了去除或减少这样的伪像,可以执行一些滤波来对很可能呈现一些块伪像的相邻编码块之间的过渡进行平滑。在块边界上的滤波强度经常取决于在每个编码块中所使用的预测模式,这是因为在所使用的编码模式和在给定比特率所察觉的块伪像之间存在关联。在帧内预测中,大多数当前的视频编码技术(例如根据国际标准化组织/国际电工委员会(ISO/IEC)运动画面专家组-4(MPEG-4)第10部分高级视频编码(AVC)标准/国际电信联盟通信分部(ITU-T)H.264建议(在下文中被称作“MPEG-4 AVC标准”)的帧内预测)利用局部相邻信息来生成当前块的预测。因此,对于帧内预测块的当前去块滤波方法是基于局部信息的知识而设计的。
近来,已经引入了一些非局部帧内预测方法,并且这些方法实现优良的编码效率。一个这样的例子包括位移帧内预测(DIP)。另一个这样的例子包括模板匹配预测(TMP)。这些方法尝试利用存在于画面内的区域的自相似性。具体地,非局部帧内预测技术可以使用编码画面中已解码部分内的非局部信息来生成预测,这与仅利用局部相邻数据的局部帧内预测技术(例如根据MPEG-4 AVC标准的帧内预测)不同。当在帧内预测中引入了这样的非局部预测技术时,目前为止所设计的去块滤波方法和策略可能不能恰当地滤除块伪像。实际上,应当修改对于局部帧内预测而定义的滤波策略以进行对诸如非局部预测之类的其他预测方法的更高效的去块滤波。
在MPEG-4 AVC标准中,向每个解码后的宏块应用滤波以减少块伪像。在编码器和解码器两者中在重构的画面数据上应用去块滤波。滤波对块过渡进行平滑,从而改善解码后的帧的外观。向宏块中的4×4块的纵或横边缘(除了片边界上的边缘)应用滤波。默认的去块滤波顺序是首先对亮度(luma)分量中的边缘进行滤波,然后对色度(chroma)分量中的边缘进行滤波。在每个分量中,在横边缘之前对纵边缘进行滤波。转向图1A和1B,分别由参考标号100和150来一般性地表示宏块的16×16亮度分量和宏块的8×8色度分量。宏块中的边缘滤波顺序如下:a;b;c;d;e;f;g;h;i;j;k;和l。每个滤波操作影响在边界的每侧上的多至三个采样。转向图2A和2B,分别由参考标号200和250来一般性地表示与纵和横边界相邻的采样。具体地,在相邻的块p和q中的纵或横边界的每侧示出四个采样(分别为p0,p1,p2,p3和q0,q1,q2,q3)。在MPEG-4 AVC标准中,在特定位置中用于去块的滤波器取决于边界强度(BS)、跨边界的图像采样的梯度、以及当前的量化强度。
转向图3,由参考标号300一般性地表示MPEG-4 AVC标准的用于选择去块滤波边界强度(bS)的示例方法。方法300包括开始块305,其向功能块310传递控制。功能块310输入p和q块以及帧内预测模式,并且向决定块315传递控制。决定块315确定块p或块q是否是帧内编码的。如果是,则向决定块320传递控制。否则,向决定块335传递控制。
决定块320确定块边界是否宏块边界。如果是,则向功能块325传递控制。否则,向功能块330传递控制。
功能块325将边界强度(bS)设置为等于四,并且向功能块365传递控制。
功能块365输出边界强度(bS),并且向结束块399传递控制。
功能块330将边界强度(bS)设置为等于三,并且向功能块365传递控制。
决定块335确定是否存在块p或块q中编码的系数。如果是,则向功能块340传递控制。否则,向决定块345传递控制。
功能块340将边界强度(bS)设置为等于二,并且向功能块365传递控制。
决定块345确定块p和块q是否具有不同的参考帧编号或不同数目的参考帧。如果是,则向功能块350传递控制,否则,向决定块355传递控制。
功能块350将边界强度(bS)设置为等于一,并且向功能块365传递控制。
决定块355确定边界两侧中的像素的运动矢量之差是否大于一。如果是,则向功能块350传递控制。否则,向功能块360传递控制。
功能块360将边界强度(bS)设置为等于零,并且向功能块365传递控制。
这样,根据图3中所图示的规则选择了边界强度参数(BS)。应用这些规则的结果是:滤波强度取决于编码数据,以使得在很可能存在显著的块伪像的位置(例如帧内编码宏块的边界或包括编码系数的块之间的边界)滤波强度更强。基于边界强度的选择,由量化参数和跨边界的图像采样的梯度来确定最终滤波处理。
在图3中,我们可以看到,MPEG-4 AVC标准对于帧内编码块使用较高的边界强度值,这是因为MPEG-4 AVC标准所使用的局部帧内预测技术使用非常简单的模型。然而,这些非常简单的模型不能够预测信号的整个分量集合,从而导致用于后继编码的更多的残差信息。留待编码的预测残差越多,则在量化期间信息丢失的概率越高,其继而可能导致块边界周围的更多的块伪像。然而,如果引入诸如非局部帧内预测技术之类的更高级的帧内预测方法,则现存的去块方案不再适合于这些块。
非局部帧内预测
非局部帧内预测指可以利用编码画面内的非局部信息来生成当前编码块或区域的预测的那些技术。非局部信息包括在编码器和解码器两者处可用的已解码数据。我们可以基于发送开销(overhead transmitted)的必要性而将非局部帧内预测技术分类为前向预测和后向预测技术。位移帧内预测和模板匹配预测分别是典型的前向和后向非局部帧内预测技术。
位移帧内预测(DIP)
受到帧间运动补偿的启发,位移帧内预测重新使用画面的已重构的解码区域中的斑块(block patch),以预测当前块。位移帧内预测在包括当前块的画面的已重构区域内寻找与要编码的当前块最相似的块。因而将每块或每分区的帧内位移矢量作为开销而发送至解码器。转向图4,由参考标号400一般性地表示位移帧内预测(DIP)的例子。位移帧内预测400涉及要编码的区域410、位于区域410内的要编码的当前块411、位于与斑块(patch)410相同的画面内的已重构区域430、已重构区域430中的候选块431、以及帧内位移矢量440。位移帧内预测非常适合于对具有许多重复纹理或结构图案的画面进行编码。
模板匹配预测(TMP)
转向图5,由参考标号500一般性地表示模板匹配预测(TMP)的例子。模板匹配预测500涉及要编码的区域510、包括要编码的当前块512的当前模板511、与斑块510相同的画面中的已重构区域530、已重构区域530内的候选模板533、以及候选模板533内的候选块531。
如图5中所示,模板匹配预测也通过重新使用在编码器或解码器处的可用的已重构数据来生成预测。不同于位移帧内预测,模板匹配预测使用后向自适应纹理合成技术,其不需要发送开销。模板匹配预测测量周围环境像素(而不是如在位移帧内预测中使用的原始块数据)(在编码器和解码器两者处可用)和用于预测的候选模板之间的相似度。因为模板匹配预测不需要额外的开销,所以可以将目标块划分为更小的块来进行预测。这允许对于高频分量和复杂结构的更精确的建模,从而减少要编码的残差。模板匹配关于已经用于匹配参考的相邻块而在预测的块上施加一定平滑。这在预测中施加了一些连续性,减少了由预测造成的块效应。
具有IC的非局部帧内预测
前述非局部帧内预测技术典型地使用绝对差之和(SAD)或方差之和(SSE)来测量两个模板(在模板匹配预测中)或两个块(在位移帧内预测中)之间的相似度。虽然这样的测量在大多数情况中工作良好,但在模板或块之间存在一些失配时这不够高效。这可能在亮度差别或几何变化存在时发生,从而导致亚最优的预测合成和较大的残差。这是由以下事实造成的:非局部预测技术不能总是捕捉图像的诸如对比度和明亮度之类的局部特征。已经提出了多种自适应亮度补偿(IC)方法来明显地或隐含地解决该问题。向帧内预测引入亮度补偿产生预测效率的进一步的改善,这导致与没有亮度补偿的情况相比要编码更小量的残差系数。
非局部预测技术能够提供更好的帧内预测。这减少了残差量并且因此减少了具有块伪像的概率。因此,这些预测技术的不同性质需要使用自适应的去块例程。
具体实施方式
本原理针对用于非局部帧内预测的去块滤波的方法和装置。
本描述例示了本原理。因而应当理解,本领域技术人员将能够设想出虽然未在这里明显地描述或示出、但体现本原理并被包括在其精神和范围内的多种布置。
在这里所叙述的全部例子和限定性(conditional)语言意图在于辅助读者理解本原理和由发明人为发展本领域而贡献的概念的教学目的,并且应当被理解为不被这样的具体叙述的例子和限定而限制。
此外,在这里叙述本原理的各原理、各方面和各实施例的全部陈述,以及其具体例子,意图包括其结构上和功能上的等效物两者。另外,这样的等效物意图包括当前已知的等效物以及在将来开发的等效物,即无论结构如何而执行相同的功能的任何所开发的元件。
因而,例如,本领域技术人员将理解,在这里所呈现的框图表示体现本原理的例示性电路的概念视图。类似地,将理解,任何流程表、流程图、状态转换图、伪码等表示可以在计算机可读介质中被实质性地表示、并且因此由计算机或处理器执行的多种过程,而无论这样的计算机或处理器是否被明显地示出。
可以通过使用专用硬件以及能够与恰当的软件相联系而执行软件的硬件来提供图中所示的多种元件的功能。在由处理器提供时,可以由单个专用处理器、由单个共享处理器、或由多个单独的处理器(其中的一些可以是共享的)来提供所述功能。此外,术语“处理器”或“控制器”的明显使用不应被理解为仅仅指能够执行软件的硬件,而是可以隐含地包括但不限于数字信号处理器(“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标准的扩展)来利用本原理,同时保持本原理的精神。
进一步地,应当理解,虽然针对诸如位移帧内预测和模板匹配预测之类的帧内预测技术描述本原理的实施例,但本原理不仅仅限于帧内预测技术的前述各类型,因而可以根据本原理的教导而使用其他帧内预测技术,同时保持本原理的精神。
并且,应当理解,可以向使用亮度补偿的非局部帧内预测技术应用本原理,同时保持本原理的精神。
另外,应当理解,给定这里所提供的本原理的教导,本领域和相关领域普通技术人员将容易地确定可以应用本原理的前述和其他技术,同时保持本原理的精神。
位移帧内预测和模板匹配预测是这里为了例示的目的而使用的示例非局部预测方法。因而,应当理解,本原理不仅仅限于帧内预测技术的前述各类型,而是可以对于其他非局部预测技术而使用本原理,同时保持本原理的精神。此外,还可以向其中涉及亮度补偿的非局部预测技术应用本原理,同时保持本原理的精神。
转向图6,由参考标号600一般性地表示基于MPEG-4 AVC标准的具有非局部帧内预测的示例视频编码器。
视频编码器600包括帧排序缓冲器610,其具有与组合器685的非反相输入端进行信号通信的输出端。组合器685的输出端与变换器和量化器625的第一输入端以信号通信地连接。变换器和量化器625的输出端与熵编码器645的第一输入端以及逆变换器和逆量化器650的第一输入端以信号通信地连接。熵编码器645的输出端与组合器690的第一非反相输入端以信号通信地连接。组合器690的输出端与输出缓冲器635的第一输入端以信号通信地连接。
编码器控制器605的第一输出端与帧排序缓冲器610的第二输入端、逆变换器和逆量化器650的第二输入端、画面类型决定模块615的输入端、宏块类型(MB类型)决定模块620的第一输入端、帧内预测模块660的第二输入端、去块滤波器665的第二输入端、运动补偿器670的第一输入端、运动估计器675的第一输入端以及参考画面缓冲器680的第二输入端以信号通信地连接。
编码器控制器605的第二输出端与补充增强信息(SEI)***器630的第一输入端、变换器和量化器625的第二输入端、熵编码器645的第二输入端、输出缓冲器635的第二输入端以及序列参数集(SPS)和画面参数集(PPS)***器640的输入端以信号通信地连接。
编码器控制器605的第三输出端与非局部帧内预测器644的第一输入端以信号通信地连接。
SEI***器630的输出端与组合器690的第二非反相输入端以信号通信地连接。
画面类型决定模块615的第一输出端与帧排序缓冲器610的第三输入端以信号通信地连接。画面类型决定模块615的第二输出端与宏块类型决定模块620的第二输入端以信号通信地连接。
序列参数集(SPS)和画面参数集(PPS)***器640的输出端与组合器690的第三非反相输入端以信号通信地连接。
逆量化器和逆变换器650的输出端与组合器619的第一非反相输入端以信号通信地连接。组合器619的输出端与帧内预测模块660的第一输入端和去块滤波器665的第一输入端以信号通信地连接。去块滤波器665的输出端与参考画面缓冲器680的第一输入端以信号通信地连接。参考画面缓冲器680的第一输出端与运动估计器675的第二输入端和运动补偿器670的第三输入端以信号通信地连接。参考画面缓冲器680的第二输出端与非局部帧内预测器644的第二输入端以信号通信地连接。运动估计器675的第一输出端与运动补偿器670的第二输入端以信号通信地连接。运动估计器675的第二输出端与熵编码器645的第三输入端以信号通信地连接。
运动补偿器670的输出端与开关697的第一输入端以信号通信地连接。帧内预测模块660的输出端与开关697的第二输入端以信号通信地连接。非局部帧内预测器644的输出端与开关697的第三输入端以信号通信地连接。宏块类型决定模块620的输出端与开关697的第四输入端以信号通信地连接。开关697的第四输入端确定开关的“数据”输入(与控制输入即第四输入端相比)将由运动补偿器670还是帧内预测模块660还是非局部帧内预测器644提供。开关697的输出端与组合器619的第二非反相输入端和组合器685的反相输入端以信号通信地连接。
帧排序缓冲器610的第一输入端和编码器控制器605的输入端作为编码器600的用于接收输入画面的输入端。此外,补充增强信息(SEI)***器630的第二输入端作为编码器600的用于接收元数据的输入端。输出缓冲器635的输出端作为编码器600的输出端而用于输出比特流。
转向图7,由参考标号700一般性地表示基于MPEG-4 AVC标准的具有非局部帧内预测的示例视频解码器。
视频解码器700包括输入缓冲器710,其具有与熵解码器745的第一输入端以信号通信地连接的输出端。熵解码器745的第一输出端与逆变换器和逆量化器750的第一输入端以信号通信地连接。逆变换器和逆量化器750的输出端与组合器725的第二非反相输入端以信号通信地连接。组合器725的输出端与去块滤波器765的第二输入端和帧内预测模块760的第一输入端以信号通信地连接。去块滤波器765的第二输出端与参考画面缓冲器780的第一输入端以信号通信地连接。参考画面缓冲器780的第一输出端与运动补偿器770的第二输入端以信号通信地连接。参考画面缓冲器780的第二输出端与非局部帧内预测器744的第二输入端以信号通信地连接。
熵解码器745的第二输出端与运动补偿器770的第三输入端和去块滤波器765的第一输入端以信号通信地连接。熵解码器745的第三输出端与解码器控制器705的输入端以信号通信地连接。熵解码器745的第四输出端与非局部帧内预测器744的第一输入端以信号通信地连接。解码器控制器705的第一输出端与熵解码器745的第二输入端以信号通信地连接。解码器控制器705的第二输出端与逆变换器和逆量化器750的第二输入端以信号通信地连接。解码器控制器705的第三输出端与去块滤波器765的第三输入端以信号通信地连接。解码器控制器705的第四输出端与帧内预测模块760的第二输入端、运动补偿器770的第一输入端、参考画面缓冲器780的第二输入端以及非局部帧内预测器744的第三输入端以信号通信地连接。
运动补偿器770的输出端与开关797的第一输入端以信号通信地连接。帧内预测模块760的输出端与开关797的第二输入端以信号通信地连接。非局部帧内预测器744的输出端与开关797的第三输入端以信号通信地连接。开关797的输出端与组合器725的第一非反相输入端以信号通信地连接。
输入缓冲器710的输入端作为解码器700的输入端而用于接收输入比特流。去块滤波器765的第一输出端作为解码器700的输出端而用于输出输出画面。
转向图8,由参考标号800一般性地表示基于MPEG-4 AVC标准的具有非局部帧内预测和亮度补偿的示例视频编码器。
视频编码器800包括帧排序缓冲器810,其具有与组合器885的非反相输入端以信号通信地连接的输出端。组合器885的输出端与变换器和量化器825的第一输入端以信号通信地连接。变换器和量化器825的输出端与熵编码器845的第一输入端以及逆变换器和逆量化器850的第一输入端以信号通信地连接。熵编码器845的输出端与组合器890的第一非反相输入端以信号通信地连接。组合器890的输出端与输出缓冲器835的第一输入端以信号通信地连接。
编码器控制器805的第一输出端与帧排序缓冲器810的第二输入端、逆变换器和逆量化器850的第二输入端、画面类型决定模块815的输入端、宏块类型(MB类型)决定模块820的第一输入端、帧预测模块860的第二输入端、去块滤波器865的第二输入端、运动补偿器870的第一输入端、运动估计器875的第一输入端以及参考画面缓冲器880的第二输入端以信号通信地连接。
编码器控制器805的第二输出端与补充增强信息(SEI)***器830的第一输入端、变换器和量化器825的第二输入端、熵编码器845的第二输入端、输出缓冲器835的第二输入端以及序列参数集(SPS)和画面参数集(PPS)***器840的输入端以信号通信地连接。
编码器控制器805的第三输出端与具有亮度补偿的非局部帧内预测器877的第一输入端以及隐含亮度补偿参数计算器878的第一输入端以信号通信地连接。
SEI***器830的输出端与组合器890的第二非反相输入端以信号通信地连接。
画面类型决定模块815的第一输出端与帧排序缓冲器810的第三输入端以信号通信地连接。画面类型决定模块815的第二输出端与宏块类型决定模块820的第二输入端以信号通信地连接。
序列参数集(SPS)和画面参数集(PPS)***器840的输出端与组合器890的第三非反相输入端以信号通信地连接。
隐含亮度补偿参数计算器878的输出端与具有亮度补偿的非局部帧内预测器877的第三输入端以信号通信地连接。
逆量化器和逆变换器850的输出端与组合器819的第一非反相输入端以信号通信地连接。组合器819的输出端与帧内预测模块860的第一输入端和去块滤波器865的第一输入端以信号通信地连接。去块滤波器865的输出端与参考画面缓冲器880的第一输入端以信号通信地连接。参考画面缓冲器880的第一输出端与运动估计器875的第二输入端和运动补偿器870的第三输入端以信号通信地连接。参考画面缓冲器880的第二输出端与具有亮度补偿的非局部帧内预测器877的第二输入端以及隐含亮度补偿参数计算器878的第二输入端以信号通信地连接。运动估计器875的第一输出端与运动补偿器870的第二输入端以信号通信地连接。运动估计器875的第二输出端与熵编码器845的第三输入端以信号通信地连接。
运动补偿器870的输出端与开关897的第一输入端以信号通信地连接。帧内预测模块860的输出端与开关897的第二输入端以信号通信地连接。具有亮度补偿的非局部帧内预测器877的输出端与开关897的第三输入端以信号通信地连接。宏块类型决定模块820的输出端与开关897的第四输入端以信号通信地连接。开关897的第四输入端确定开关的“数据”输入(与控制输入即第四输入端相比)将由运动补偿器870还是帧内预测模块860还是具有亮度补偿的非局部帧内预测器877提供。开关897的输出端与组合器819的第二非反相输入端和组合器885的反相输入端以信号通信地连接。
帧排序缓冲器810的第一输入端和编码器控制器805的输入端作为编码器800的用于接收输入画面的输入端。此外,补充增强信息(SEI)***器830的第二输入端作为编码器800的用于接收元数据的输入端。输出缓冲器835的输出端作为编码器800的输出端而用于输出比特流。
转向图9,由参考标号900一般性地表示基于MPEG-4 AVC标准的具有非局部帧内预测和亮度补偿的示例视频解码器。
视频解码器900包括输入缓冲器910,其具有与熵解码器945的第一输入端以信号通信地连接的输出端。熵解码器945的第一输出端与逆变换器和逆量化器950的第一输入端以信号通信地连接。逆变换器和逆量化器950的输出端与组合器925的第二非反相输入端以信号通信地连接。组合器925的输出端与去块滤波器965的第二输入端和帧内预测模块960的第一输入端以信号通信地连接。去块滤波器965的第二输出端与参考画面缓冲器980的第一输入端以信号通信地连接。参考画面缓冲器980的第一输出端与运动补偿器970的第二输入端以信号通信地连接。参考画面缓冲器980的第二输出端与具有亮度补偿的非局部帧内预测器977的第二输入端和隐含亮度补偿参数计算器978的第二输入端以信号通信地连接。隐含亮度补偿参数计算器978的输出端与非局部帧内预测器977的第三输入端以信号通信地连接。
熵解码器945的第二输出端与运动补偿器970的第三输入端和去块滤波器965的第一输入端以信号通信地连接。熵解码器945的第三输出端与解码器控制器905的输入端以信号通信地连接。解码器控制器905的第一输出端与熵解码器945的第二输入端以信号通信地连接。解码器控制器905的第二输出端与逆变换器和逆量化器950的第二输入端以信号通信地连接。解码器控制器905的第三输出端与去块滤波器965的第三输入端以信号通信地连接。解码器控制器905的第四输出端与帧内预测模块960的第二输入端、运动补偿器970的第一输入端、参考画面缓冲器980的第二输入端、具有亮度补偿的非局部帧内预测器977的第一输入端以及隐含亮度补偿参数计算器978的第一输入端以信号通信地连接。
运动补偿器970的输出端与开关997的第一输入端以信号通信地连接。帧内预测模块960的输出端与开关997的第二输入端以信号通信地连接。具有亮度补偿的非局部帧内预测器的输出端与开关997的第三输入端以信号通信地连接。开关997的输出端与组合器925的第一非反相输入端以信号通信地连接。
输入缓冲器910的输入端作为解码器900的输入端而用于接收输入比特流。去块滤波器965的第一输出端作为解码器900的输出端而用于输出输出画面。
如上所述,本原理针对用于非局部帧内预测的去块滤波的方法和装置。
根据本原理,我们描述一种为了与非局部帧内预测技术一起使用而优化的用于去块滤波的技术。有利地,本原理能够抑制当在图像和/或视频(在下文中共同地称作“图像”)压缩中使用非局部帧内预测时在视频编码器和/或解码器中引入的块伪像。具体地,本原理提供当在预测中涉及非局部帧内预测技术时自适应地确定用于对块边界进行去块滤波的边界强度的示例方案。此外,本原理还提供当使能亮度补偿以与非局部帧内预测组合使用时根据亮度补偿参数自适应地确定用于对块边界进行去块滤波的边界强度的示例方案。
根据实施例,取决于画面数据的扫描顺序、编码模式信息或其他编码参数以及相邻画面数据区域的亮度补偿参数中的一个或多个来修改去块滤波器强度、滤波器类型和滤波器长度中的一个或多个。在实施例中,引入新的去块滤波边界强度确定方案来恰当地处理被不同地预测的画面区域(其中涉及非局部预测)之间的区域过渡。位移帧内预测和模板匹配预测是在这里出于例示性目的而使用的示例非局部预测方法。因而,应当理解,并且如上所述,本原理不仅仅限于帧内预测技术的前述各类型,而是可以对于其他非局部预测技术使用本原理,同时保持本原理的精神。此外,如上所述,还可以向其中涉及亮度补偿的非局部预测技术应用本原理,同时保持本原理的精神。
用于非局部帧内预测的去块滤波器修改
在实施例中,边界强度确定也考虑到帧内编码中的非局部预测类型信息。在实施例中,基于非局部预测技术的能力来设置合适的边界强度,以保持特定的边界平滑。例如,我们可以向由通过非局部预测技术(例如模板匹配预测和位移帧内预测)编码的块形成的边界应用较小的边界强度。由于模板匹配预测可以比位移帧内预测更好地保持跨边界的平滑度,所以设置更小的滤波边界强度。
用于具有亮度补偿(IC)的非局部帧内预测的去块滤波器修改
当在非局部帧内预测中涉及亮度补偿时,边界强度决定应当能够考虑到补偿后的亮度变化。这是由于以下事实:在没有块边界平滑度约束的情况下执行了亮度补偿。在实施例中,我们考虑到亮度补偿参数来确定边界强度。在实施例中,当对应块的亮度补偿参数之差较大(例如大于预定阈值,从而在边界两侧的大的亮度参数之差具有较高的导致可见伪像的概率)时,向当前正在被评估的给定边界应用较高的边界强度。在实施例中,通过向未补偿的块乘以对比度参数a并且加上偏移参数b来执行对于块的亮度补偿。可以使用(例如来自图4中所示的已重构区域420的)随机(casual)相邻像素来自适应地计算这两个参数。在一个特殊情况下,我们设置a=1,所以我们仅仅使用b来做出边界强度决定。
这里,我们描述关于如何对于非局部帧内预测技术改变去块滤波边界强度的两个示例实施例。可以向滤波器类型和滤波器长度应用相同的方法。出于例示的目的,我们使用MPEG-4 AVC标准来描述本原理的一个或更多的实施例。然而,如上所述,本原理不仅仅限于MPEG-4 AVC标准。第一实施例针对涉及非局部帧内预测的情况。第二实施例针对涉及非局部帧内预测以及亮度补偿的情况。
转至图10A-D,由参考标号1000一般性地表示用于去块滤波的示例方法。方法1000包括分别在图10B、10C和10D中示出的子方法1060、1070和1080。
方法1000包括开始块1005,其向循环限制块1010传递控制。循环限制块1010使用变量I(具有从0到num_pictures_minusl的范围)开始对输入视频序列中的每个画面的循环,并且向决定块1015传递控制。决定块1015确定non_local_intra_flag是否等于一。如果是,则向决定块1020传递控制。否则,向功能块1040传递控制。
决定块1020确定IC_intra _flag是否等于一。如果是,则向功能块1025传递控制。否则,向功能块1035传递控制。
功能块1025使用(图10D的)子方法1080执行考虑非局部预测以及亮度补偿的去块滤波,并且向循环限制块1030传递控制。
循环限制块1030结束循环,并且向结束块1045传递控制。
功能块1040使用(图10B的)子方法1060执行考虑非局部预测的去块滤波,并且向循环限制块1030传递控制。
功能块1035使用(图10C的)子方法1070执行考虑非局部预测而不考虑亮度补偿的去块滤波,并且向循环限制块1030传递控制。
图10B中所示的子方法1060包括开始块1061,其向循环限制块1062传递控制。循环限制块1062使用变量I(具有从0到num_MBs_minusl的范围)开始对当前画面中的每个宏块的循环,并且向功能块1063传递控制。功能块1063执行不考虑非局部预测的(当前宏块的)去块滤波,并且向循环限制块1064传递控制。循环限制块1064结束循环,并且向结束块1065传递控制。
图10C中所示的子方法1070包括开始块1071,其向循环限制块1072传递控制。循环限制块1072使用变量I(具有从0到num_MBs_minusl的范围)开始对当前画面中的每个宏块的循环,并且向功能块1073传递控制。功能块1073自适应地选择用于去块滤波的滤波器长度和滤波器类型,使用所选择的滤波器长度和滤波器类型但不考虑亮度补偿来执行(当前宏块的)去块滤波,并且向循环限制块1074传递控制。循环限制块1074结束循环,并且向结束块1075传递控制。
图10D中所示的子方法1080包括开始块1081,其向循环限制块1082传递控制。循环限制块1082使用变量I(具有从0到num_MBs_minusl的范围)开始对当前画面中的每个宏块的循环,并且向功能块1083传递控制。功能块1083自适应地选择用于去块滤波的滤波器长度和滤波器类型,使用所选择的滤波器长度和滤波器类型并且考虑亮度补偿来执行(当前宏块的)去块滤波,并且向循环限制块1084传递控制。循环限制块1084结束循环,并且向结束块1085传递控制。
总结方法1000,我们首先检查是否设置了non_local_intra_flag(即其使能)。如果未设置non_local_intra_flag,则执行图10B中所示的去块方法1060。否则,如果设置了non_local_intra_flag,则这表示存在已应用的非局部预测。然后,检查IC_intra_flag来确定是否应用了亮度补偿。如果未设置IC_intra_flag(即其未使能),则执行图10C中所示的去块方法1070。否则(即如果设置了IC_intra_flag),则执行图10D中所示的去块方法1080。如果既不涉及非局部帧内预测技术也不涉及亮度补偿(即执行图10B中所示的去块方法1060),则执行图11A中所示的宏块去块方案并且遵循图3中的流程图来确定边界强度。以下两个实施例分别描述涉及非局部帧内预测(实施例1)和涉及非局部预测以及亮度补偿(实施例2)的另外两种情况(执行子方法1070或子方法1080)。
实施例1:在帧内预测中涉及非局部帧内预测
在该实施例中,涉及非局部帧内预测技术(诸如例如位移帧内预测和模板匹配预测)以预测编码块。这些高级预测技术可以在大多数情况下高效地地减少残差。因而,去块滤波自适应方案应当修改以“适合于”这些技术。采用图10C的子方法1070来对每个宏块进行滤波。在该情况下,由于不涉及亮度补偿,所以执行图11C中所示的方法。在每个宏块的横和纵边界(例如见图1)上进行循环。对于每个边界,使用相邻块(例如p和q)的预测模式来确定边界强度bS。首先,我们检查在p或q中是否存在任何通过非局部预测技术预测的块。如果是(即在p或q中存在通过非局部预测技术预测的块),则执行图12中所示的方法1200来获得边界强度。否则(即在p或q中不存在通过非局部预测技术预测的块),则执行图3的方法300。
转向图11A,由参考标号1100一般性地表示用于不考虑非局部预测的去块滤波的示例方法。方法1100包括开始块1103,其向循环限制块1106传递控制。循环限制块1106使用变量k(具有从0到num_blk_boundary-1的范围)来开始对当前画面中的每个块边界的循环,并且向功能块1109传递控制。功能块1109获得相邻块p和q的预测模式,并且向功能块1112传递控制。功能块1112不考虑任何非局部预测模式而确定边界强度bS,并且向功能块1115传递控制。功能块1115自适应地选择用于去块滤波的滤波器长度和滤波器类型,使用所选择的滤波器长度和滤波器类型来对块边界进行滤波,并且向循环限制块1118传递控制。循环限制块1118结束循环,并且向结束块1121传递控制。
转向图11B,由参考标号1130一般性地表示用于考虑非局部预测的去块滤波的示例方法。方法1130包括开始块1133,其向循环限制块1136传递控制。循环限制块1136使用变量k(具有从0到num_blk_boundary-1的范围)来开始对当前画面中的每个块边界的循环,并且向功能块1139传递控制。功能块1139获得相邻块p和q的预测模式,并且向决定块1142传递控制。决定块1142确定是否有任何块是通过非局部帧内预测编码的。如果是,则向功能块1145传递控制。否则,向功能块1154传递控制。
功能块1145通过考虑非局部预测模式来确定边界强度bS,并且向功能块1148传递控制。
功能块1148对块边界进行滤波,并且向循环限制块1151传递控制。循环限制块1151结束循环,并且向结束块1157传递控制。
功能块1154在不考虑非局部预测模式的情况下确定边界强度bS,并且向功能块1148传递控制。
转向图11C,由参考标号1160一般性地表示用于考虑非局部预测以及亮度补偿的去块滤波的示例方法。方法1160包括开始块1163,其向循环限制块1166传递控制。循环限制块1166使用变量k(具有从0到num_blk_boundary-1的范围)来开始对当前画面中的每个块边界的循环,并且向功能块1169传递控制。功能块1169获得相邻块p和q的预测模式,并且向决定块1172传递控制。决定块1172确定是否有任何块是通过非局部帧内预测编码的。如果是,则向功能块1175传递控制。否则,向功能块1184传递控制。
功能块1175通过考虑非局部预测模式以及亮度补偿来确定边界强度bS,并且向功能块1178传递控制。
功能块1178自适应地选择用于去块滤波的滤波器长度和滤波器类型,使用所选择的滤波器长度和滤波器类型对块边界进行滤波,并且向循环限制块1181传递控制。循环限制块1181结束循环,并且向结束块1187传递控制。
功能块1184在不考虑非局部预测模式的情况下确定边界强度bS,并且向功能块1178传递控制。
转向图12,由参考标号1200一般性地表示用于考虑非局部预测而确定边界强度滤波的边界强度的示例方法。方法1200包括开始块1205,其向功能块1210传递控制。功能块1210输入p和q块帧内预测模式,并且向决定块1215传递控制。决定块1215确定块边界是否宏块边界。如果是,则向决定块1220传递控制。否则,向功能块1230传递控制。
决定块1220确定是否存在通过帧内预测模式或位移帧内预测而预测的任何块。如果是,则向功能块1225传递控制。否则,向功能块1230传递控制。
功能块1225将边界强度bS设置为等于二,并且向功能块1235传递控制。功能块1235输出边界强度,并且向结束块1399传递控制。
功能块1230将边界强度bS设置为等于一,并且向功能块1235传递控制。
实施例2:在帧内预测中涉及非局部帧内预测以及亮度补偿
在该实施例中,涉及非局部帧内预测技术(诸如例如位移帧内预测和模板匹配预测)以及亮度补偿。在该实施例中,我们对于边界强度确定考虑亮度补偿参数。在该情况下执行图10D的子方法1080。执行图11C的方法1160以对每个宏块进行滤波。在每个宏块的横和纵边界(例如见图1)上进行循环。对于每个边界,使用相邻块(例如p和q)的预测模式来确定边界强度bS。首先,我们检查在p或q中是否存在任何通过非局部预测技术预测的块。如果是,则执行图13的方法1300来获得边界强度bS。否则,使用图3的流程图来获得边界强度bS。虽然可以考虑全部亮度补偿参数来获取边界强度bS,但在图13中所示的该实施例中我们仅仅选择其中的一部分(偏移)来例示我们的发明。
转向图13,由参考标号1300一般性地表示用于利用非局部预测和亮度补偿而确定边界强度bS的示例方法。
方法1300包括开始块1305,其向功能块1310传递控制。功能块1310输入p和q块帧内预测模式,并且向决定块1315传递控制。决定块1315确定p和q是否都是亮度补偿的块。如果是,则向决定块1320传递控制。否则,向决定块1330传递控制。
决定块1320确定是否|offset(p)-offset(q)|<阈值。如果是,则向功能块1325传递控制,否则,向功能块1340传递控制。
功能块1325将边界强度bS设置为等于一,并且向功能块1350传递控制。
功能块1350输出边界强度bS,并且向结束块1399传递控制。
功能块1340将边界强度bS设置为等于二,并且向功能块1350传递控制。
决定块1330确定块边界是否是宏块边界。如果是,则向决定块1335传递控制。否则,向功能块1345传递控制。
决定块1335确定是否存在通过帧内预测模式或位移帧内预测而预测的任何块。如果是,则向功能块1340传递控制。否则,向功能块1345传递控制。
功能块1345将边界强度bS设置为等于一,并且向功能块1350传递控制。
现在将描述本发明的许多伴随的优点/特征中的一些,其中的一些已经在上文提及。例如,一个优点/特征为具有使用非局部帧内预测对画面数据进行编码的编码器的装置。该编码器包括去块滤波器,其被配置为与非局部帧内预测模式一起使用以对使用非局部帧内预测编码的画面数据的至少一部分进行去块滤波。
另一优点/特征为具有如上所述的编码器的装置,其中基于画面数据的扫描顺序、编码模式信息、帧内位移信息以及相邻画面数据区域的亮度补偿参数中的至少一个来自适应地选择去块滤波器强度。
又一优点/特征为具有如上所述的编码器的装置,其中自适应地选择去块滤波器类型。
又一优点/特征为具有所述编码器、其中如上所述自适应地选择去块滤波器类型的装置,其中基于编码参数和重构的画面数据特性中的至少一个来自适应地选择去块滤波器类型。
此外,另一优点/特征为具有如上所述的编码器的装置,其中自适应地选择去块滤波器长度。
进一步地,另一优点/特征为具有所述编码器、其中如上所述自适应地选择去块滤波器长度的装置,其中基于相邻画面数据区域的亮度补偿参数来自适应地选择去块滤波器长度。
基于这里的教导,相关领域普通技术人员可以容易地确定本原理的这些和其他特征和优点。应当理解,可以以多种形式的硬件、软件、固件、专用处理器或其组合来实施本原理的教导。
最优选地,作为硬件和软件的组合来实施本原理的教导。此外,可以将该软件作为在程序存储单元上被实体地体现的应用程序来实施。该应用程序可以被上载至包括任何合适的架构的机器,并且由所述机器执行。优选地,在具有诸如一个或多个中央处理单元(“CPU”)、随机存取存储器(“RAM”)和输入/输出(“I/O”)接口之类的硬件的计算机平台上实施该机器。该计算机平台还可以包括操作***和微指令码。在这里所描述的多种过程和功能可以是可由CPU执行的微指令码的部分或应用程序的部分或其任何组合。另外,诸如附加数据存储单元和打印单元之类的多种其他外设单元可以与该计算机平台连接。
应当进一步理解,因为优选地以软件来实施在附图中所描绘的***构成组件和方法中的一些,所以取决于本原理被编程的方式,***组件或处理功能块之间的实际连接可以是不同的。给定这里的教导,相关领域普通技术人员将能够想到本原理的这些和类似的实施方案或配置。
虽然在这里已经参考附图描述了例示性的实施例,但应当理解,本原理不限于这些精确的实施例,而相关领域普通技术人员可以在其中实现多种改变和修改,而不从本原理的范围或精神偏离。全部这样的改变和修改意图被包括在如在所附权利要求中所提出的本原理的范围内。