CN115883852A - 用于视频编码的高效环路滤波 - Google Patents

用于视频编码的高效环路滤波 Download PDF

Info

Publication number
CN115883852A
CN115883852A CN202211186461.3A CN202211186461A CN115883852A CN 115883852 A CN115883852 A CN 115883852A CN 202211186461 A CN202211186461 A CN 202211186461A CN 115883852 A CN115883852 A CN 115883852A
Authority
CN
China
Prior art keywords
block
blocks
filter
deblocking
current block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211186461.3A
Other languages
English (en)
Inventor
吴岳霖
邱铭豪
黄彦杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Publication of CN115883852A publication Critical patent/CN115883852A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

用于实现有效环路滤波的各种方案被描述,其表现在对于包括至少两个滤波级的环路滤波器的低延迟和降低的硬件成本。一种装置接收图片的当前块及该当前块的一个或多个相邻块的像素数据,基于该像素数据,该装置执行滤波操作并生成滤波块,该滤波块包括完全滤波的子块和部分滤波的子块。该装置进一步输出输出块,该输出块包括完全滤波的子块,以及部分滤波的子块中的每个子块的相应部分,其中该相应部分与完全滤波的子块之一相邻。

Description

用于视频编码的高效环路滤波
技术领域
本公开总体上涉及视频编码,更具体地,涉及用于提高视频编码器或解码器内的环路滤波的操作效率的方法和装置。
背景技术
除非本文另有说明,否则本节中描述的方法不是下面列出的权利要求的现有技术,并且不通过包含在本节中而被承认为现有技术。
视频编解码通常涉及:通过编码器将视频(即,原始视频)编码为比特流,将比特流传输到解码器,以及通过解码器从比特流中解码视频并处理比特流以产生重构视频。编码器可以在对视频进行编码时采用各种编解码模式或工具,除其他外,其目的是减少需要传输到解码器的比特流的总大小,同时仍向解码器提供关于原始视频的足够信息,使得解码器可以生成令人满意地忠实于原始视频的重构视频。然而,各种编解码工具在实现其各自的编解码目的的同时,可能总是在编码和解码过程中引入视觉伪影。具体来说,很多编解码工具都是基于块的编解码工具,这意味着要编解码的图片或帧被划分为许多不重叠的矩形区域,被称为“块”。块构成了编解码工具处理的基本元素,如在视频编解码中使用的两种主要技术帧内预测和帧间预测中经常看到的那样。由于这些块是彼此相对独立地编解码的,所以当将编解码块放在一起以重构图片时,例如,在块的边缘,可能会出现视觉伪影。
环路滤波器可被应用于重构的图片以处理或以其他方式减轻上述视觉伪影,从而改善重构图片的主观质量。环路滤波器通常包括几个单独的滤波器,它们分别减轻不同的视觉伪影。例如,一个滤波器可被用来平滑块边缘,而另一个滤波器被用来减少图片的某些区域的振铃伪影(ringing artifacts)或样本强度的变化。各个滤波器可以流水线方式(pipeline fashion)同时操作,每个滤波器是流水线的一个级别。也就是说,环路滤波器的第一滤波器可以处理重构图片的第一块,然后将结果传递到下一级,即环路滤波器的第二滤波器。当第二滤波器对从第一滤波器传递的结果(例如,像素数据)进行操作时,第一滤波器可以处理重构图片的第二块,等等。流水线被称为环路滤波器,因为它同时应用于视频编码器的编码循环和视频解码器的解码循环。具体来说,环路滤波器应用于逆量化(inversequantization,简称IQ)之后但在将图片存储到解码图片缓冲器(decoded picturebuffer,简称DPB)之前。在解码端,重构图片质量的提高为解码过程提供了更理想的参考图像,从而转化为更高的压缩效率。
由于环路滤波器用于编码环路和解码环路,它构成了视频编码器的重要部分。因此,环路滤波器的效率对整体编解码效率(例如延迟和吞吐量)有显著影响。本发明中展示的各种技术可用于提高环路滤波器的效率,从而提高采用高效环路滤波器的视频编码器或解码器的效率。
发明内容
以下概述仅是说明性的并且不旨在以任何方式进行限制。即,提供以下概述以介绍本文所述的新颖且非显而易见的技术的概念、亮点、益处和优点。选择实现方式在下面的详细描述中进一步描述。因此,以下概述并非旨在识别所要求保护的主题的基本特征,也不旨在用于确定所要求保护的主题的范围。
本公开的目的是提供与在使用基于块的帧内或帧间预测来重构图片之后但在存储在解码图片缓冲器(decoded picture buffer,简称DPB)之前的视频图片帧的环路滤波或后续处理有关的方案、概念、设计、技术、方法和设备。相信通过本公开中的各种实施例,实现了包括改进的编解码延迟、更高的编解码吞吐量和/或减少的硬件开销的好处。
在一个方面,一种用于对图片的当前块执行滤波操作的方法被提出,而图片可以是使用基于块的帧内或帧间预测的视频编码器或视频解码器的重构图片。该方法可以涉及:接收当前块的像素数据,以及当前块的一个或多个相邻块的像素数据。在一些实施例中,一个或多个相邻块可包括紧邻当前块上方的相邻块和紧邻当前块左侧的相邻块。该方法还可以涉及通过对当前块执行滤波操作来生成滤波块。滤波操作可以使用当前块的像素数据和一个或多个相邻块的像素数据来执行。滤波块可以包括一个或多个完全滤波的子块和一个或多个部分滤波的子块。最后,该方法还可以涉及输出输出块。输出块可以包括一个或多个完全滤波的子块和一个或多个部分滤波的子块中的每一个子块的相应部分,其中该相应部分与相应的一个或多个完全滤波的子块边缘相邻(edge-adjacent)或角相邻(corner-adjacent)。部分滤波的子块的相应部分可以共同形成L形区域,其具有第一段和第二段。在一些实施例中,L形区域的第一段和第二段中的每一个段的宽度与在滤波操作中使用的滤波设置相关。例如,根据滤波设置,滤波操作可以涉及参考第一数量的像素和修改第二数量的像素。L形区域的宽度可以等于第一数量和第二数量之间的差值。在一些实施例中,滤波操作(例如,去块操作)可以由第一滤波器执行,以及输出块可以被发送到第二滤波器以用于加性滤波操作(例如,去振铃操作)。第一和第二滤波器被配置为以基于块的流水线方式处理图片的块。
在另一方面,一种装置被提出,其包括输入模块、相邻块缓冲器、去块滤波器、滤波块缓冲器和输出模块。输入模块用于接收图片的当前块。相邻块缓冲器被配置为存储当前块的一个或多个相邻块的第一组像素数据。去块滤波器被配置为对当前块执行去块操作,以及去块操作可以使用当前块的像素数据和一个或多个相邻块的第一组像素数据来执行。滤波块缓冲器被配置为存储一个或多个完全滤波的子块和一个或多个部分滤波的子块。此外,输出模块被配置为基于去块滤波器执行的去块操作输出输出块。具体地,输出块可以包括一个或多个完全滤波的子块,以及一个或多个部分滤波的子块中的每一个的相应部分。此外,相应部分中的每一个子块可以与完全滤波的子块中的对应一个子块相邻(例如,边缘相邻或角相邻)。在一些实施例中,部分滤波的子块的相应部分共同形成L形区域。L形区域可以由两个矩形段形成,每个矩形段具有相应的宽度。段的宽度可以由与去块操作一起使用的一个或多个滤波设置来确定。例如,去块操作可以涉及参考第一数量的像素和修改第二数量的像素,以及L形区域的段的宽度可以等于第一数量和第二数量之间的差值。在一些实施例中,相邻块缓冲器还被配置为存储一个或多个相邻块的第二组像素数据,以及该装置还包括去振铃(de-ringing)滤波器,其被配置为使用输出块的像素数据和一个或多个相邻块的第二组像素数据对一个或多个完全滤波的子块执行去振铃操作。去振铃操作也可以使用特定的滤波设置来执行。例如,去振铃操作可以涉及在左方向、右方向、上方向和下方向中的每个方向上参考与输出块的每个像素相邻的特定数量的像素。然后去振铃操作可以涉及基于参考修改输出块的相应像素。在一些实施例中,L形区域的段的宽度可以等于像素的具体数量。在一些实施例中,特定数量还等于去块滤波器使用的滤波设置的第一数量和第二数量之间的差值。在去块滤波器的滤波设置与去振铃滤波器的滤波设置不同的情况下,即具体数量不同于第一数量和第二数量之差值时,L形区域可以被确定为特定数量(如在去振铃操作中使用的)以及第一数量和第二数量之间的差值(如在去块操作中使用的)两者之间的较低值。
附图说明
附图被包括以提供对本公开的进一步理解以及被并入并构成本公开的一部分。附图说明了本公开的实施方式,以及与描述一起用于解释本公开的原理。值得注意的是,附图不一定是按比例绘制的,因为某些元件可能被显示为与实际实施中的尺寸不成比例,以清楚地说明本公开的概念。
图1示出根据本公开的实施方式的示例设计的图。
图2示出根据本公开的实施方式的示例设计的图。
图3示出根据本公开的实施方式的示例设计的图。
图4示出根据本公开的实施方式的示例设计的图。
图5示出根据本公开的实施方式的示例设计的图。
图6示出根据本公开的实施方式的示例设计的图。
图7示出根据本公开的实施方式的示例设计的图。
图8示出根据本公开的实施方式的示例设计的图。
图9示出根据本公开的实施方式的示例设计的图。
图10示出根据本公开的实施方式的示例设计的图。
图11示出根据本公开的实施方式的示例设计的图。
图12示出根据本公开的实施方式的示例设计的图。
图13示出根据本公开的实施方式的示例视频编码器的图。
图14示出根据本公开的实施方式的示例视频解码器的图。
图15示出根据本公开的实施方式的示例环路滤波器的图。
图16示出根据本公开的实施方式的示例处理的流程图。
图17示出根据本公开的实施方式的示例处理的流程图。
图18示出根据本公开的实施方式的示例电子系统的图。
具体实施方式
本文公开了要求保护的主题的详细实施例和实施方式。然而,应当理解,所公开的实施例和实施方式仅是对可以以各种形式实施的要求保护的主题的说明。然而,本公开可以以许多不同的形式来实施并且不应被解释为限于这里阐述的示例性实施例和实施方式。相反,提供这些示例性实施例和实施方式是为了使本公开的描述透彻和完整,以及将向本领域的普通技术人员充分传达本公开的范围。在下面的描述中,众所周知的特征和技术的细节可被省略以避免不必要地混淆所呈现的实施例和实现方式。
根据本公开的实施方式涉及与实现视频编码器或解码器的高效环路滤波有关的各种技术、方法、方案和/或解决方案。根据本公开,多个可能的解决方案可以单独或联合实施。即,尽管这些可能的解决方案可以在下面单独描述,但是这些可能的解决方案中的两个或更多个可以以一种组合或另一种组合来实现。
一、基于块的环路滤波
环路滤波器是视频编码器或解码器的基本部分。图1示出根据本发明实施例的示例设计的图,其中环路滤波器100连同其与视频编码器或解码器的一些其他块的关系一起被示出。如本文上面其他地方所述,环路滤波器可以包括若干滤波级,每个滤波级被配置为执行相应的滤波操作,该若干滤波级一起操作作为基于块的滤波流水线,用于处理由帧内或帧间预测生成的重构图片以增强其主观图像质量。如图1所示,环路滤波器100包括:作为流水线的第一级的去块滤波器110、作为流水线的第二级的样本自适应偏移(sampleadaptive offset,简称SAO)滤波器120,以及作为流水线的第三级的自适应环路滤波器(adaptive loop filter,简称ALF)130。环路滤波器100可以处理由帧间或帧内预测模块103生成的图片或帧160。帧间/帧内预测模块103可以使用各种帧内预测技术和帧间预测技术从(例如,视频图片)原始数据重构图片160,以分别去除原始数据中的空间和时间冗余。图片160因此通常被称为“重构图片”。帧间/帧内预测模块103可以以基于块的方式处理原始数据。即,每个帧可以被划分为多个块,即,矩形的非重叠区域,以及帧间/帧内预测模块103可以通过顺序地处理这些块来处理帧。
重构图片160可以从帧间/帧内预测模块103经由数据总线109传输到环路滤波器100。具体地,数据总线109可以用于将重构图片160传输到环路滤波器100的第一级,即去块滤波器110。类似于帧间/帧内预测模块103,环路滤波器100也可以以基于块的方式处理重构图片160。然而,环路滤波器100使用的块划分可以与帧间/帧内预测模块103使用的块划分相同或不同。例如,环路滤波器100处理的非重叠块可以是与帧间/帧内预测模块103处理的非重叠块的大小不同。如图1所示,重构图片160被划分为16个相同大小的块,包括块166、与块166相邻的块167,以及与块167相邻的块168。环路滤波器100的滤波流水线处理重构图片160使得三个相邻块分别由环路滤波器100的三个级同时处理,而三个级中的每一个在三个连续流水线周期中顺序地处理三个相邻块。例如,在特定的流水线周期期间,去块滤波器110可以正在处理块166。在下一个流水线周期(即,紧接着特定流水线周期的周期)期间,块166的处理结果可以从去块滤波器110通过数据总线119传送到SAO滤波器120,供SAO滤波器120处理,而去块滤波器110处理下一个块,即块167。在接下来的流水线周期期间(即,特定流水线周期之后的两个周期),块166的处理结果可以通过数据总线129从SAO滤波器120传递到ALF 130,以供ALF 130处理,以及块167的处理结果可以通过数据总线119从去块滤波器110传递到SAO滤波器120,以供SAO滤波器120处理,而去块滤波器110处理下一个块,即块168。如图1所示,在这个流水线周期期间,滤波器110、120和130分别处理块168、167和166。从一个块的角度来看,一个块依次通过环路滤波器100的各个级。例如,块166在特定流水线周期中由去块滤波器110处理,然后在下一个流水线周期中由SAO滤波器120处理,然后在下一个流水线周期中由ALF 130处理。
在基于块的流水线过程中,每个单独的滤波器(即,流水线的每个级)可以使用当前块的一些像素数据(即,从前一级紧接着传递的像素数据)以及来自与当前块相邻的一个或多个相邻块的一些像素数据执行相应的滤波功能。例如,当SAO滤波器120处理块167时,SAO滤波器120可以参考通过数据总线119从去块滤波器110接收的块167的像素数据。同时,SAO滤波器120也可以参考像素在流水线处理中经过去块滤波器110处理的少数相邻块的数据,例如块162、163、164和166的像素数据。块162、163、164和166中的每一个被认为是与块167相邻的相邻块,因为它与块167相邻(即,与块167边缘相邻或角相邻)。具体地,块163和166与块167边缘相邻,因为块163和166中的每一个与块167共享相应的块边缘。另一方面,块162和164与块167角相邻,因为块162和164中的每一个具有与块167的相应块角相邻的块角。对于去块滤波器110和ALF 130也是如此。也就是说,环路滤波器100的每个滤波级可以参考从前一级(即,帧间/帧内预测模块103或SAO滤波器120)传递的紧邻块的像素数据,以及前一级之前处理过的相邻块的特定像素数据。滤波级当前正在处理的紧邻块(immediateblock)可互换地称为滤波级的“当前块”。当前块所属的图片或帧,即图片160,被称为“当前图片”或“当前帧”。
对于环路滤波器的每个滤波级,除了第一级(即,去块滤波器110),紧邻块的像素数据从前面的滤波级传递;对于第一级(即去块滤波器110),紧邻块的像素数据可以从帧间/帧内预测模块103传递。另一方面,处理紧邻块所需的相邻块的像素数据将由各个滤波级从存储器180获取,因为这些块已由各个滤波级处理。例如,当SAO滤波器120正在处理块167时,块167的像素数据直接从去块滤波器110传递。然而,SAO滤波器120还需要从存储器180中获取所需的特定相邻块像素数据以处理块167。为了处理紧邻块167,SAO可以通过数据总线125从存储器180中获取相邻块162、163、164和166的特定像素数据,而块162、163、164和166的像素数据已经由去块滤波器110在先前的流水线周期中经由数据总线115存储在存储器180中(当去块滤波器110分别处理块162、163、164和166时)。类似地,去块滤波器110和ALF 130中的每一个都可以从前一级(即,分别来自帧间/帧内预测模块103和SAO滤波器120)接收紧邻块的像素数据。同时,去块滤波器110和ALF 130中的每一个可以分别经由数据总线115和数据总线135从存储器180中获取相应紧邻块的相邻块的像素数据。由去块滤波器110获取的相邻块像素数据已经由帧间/帧内预测模块103经由数据总线105存储到存储器180中,作为帧间/帧内预测模块103先前处理相邻块的结果。由ALF 130获取的相邻块像素数据已经被SAO滤波器120经由数据总线125存储到存储器180中,作为SAO滤波器120先前处理相邻块的结果。
在通过环路滤波器100的各个级之后,块通过数据总线139被存储在解码图片缓冲器(decoded picture buffer,简称DPB)190中。帧间/帧内预测模块103可以通过数据总线106来存取DPB 190,以获取存储在其中的滤波图片,该滤波图片用于执行后续的帧间和帧内预测操作。存储在DPB 190中的图片,因为它们已被环路滤波器100滤波以去除特定图片伪影,然后将用作帧间/帧内预测模块103的更理想的参考图片候选,从而增加所得到的编解码效率以及由此产生的视频的主观质量。
并非图1中的所有数据总线在数据传输效率或速度方面相等。例如,数据总线119和129用于将块数据(即,紧邻块的像素数据)从环路滤波器100的滤波流水线中的滤波级直接传递或以其他方式传送到下一级,以及因此具有很高的传输速度。即,在环路滤波器100内将块数据从一个级传送到下一个级几乎没有延迟。另一方面,在数据总线115、125和135中的每一个中存在更多的延迟(latency)。这是因为数据总线115、125和135连接到存储器180,其在物理上的实现通常使用相对低速的内存,例如动态随机存取存储器(dynamicrandom-access memory,简称DRAM)。此外,数据总线115、125和135中的每一个用于获取多于一个相邻块(而不是仅仅一个块)的像素数据,而从多个块存取数据需要更长的存取时间。即,通过数据总线115、125和135的数据存取延迟远大于数据总线119和129的数据存取延迟。换句话说,从存储器180存取像素数据的延迟成本远高于直接在环路滤波器100的滤波级之间传递像素数据的延迟成本。因此,考虑到处理延迟,需要较少来自存储器180的像素数据的数据存取方案被优先选择。
二、去块滤波器
图2示出根据本公开的实施方式的示例设计的图,其中示出了去块滤波方案200。当前正在由滤波级处理的块被称为该滤波级的“紧邻块”或“当前块”。去块滤波器110可以使用去块滤波方案200来执行去块操作以处理立即块168。如图2所示,块163、164、167和168中的每一个是16像素×16像素的块,即宽度上具有十六个像素(即,在x方向)和高度上具有十六个像素的矩形区域(即,在y方向上)。块163、164、167和168的每个像素在图2中由一个小方块表示表示,该方块使用唯一的(x,y)坐标标识。例如,块163的第一像素,即块163左上角的像素,其坐标为(-16,-16),而块163的最后一个像素,即块163右下角的像素,坐标为(-1,-1)。类似地,去块滤波器110当前正在处理的当前块,即块168,具有256个像素的总数,从(0,0)像素开始并以(15,15)像素结束。块164也有256个像素,块164四个角的像素的(x,y)坐标分别是(0,-16),(15,-16),(0,-1)和(15,-1)。块167也有256个像素,块167四个角的像素的(x,y)坐标分别为(-16,0),(-1,0),(-16,15)和(-1,15)。
在本公开中,符号{左上角像素的坐标(x,y),右下角像素的坐标(x,y)}用于指代包含多个像素的矩形区域。按照这个符号,图2的块167可以使用{(-16,0),(-1,15)}来表示,以及当前块168可以使用{(0,0),(15,15)}来表示。类似地,块163和164可以分别被称为{(-16,-16),(-1,-1)}和{(0,-16),(15,-1)}。一列或一行像素可以使用相同的符号来表示。例如,块164的最左列可以被称为{(0,-16),(0,-1)},而块163的最底行可以被称为{(-16,-1),(-1,-1)}。
为了对当前块执行去块操作,去块滤波器110可以沿着当前块的一条或多条虚拟水平线和/或一条或多条虚拟垂直线处理当前块的像素数据。如图2所示,去块滤波器110可以沿着两条虚拟垂直线210和218以及两条虚拟水平线250和258对当前块168执行去块操作。线210、218、250和258是“虚拟的”,因为它们不包含块168的任一实际像素。相反,线210、218、250和258中的每一个是用于分隔两组像素的虚拟边界。例如,线258将块168分成两个子块,两个子块之一包含y坐标为7或更低的像素,两个子块中的另一个包含y坐标的为8或更高的像素。由于去块操作沿着线210、218、250和258执行,因此它们也被称为“去块边界”。
值得注意的是,一些去块边界也是当前块的块边界或边缘,而一些去块边界在当前块的内部。例如,去块边界210和250恰好是块168的左侧和顶部块边界(即边缘),而去块边界218和258位于块168内,即内部去块边界。内部去块边界218和258共同将块168分成四个象限,每个象限包含子块281、282、283或284。块163、164、167和168中的每一个可以被划分为多个非重叠的子块。如图2所示,块168被去块边界218和258分成子块281、282、283和284。同样,块163被分成子块231、232、233和234。块164被划分为子块241、242、243和244,而块167被划分为子块271、272、273和274。
去块滤波器110沿着当前块的垂直去块边界(例如,块168的边界210或218)对当前块执行去块操作,从而使用水平滤波操作顺序地处理穿过垂直去块边界的每一行像素。此外,去块滤波器110还沿着当前块的水平去块边界(例如,块168的边界250或258)执行去块操作,从而使用垂直滤波操作顺序地处理穿过水平去块边界的每一列像素。例如,去块滤波器110可以沿着去块边界210以逐行方式执行水平滤波操作,从y=0的行开始,然后是y=1的行,接着是y=2的行,以此类推,以处理y=15的行结束。
图3示出根据本公开的实施方式的示例设计的图,其中当在去块滤波器110沿着去块边界210执行去块操作时,水平滤波方案300被示出用于处理y=0的行。如图3所示,水平滤波方案300涉及去块边界210两侧的像素。具体而言,水平滤波方案300涉及参考去块边界210两侧的前八个像素,以及相应地更新或修改去块边界210的两侧的前七个像素。去块边界的两侧可以称为p侧和q侧,如图3所标记。根据水平滤波方案300,去块滤波器110可以参考p侧上的像素数据{(-8,0),(-1,0)}和q侧上的像素数据{(0,0),(7,0)}。基于所参考的像素数据,即像素行{(-8,0),(7,0)},去块滤波器110可以更新或以其他方式修改{(-7,0),(6,0)}的每个像素的像素值。即,在执行水平滤波操作时,去块滤波器110可以参考p侧和q侧的每一个上的前八个像素,以及相应地改变p侧和q侧的每一个上的七个像素的值。在本公开中,术语“更新像素”和“修改像素”可互换地用于指代改变像素的像素值的动作。如图3所示,p侧的前7个像素由p0、p1、p2、p3、p4、p5和p6的值分别修改为p0'、p1'、p2'、p3'、p4'、p5'和p6',而q侧的前七个像素从值q0、q1、q2、q3、q4、q5和q6分别修改为q0'、q1'、q2'、q3'、q4'、q5'和q6'。每侧的第八个像素,即像素(-8,0)和(7,0),被参考但未被修改。去块边界210处的显著台阶(step),可能是由于由帧间/帧内预测模块103执行的基于块的预测而造成的伪影,现在通过在行{(-8,0),(7,0)}的水平滤波操作被执行后将像素值{p6-p0,q0-q6}替换为{p6'-p0',q0'-q6'}来进行平滑。
水平滤波方案300示出去块滤波器设置(8,7)。滤波器设置的两个参数分别表示参考的像素数量和更新的像素数量。图4示出根据本公开的实施方式的示例设计的图,其中示出用于处理与图3所示相同的行的水平滤波方案400。水平滤波方案400采用去块滤波器设置(8,5)。也就是说,根据水平滤波方案400,去块滤波器110将在去块边界的每一侧参考前八个像素并相应地更新前五个像素。去块滤波器110可以对图片中的不同块使用不同的滤波器设置。
对穿过去块边界210的每一行顺序地执行使用滤波方案300的水平滤波操作。即,沿着去块边界210,去块滤波器110可以通过以下方式来执行水平滤波操作:参考{(-8,0),(7,0)}和修改{(-7,0),(6,0)},然后参考{(-8,1),(7,1)}和修改{(-7,1),(6,1)},然后参考{(-8,2),(7,2)}和修改{(-7,2),(6,2)}等等,直到去块滤波器110处理穿过去块边界210的最后一行,即,参考{(-8,15),(7,15)}和修改{(-7,15),(6,15)}。
类似地,在采用水平滤波方案400而不是水平滤波方案300的情况下,去块滤波器110可以对穿过去块边界210的每一行顺序地执行水平滤波操作。即,沿着去块边界210,去块滤波器110可以通过以下方式来执行水平滤波操作:参考{(-8,0),(7,0)}和修改{(-5,0),(4,0)},然后参考{(-8,1),(7,1)}和修改{(-5,1),(4,1)},然后参考{(-8,2),(7,2)}和修改{(-5,2),(4,2)}等等,直到去块滤波器110处理穿过去块边界210的最后一行,即参考{(-8,15),(7,15)}和修改{(-5,15),(4,15)}。
去块滤波器110可以使用除滤波方案300或400之外的滤波方案来执行水平滤波操作。去块滤波器110可以利用由两个参数定义的水平滤波方案,第一参数用于定义,对于行,在垂直去块边界的每一侧上有多少来自垂直去块边界的像素被参考,以及第二参数用于定义,对于该行,在垂直去块边界的每一侧上有多少来自垂直去块边界的像素被相应地修改。这两个参数构成了用于处理块的滤波器设置。
去块滤波器110可以应用相同或相似的滤波器设置以用于沿着块168的一条或多条虚拟水平线(例如去块边界250和258)执行垂直滤波操作。图5示出根据本公开的实施方式的示例设计的图,其中垂直滤波方案500和580被示出,垂直滤波方案500和580用于分别沿着去块边界250和258执行垂直滤波操作。类似于采用水平滤波方案300或400的水平滤波操作,在执行垂直滤波操作时,去块滤波器110可以参考去块边界250或258的每一侧上的第一数量的像素并相应地修改去块边界250或258的每一侧上第二数量的像素,而第一数量和第二数量由滤波器设置中的两个参数定义。例如,当去块滤波器110使用滤波器设置(8,6)根据滤波方案500沿去块边界250对x=0列执行垂直滤波操作时,去块滤波器110可以参考在p侧的{(0,-8),(0,-1)}的中八个像素和q侧的{(0,0),(0,7)}中的八个像素,然后相应地修改{(0,-6),(0,5)}中的十二个像素。同样,去块滤波器110可以使用滤波器设置(8,5)根据滤波方案580沿去块边界258对x=0列执行垂直滤波操作,其中去块滤波器110可以参考p侧的{(0,0),(0,7)}中的八个像素和q侧的{(0,8),(0,15)}中的八个像素,然后相应地修改{(0,3),(0,12)}中的十个像素。去块滤波器110可以对穿过去块边界250和258的每一列逐列沿着去块边界250和258分别执行垂直滤波操作。即,沿着去块边界250,去块滤波器110可以通过以下方式来执行垂直滤波操作:参考{(0,-8),(0,7)}和修改{(0,-6),(0,5)},然后参考{(1,-8),(1,7)}和修改{(1,-6),(1,5)},然后参考{(2,-8),(2,7)}和修改{(2,-6),(2,5)}等等,直到去块滤波器110处理穿过去块边界250的最后一列,即参考{(15,-8),(15,7)}和修改{(15,-6),(15,5)}。同样,沿着去块边界258,去块滤波器110可以通过以下方式来执行垂直滤波操作:参考{(0,0),(0,15)}和修改{(0,3),(0,12)},然后参考{(1,0),(1,15)}和修改{(1,3),(1,12)},然后参考{(2,0),(2,15)}和修改{(2,3),(2,12)}等等,直到去块滤波器110处理穿过去块边界250的最后一列,即参考{(15,0),(15,15)}和修改{(15,3),(15,12)}。
值得注意的是,在沿着去块边界210执行水平滤波操作的过程中,去块滤波器110可以对当前块的子块以及一个或多个相邻块的子块进行操作。例如,在使用水平滤波方案300沿去块边界210对当前块168执行水平滤波操作时,去块滤波器110可以参考{(-8,0),(-1,15)}中的像素数据以及修改{(-7,0),(-1,15)}中的像素数据,这两个区域都在相邻块167中。同时,去块滤波器110可以参考{(0,0),(7,15)}中的像素数据以及修改{(0,0),(6,15)}中的像素数据,这两个区域都在当前块168中。
图6示出根据本公开的实施方式的示例设计的图,其中根据去块滤波方案600,去块滤波器110仅执行水平滤波操作而不执行垂直滤波操作。根据去块滤波方案600,去块滤波器110首先沿着块167的去块边界610和618,然后沿着块168的去块边界210和218执行水平滤波操作。通过该处理,子块272和274中的像素数据被修改两次,一次是在沿着去块边界618执行的水平滤波期间作为q侧的子块被修改,然后在沿着去块边界210执行的水平滤波期间作为p侧的子块再次被修改。即,当去块滤波器110完成对块167的处理时,子块272和274仅被“部分滤波”。直到去块滤波器110完成沿着去块边界210的水平滤波,子块272和274才变为“完全滤波”。类似地,子块281和283中的像素数据被修改两次,一次是在沿着去块边界210执行的水平滤波期间作为q侧的子块被修改,然后在沿着去块边界218执行的水平滤波期间作为p侧的子块再次被修改。因此,当去块滤波器110完成沿去块边界210和218处理块168时,子块281和283被完全滤波,但是子块282和284将保持部分滤波直到去块滤波器110完成处理下一个块(即,块168右侧紧邻块)。一般来说,在去块滤波器110处理完一个块之后,作为结果产生一个滤波块,其包括一个或多个完全滤波的子块和一个或多个部分滤波的子块。例如,在去块滤波器110处理完块167之后,产生一个滤波块,它由两个完全滤波的子块271和273以及两个部分滤波的子块272和274组成。同理,在去块滤波器110完成对块168的处理,产生一个滤波块,它由两个完全滤波的子块281和283以及两个部分滤波的子块282和284组成。需要注意的是,当去块滤波器110完成对块168的处理,子块272和274被完全滤波。去块滤波器110可以将完全滤波的子块272和274与完全滤波的子块281和283一起作为输出块输出到环路滤波流水线100的下一个滤波级,例如SAO滤波器120。输出块可以作为下一个流水线周期中将被SAO滤波器120处理的下一个当前块。
尽管去块滤波方案600展示了仅沿垂直去块边界执行水平滤波(即,没有垂直滤波),但是其中仅沿水平去块边界执行垂直滤波操作(即,没有水平滤波)的去块滤波方案可以通过交换图6中的行和列容易地从去块滤波方案600导出。
当去块滤波器110既执行水平滤波操作又执行垂直滤波操作时,存在类似的场景。再参考图2,其中去块滤波器110对块163、164、167和168中的每一个执行水平和垂直滤波操作。水平滤波操作沿着两个垂直去块边界执行,例如,块168的去块边界210和218。垂直滤波操作也沿着两个水平去块边界执行,例如块168的去块边界250和258。当去块滤波器110完成对块164的处理时,只有子块241被完全滤波,而子块242、243和244仅被部分滤波,因为当去块滤波器110处理块164的一些相邻块时,它们中的每一个子块的像素数据可能会再次被修改。例如,当去块滤波器110处理块168并沿去块边界250执行垂直滤波操作时,子块243和244的像素值可以再次被修改。事实上,直到去块滤波器110完成对块168的处理,子块243才被完全滤波。当去块滤波器110完成对块164的处理时,得到的滤波块,包括一个完全滤波的子块241和三个部分滤波的子块242-244,通过数据总线115被存储在存储器180中,使得去块滤波器110可以在处理块168时,例如,在沿着去块边界250执行垂直滤波操作时,至少获取部分滤波的子块243和244。同样,在去块滤波器110完成的时候处理块167,得到的滤波块,包括一个完全滤波的子块271和三个部分滤波的子块272-274,通过数据总线115存储在存储器180中,使得去块滤波器110可以在在处理块168时,例如,当沿去块边界210执行水平滤波操作时,至少获取部分滤波的子块272和274。去块滤波器110完成对块168的处理,将得到的滤波块,包括一个完全滤波的子块281和三个部分滤波的子块282-284,通过数据总线115被存储在存储器180中,使得去块滤波器110在处理块168的相邻块时,例如,块168右侧紧邻块或块168的下方紧邻块,可以获取部分滤波的子块282-284中的任一。
滤波块可以包括与当前块重叠的子块,以及与当前块的一个或多个相邻块重叠的子块。例如,在去块滤波器110使用去块滤波方案200完成对当前块168的处理之后,生成滤波块。滤波块可以包括一个或多个完全滤波的子块,即子块243、272和281。这些子块被完全滤波,因为它们的像素值不会被去块滤波器110再次修改以处理图片的任一未来块(futureblock)。在完全滤波的子块中,子块281与当前块168重叠,而子块243和272分别与相邻块164和167重叠。滤波块还可以包括一个或多个部分滤波的子块,即子块244、274、282、283和284。这些子块被部分滤波是因为它们的像素值可以被去块滤波器110再次修改以处理图片的未来块。例如,当去块滤波器110处理块167的下方紧邻块时,子块274的一些像素值可以被再次修改。作为另一示例,在去块滤波器110处理块168下方或右侧紧邻块时,子块284的一些像素值可以被再次修改。在部分滤波的子块中,子块282-284与当前块168重叠,而子块244和274分别与相邻块164和167重叠。
此外,当去块滤波器110完成对块的处理时,输出块可以被传递到下一滤波级,其中输出块包括一个或多个完全滤波的子块。例如,在去块滤波器110完成对块168的处理时,去块滤波器110可以输出输出块,输出块包括完全滤波的子块234、243、272和281。输出块可以从去块滤波器110通过数据总线119传送到SAO滤波器120,输出块是SAO滤波器120在下一个流水线周期中要处理的下一个当前块。
与图2-图6一起呈现的示例实施例基于去块滤波器110是八抽头滤波器,即,当沿着去块边界执行水平滤波操作和/或垂直滤波操作时,参考p侧和q侧的每一侧上的八个像素。相同的方法可以应用于任意数量的抽头的去块滤波器。假设去块滤波器110是Nref抽头滤波器,其中Nref是正整数。根据本公开的设计,去块滤波器110可以接收包围图片的{(-N,-N),(N-1,N-1)}的矩形区域的若干块。{(-N,-N),(N-1,N-1)}的矩形区域可能包括当前块{(0,0),(N-1,N-1)},以及三个当前块的相邻块,即{(-N,-N),(-1,-1)},{(0,-N),(N-1,-1)}和{(-N,0),(-1,N-1)}。去块滤波器110可以对当前块执行水平和垂直滤波操作,从而生成滤波块,该滤波块包括一个完全滤波的子块{(0,0)、(Nref-1,Nref-1)}以及三个部分滤波的子块{(0,Nref),(Nref-1,N-1)},{(Nref,0),(N-1,Nref-1)}和{(Nref,Nref),(N-1,N-1)}。去块滤波器110可以将输出块{(-Nref,-Nref),(N-Nref-1,N-Nref-1)}输出到SAO滤波器120,该输出块包括四个完全滤波的子块。在图2-5所示的示例实施例中,N=16,Nref=8。
三、SAO滤波器
如上所述,从去块滤波器110传递到SAO滤波器120的输出块成为在下一个流水线周期中由SAO滤波器120处理的当前块。图7示出根据本公开的实施方式的示例设计的图,其中示出了SAO滤波方案700,其用于经由SAO滤波器120处理当前块710。当前块710是来自去块滤波器110的结果输出块,其包括完全滤波的子块(从去块滤波器110的角度来看)234、243、272和281。当前块710已经通过数据总线119从去块滤波器110传递。SAO滤波器120根据一个参数的滤波器设置执行SAO滤波操作,其中该参数指定从当前块中的像素在每个方向上参考了多少像素,基于该参数更新或以其他方式修改当前像素的像素值。即,SAO滤波操作是逐像素操作。如图7所示,SAO滤波方案700采用1像素的SAO滤波器设置。以当前块710的像素760为例。在一些实施例中,SAO滤波器120可以参考像素760在左方向、右方向、上方向和下方向中的每一个方向上的1个相邻像素,然后相应地修改像素760。也就是说,SAO滤波器120可以参考像素761、762、763和764,基于这些像素SAO滤波器120可以修改像素760的值。在一些实施例中,SAO滤波器120可以进一步参考每个像素中的像素760在左上方向、右上方向、左下方向和右下方向的每一个方向上的1个相邻像素。也就是说,SAO滤波器120在SAO滤波操作期间可以进一步参考像素765、766、767和768。基于像素761-768的像素值,SAO滤波器120可以相应地修改像素760的值。SAO滤波操作可用于减少由帧间/帧内预测模块103执行的基于块的帧间/帧内预测导致的振铃伪影。因此,SAO滤波器120也可被称为“去振铃滤波器”。
由于环路滤波器100被设计成以流水线方式操作,环路滤波器100的每一级优选地输出相同大小的输出块。直接从去块滤波器110接收的像素数据不足以使SAO滤波器120生成与去块滤波器110的输出块大小相同的输出块,即当前块710。为了生成与当前块710大小相同的输出块,SAO滤波器120需要从块168的一个或多个相邻块接收额外的像素数据。参照图7,为了生成与当前块710大小相同的输出块720,SAO滤波器120需要接收由输入块730表示的像素数据,输入块730包括当前块710和由{(-10,-10),(7,-9)}和{(-10,-8),(-9,7)}组成的区域(即在输入块730内但在当前块710之外L形区域)。当当前块710通过数据总线119从去块滤波器110直接被传递到SAO滤波器120时,SAO滤波器120需要经由数据总线125从存储器180中取出L形区域的像素数据。如上所述,从存储器180获取数据是一个缓慢的过程。即,SAO滤波器120需要从存储器180获取L形区域的像素数据,结果引入了延迟。SAO滤波器120需要从存储器180获取而不是从去块滤波器110接收的像素数据越多,延迟越差。
例如,2个像素的SAO滤波器设置可能会加剧从存储器180获取像素数据而引入的延迟。图8示出根据本公开的实施方式的示例设计的图,其中示出了SAO滤波方案800,其用于经由SAO滤波器120处理当前块710。如图8所示,SAO滤波方案800采用两个像素的SAO滤波器设置。即,SAO滤波器120基于相对于像素在每个方向上相邻的两个像素的像素值来修改像素。以当前块710的像素760为例。如图8所示,2像素的SAO滤波器设置要求SAO滤波器120相对于像素760在每个方向上参考两个相邻像素,其共同表示为25个像素的方阵,其中像素760位于矩阵的中间并且24个像素围绕像素760。矩阵的第一层包括紧邻着像素760的8个像素,即像素761-768。矩阵的第二层,即围绕第一层的下一个像素层,包括额外的16个像素,包括像素861–876。
与SAO滤波方案700类似,为了使用SAO滤波方案800生成与当前块710大小相同的输出块,除了当前块710之外,SAO滤波器120需要从块168的一个或多个相邻块接收额外的像素数据。如图8所示,为了生成与当前块710大小相同的输出块820,SAO滤波器120需要接收由输入块830表示的像素数据,输入块830包括当前块710和由{(-12,-12),(7,-9)}和{(-12,-8),(-9,7)}组成的区域(即在输入块830内但在当前块710之外的L形区域)。虽然当前块710通过数据总线119从去块滤波器110直接传递到SAO滤波器120,但SAO滤波器120需要通过数据总线125从存储器180中取出L形区域的像素数据。图8的L形区域大于图7的L形区域。预计SAO滤波方案800将引入比SAO滤波方案700更多的延迟。
值得注意的是,L形区域的像素数据,如上文针对每个SAO滤波方案700和800所描述的,是由去块滤波器110先前执行的去块处理产生的并随后经由总线115保存在存储器180中。然后SAO滤波器120经由总线125从存储器180获取像素数据,同时SAO滤波器120处理当前块。然而,在一些可选实施例中,从存储器180获取的L形区域的像素数据可能已经由SAO滤波器120处理,如下文所述。
在SAO滤波方案700的一些实施例中,除了从存储器180读取或获取像素数据以执行SAO滤波操作之外,SAO滤波器120还可写入或存储至少一部分产生的输出块的像素数据(例如,输出块720或820)到存储器180以供将来参考,即,当SAO滤波器120将来处理其他块时该像素数据可被SAO滤波器120获取。在SAO滤波方案700中,在产生输出块720之后,SAO滤波器120可以通过数据总线125将由输出块720的最右列和最底行以及当前块710的最右列和最底行组成的L形区域存储到存储器180中。在处理未来块时,SAO滤波器120可以通过数据总线125存取存储器180以获取L形区域的特定像素数据。例如,当处理块710的右侧紧邻块时,SAO滤波器120可以获取输出块720的最右列和当前块710的最右列。当处理块710的下方紧邻块时,SAO滤波器120可以获取输出块720的最底行和当前块710的最底行。
同样,在SAO滤波方案800的一些实施例中,在生成输出块820之后,SAO滤波器120可以通过数据总线125将由输出块820的两个最右列和两个最底行以及当前块710的两个最右列和两个最底行组成的L形区域存储到存储器180中。即,L形区域由{(4,-12),(7,7)}和{(-12,4),(7,7)}的组合表示。SAO滤波器120可以在处理未来块时通过数据总线125存取存储器180以获取L形区域的特定像素数据。例如,SAO滤波器120可以在处理块710的右侧紧邻块时获取{(4,-12),(7,7)}。SAO滤波器120可以在处理块710的下方紧邻块时获取{(-12,4),(7,7)}。L形区域有两段,第一段是{(4,-12),(7,7)},第二段是{(-12,4),(7,7)}。这两个段中的每一个都具有两倍于所采用的SAO滤波器设置的宽度。对于SAO滤波方案800,SAO滤波器设置=2(即,两个像素),因此L形区域的两个段中的每个段具有4个像素的宽度。对于SAO滤波方案700,SAO滤波器设置=1(即,一个像素),因此L形区域的两个段中的每一个都具有2个像素的宽度。
此外,SAO滤波器120可以将输出块720或820输出到环路滤波流水线100的下一个滤波级,例如,ALF 130。ALF 130可以使用输出块720或820作为下一个流水线周期中要处理的下一个当前块。
与图7和图8一起呈现的示例性实施例以SAO滤波器120分别是一抽头滤波器(即滤波器设置=1像素)和双抽头滤波器(即滤波器设置=2像素)为基础。一抽头SAO滤波器通过参考在所有方向上特定像素的最相邻的一个像素来修改特定像素,即围绕特定像素的第一层8个像素。双抽头SAO滤波器通过参考所有方向上最相邻的两个像素来修改特定像素,即围绕特定像素的第一层8个像素加上围绕第一层的第二层16个像素。相同的方法可以应用于任意数量的抽头的SAO滤波器。假设SAO滤波器120是Nf2抽头滤波器(即,滤波器设置=Nf2个像素),其中Nf2是正整数。根据本公开的设计,SAO滤波器120可以接收去块滤波器110的输出块,即块{(-Nref,-Nref),(N-Nref-1,N-Nref-1)},作为SAO滤波器120的当前块710。SAO滤波器120可以进一步存取存储器180以获取输入块(例如,输入块730或830)的L形区域的像素数据,L形区域是{(-Nref-2Nf2,-Nref-2Nf2),(N-Nre-1f,-Nref-1)}和{(-Nref-2Nf2,-Nref),(-Nref-1,N-Nref-1)}。SAO滤波器120可以执行SAO滤波操作,例如SAO滤波方案700或800,以及相应地输出滤波块(例如,输出块720或820),即{(-Nref-Nf2,-Nref-Nf2),(N-Nref-1-Nf2,N-Nref-1-Nf2)}。在一些实施例中,SAO滤波器120可以将由输出块的L形区域表示的像素数据存储在存储器180中以供SAO滤波器120处理未来块,其中L形区域由{(N-Nref-2Nf2,-Nref-2Nf2),(N-Nref-1,N-Nref-1)}和{(-Nref-2Nf2,N-Nref-2Nf2),(N-Nref-1-2Nf2,N-Nref-1)}。
四、低延迟数据方案
如上所述,SAO滤波方案700和800中的每一个都需要存取(例如,从存储器180读取像素数据和/或将像素数据写入到)存储器180。上面还描述了存取存储器180是慢处理(slow process),这增加了SAO滤波器120的处理延迟。减少存储器存取的措施是优选的,以便可以减少延迟。例如,如果SAO滤波器120需要从存储器180获取较少的像素数据,则可以减少延迟。此外,如果SAO滤波器120需要将较少的像素数据存储到存储器180,也可以减少延迟。
图9示出了根据本公开的实施方式的示例设计,其中针对去块滤波器110和SAO滤波器120的组合呈现数据方案900。在数据方案900中,去块滤波器110采用滤波器设置(8,7),以及SAO滤波器120采用1像素的滤波器设置。去块滤波器110已经对块163、164、167和168执行了水平滤波和垂直滤波。例如,去块滤波器110已经使用去块滤波方案300沿着去块边界210和218对块168执行了水平滤波。此外,去块滤波器110还使用滤波设置(8,7)沿去块边界250和258对块168执行垂直滤波。根据数据方案900,在去块滤波器110之后完成块168的处理后,去块滤波器110可以向SAO滤波器120输出输出块910,其不仅包括完全滤波的子块234、243、272和281,还包括L形区域911。即,根据数据方案900的输出块910是附属于输出块710的L形区域911。如下文别处所述,将L形区域911包括在输出块910中作为SAO滤波器120的下一个当前块有助于减少SAO滤波器120需要从存储器180获取的像素数据量,从而减少引入SAO滤波器120中的延迟。
L形区域911由部分滤波的子块244、274、282、283和284中的每一个子块的相应部分组成。具体地,L形区域911由以下组成:子块274(即{(-8,8),(-1,8)})的一部分,子块283(即{(0,8),(7,8)})的一部分,子块284(即像素(8,8))的一部分,子块282(即{(8,0),(8,7)})的一部分和子块244(即{(8,-8),(8,-1)})的一部分。值得注意的是,每个部分都与完全滤波的子块234、243、272和281之一相邻。具体地,部分滤波的子块274(即{(-8,8),(-1,8)})的一部分与完全滤波的子块272边缘相邻;部分滤波的子块283(即{(0,8),(7,8)})与的一部分完全滤波的子块281边缘相邻;部分滤波的子块284(即像素(8,8))的一部分与完全滤波的子块281角相邻;部分滤波的子块282(即{(8,0),(8,7)})的一部分与完全滤波的子块281边缘相邻;部分滤波的子块244(即{(8,-8),(8,-1)})的一部分与完全滤波的子块243边缘相邻。
值得注意的是,L形区域911的像素不期望从处理未来块的去块滤波器110修改或以其他方式更新,因为去块滤波器设置=(8,7)被去块滤波器110所采用。因此,即使L形区域911的像素属于部分滤波的子块,L形区域911的像素也准备好被SAO滤波器120使用。例如,即使L形区域911的像素{(0,8),(7,8)}属于部分滤波的子块283,这些像素也不会被沿着去块边界950的垂直去块滤波操作进一步修改,因为像素{(0,8),(7,8)}种的每个像素是去块边界950的p侧上的第8个像素,它们仅被参考而不会被沿去块边界950的垂直去块滤波操作修改。
L形区域911包括两个段,即具有{(-8,8),(8,8)}的像素的水平段和具有{(8,-8),(8,8)}的像素的垂直段。去块滤波器设置的两个参数之间的差值(即,8-7=1个像素)等于L形区域911的水平和垂直段中的每一个的宽度。如果两个不同的滤波器设置由去块滤波器110分别用于执行垂直和水平滤波操作,L形区域911的水平段的宽度可以等于或小于垂直滤波操作所使用的滤波器设置的两个参数之间的差值。而L形区域911的垂直段的宽度可以等于或小于水平滤波操作所使用的滤波器设置的两个参数之间的差值。例如,去块滤波器110可以采用水平滤波方案400(其具有去块滤波器设置(8,5))以及垂直滤波方案500(其具有去块滤波器设置(8,6))来进行处理块163、164、167和168。由此可见,L形区域911的水平段最多可以具有8-6=2个像素的宽度,而L形区域911的垂直段最多可以具有8–5=3个像素的宽度。具体地,L形区域911的水平段可以与{(-8,8),(10,9)}的区域一样宽,而L形区域911的垂直段可以与{(-8,8),(10,9)}的区域一样宽。
在去块滤波器110的输出块910中包含L形区域911,减少了SAO滤波器120需要从存储器180获取的像素数据。从存储器180取出的像素数量的节省等于L形区域911中包含的像素数量。如图9所示,在输出块910(去块效应滤波器110输出的)中包含L形区域911使得SAO滤波器120能够使用由输入块930(SAO滤波器120输入的)表示的像素数据来生成输出块920(SAO滤波器120输出的)。输出块920与完全滤波的子块234、243、272和281的组合完全重叠,因此具有与输出块720或820相同的大小,尽管输出块920的位置从输出块720或820的位置偏移。输入块930由输出块910和由{(-9,-9),(-9,8)}和{(-9,-9),(8,-9)}组成的L形区域938组成。从SAO滤波器120的角度来看,SAO滤波器120通过以下方式来接收输入块930:通过数据总线119直接从去块滤波器110接收输出块910(包括输出块710和L形区域911),以及接着通过数据总线125从存储器180接收L形区域938。与SAO滤波方案700相比,SAO滤波器120需要从存储器180获取L形区域{(-10,-10),(7,-9)}和{(-10,-8),(-9,7)}的像素数据,数据方案900只需要SAO滤波器120从存储器180获取L形区域938的像素数据,这基本上减少了所获取的像素数据量50%。获取的像素数据量减少50%转化为在SAO滤波器120中引入的延迟基本上减少了50%,从而大大提高了环路滤波器100的处理效率。
在一些实施例中,SAO滤波器120可以将从去块滤波器110接收到的L形区域911的像素数据经由总线125存储到存储器180中,使得L形区域911的像素数据可由SAO滤波器120再次获取以处理未来块。也就是说,除了从去块滤波器110接收L形区域911的像素数据并使用L形区域911的像素数据执行SAO滤波操作之外,SAO滤波器120可以进一步将L形区域911的像素数据存储到存储器180。然而,在一些可选实施例中,SAO滤波器120可以在将存储像素数据存储到存储器180之前更新L形区域911的像素数据。也就是说,L形区域911的像素数据可以作为SAO滤波器120执行当前块的SAO滤波操作的结果而被更新,然后被存储到存储器180以供将来使用。
图10示出了根据本公开的实施方式的示例设计,其中针对去块滤波器110和SAO滤波器120的组合呈现数据方案1000。在数据方案1000中,去块滤波器110采用滤波器设置(8,6),以及SAO滤波器120采用2像素的滤波器设置。去块滤波器110已经对块163、164、167和168执行了水平滤波和垂直滤波。例如,去块滤波器110已经使用滤波设置(8,6)沿着去块边界210和218对块168执行了水平滤波。此外,去块滤波器110还使用滤波设置(8,6)沿去块边界250和258对块168执行垂直滤波。根据数据方案1000,在去块滤波器110完成处理块168后,去块滤波器110可以向SAO滤波器120输出输出块1010,其不仅包括完全滤波的子块234、243、272和281,而且包括L形区域1011。即,输出块1010根据数据方案1000是附属于输出块710的L形区域1011。类似于数据方案900,将L形区域1011包含在输出块1010中,其用作SAO滤波器120的下一个当前块,有助于减少SAO滤波器120需要从存储器180获取的像素数据量,从而减少SAO滤波器120中引入的延迟。
类似于数据方案900,在数据方案1000中,从存储器180获取的像素数量的节省等于L形区域1011中包含的像素数量。如图10所示,在输出块1010(去块效应滤波器110输出的)中包含L形区域1011使得SAO滤波器120能够使用由输入块1030(SAO滤波器120输入的)表示的像素数据来生成输出块920(SAO滤波器120输出的)。输出块920具有与输出块720或820相同的大小,尽管输出块920的位置从输出块720或820的位置偏移。输入块1030由以下组成:输出块1010和由{(-10,-10),(-9,9)}和{(-10,-10),(9,-9)}组成的L形区域1038。从SAO滤波器120的角度来看,SAO滤波器120通过以下方式来接收输入块1030:通过数据总线119直接从去块滤波器110接收输出块1010(包括输出块710和L形区域1011),以及通过数据总线125从存储器180接收L形区域1038。与SAO滤波方案800相比,其中SAO滤波器120需要从存储器180中获取L形区域的像素数据{(-12,-12),(7,-9)}和{(-12,-8),(-9,7)},数据方案1000只需要SAO滤波器120从存储器180获取L形区域1038的像素数据,这比所获取的像素数据量减少了50%以上。所获取的像素数据量的减少转化为在SAO滤波器120中引入的延迟基本上减少了50%,从而大大提高了环路滤波器100的处理效率。值得注意的是,在数据方案900和1000中,即使去块滤波器110(例如,L形区域911或1011)输出的额外像素数据量与SAO滤波器120需要从存储器180中获取的像素数据量减少大致相同,环路滤波器100的总延迟仍然通过采用数据方案900或1000得到改善。这是因为从去块效应滤波器110经由数据总线119传输数据到SAO滤波器120的速度远快于SAO滤波器120和存储器180之间经由数据总线125传输数据的速度。
由于数据方案900和1000涉及去块滤波器110和SAO滤波器120,应当注意L形区域911和1011的大小不仅由去块滤波器110所采用的滤波器设置决定还由SAO滤波器120所采用的滤波器设置决定。具体地,L形区域911和1011的大小由去块滤波器110所采用的滤波器设置和SAO滤波器120所采用的滤波器设置之间的更紧急或更严格的要求来规定。例如,在去块滤波器110对水平和垂直滤波采用滤波器设置(8,6)并且SAO滤波器120采用1像素的滤波器设置的情况下,从去块滤波器110经由数据总线119发送到SAO滤波器120的输出块将是块910而不是块1010。这是因为块910已经包含SAO滤波器120需要从去块滤波器110获得的用于生成输出块920的所有像素数据,并且与块910相比包含在块1010中的额外数据将无论如何不会被用于SAO滤波器120。又例如,在去块滤波器110对水平和垂直滤波采用滤波器设置(8,7)以及SAO滤波器120采用2像素的滤波器设置的情况下,从去块滤波器110经由数据总线119发送到SAO滤波器120的输出块也将是块910而不是块1010。这是因为即使SAO滤波器120需要L形区域1011中的所有像素数据来生成输出块920,去块滤波器110不能将L形区域1011中的至少一部分像素数据提供给SAO滤波器120。具体地,去块滤波器110不能提供{(-8,9),(9,9)}或{(9,-8),(9,9)}区域的像素数据,因为这些区域中的像素值会由将处理未来块的去块滤波器110作进一步修改,例如,沿去块边界950执行垂直滤波操作。即,L形区域911或1011的水平和垂直段中的每一个的宽度可以表示为:
WL=min(Nf2,Nref-Nrev) (1)
其中Nref是去块滤波器110的滤波器设置的第一参数,它定义了在去块边界的p侧和q侧的每一个上被参考的像素的数量,其中Nrev是去块滤波器110的滤波器设置的第二参数,其定义了去块边界的p侧和q侧的每一个上被修改或更新的像素的数量,以及其中Nf2是SAO滤波器120的滤波器设置的参数,它定义了在每个方向上从相应像素被参考的像素的数量,用于修改相应像素的像素值。
如本文上面其他地方所述,L形区域911和1011各自包含在输出块910和1010中减少了SAO滤波器120需要从存储器180获取的像素数据量。从存储器180获取的像素数据不仅转化为如上所述的延迟改进,而且还转化为硬件成本节省,这与环路滤波器100用于处理图片的各种编解码树块的扫描序列有关,如下所述。SAO滤波器120使用行缓冲器(linebuffer)来存储从存储器180获取的像素数据,直到不再需要像素数据为止。因此,从存储器180获取的像素数据的减少也转化为临时存储像素数据所需的更小的行缓冲器大小。
在一些实施例中,SAO滤波器120可以将从去块滤波器110接收的L形区域1011的像素数据经由总线125存储到存储器180中,使得L形区域1011的像素数据可被SAO滤波器120再次获取以处理未来块。也就是说,除了从去块滤波器110接收L形区域1011的像素数据并使用L形区域1011的像素数据执行SAO滤波操作之外,SAO滤波器120还可以将L形区域1011的像素数据存储到存储器180中。然而,在一些可选实施例中,SAO滤波器120可以在将像素数据存储到存储器180之前更新L形区域1011的像素数据。即,L形区域1011的像素数据由于SAO滤波器120对当前块执行SAO滤波操作而被更新,然后被存储到存储器180以供将来使用。
图11示出根据本公开的实施方式的示例设计,其中两个扫描序列1110和1120被示出。图片1150是由帧间/帧内预测模块103使用基于块的帧内和/或帧间预测技术生成的重构图片,以及图片1150当前由环路滤波器100处理。图片1150可以是包含亮度信息的亮度图片,也可以是包含色度信息的色度图片。如图11所示,图片1150被划分为十六个编解码树块(coding tree block,简称CTB),每行(即,一个CTU行)中具有四个CTB。每个CTB可以进一步划分为多个块,这些块由环路滤波器100执行的基于块的滤波处理顺序地处理,例如块163、164、167和168。
在一些实施例中,环路滤波器100可以采用扫描序列1110以及按照光栅扫描(raster scan)模式1115处理图片1150的CTB。即,环路滤波器100在改变为沿正x方向处理下一个CTU行之前可以也沿正x方向处理CTU行的每个CTB,直到图片1150的每个CTB都被处理。对于沿着图片1150的x方向的每个像素位置,由SAO滤波器120从存储器180获取的像素数据被存储在行缓冲器中,直到SAO滤波器120完成对当前CTU行的处理并开始处理下一个CTU。数据方案900或1000的采用减少了SAO滤波器120需要从存储器180获取的像素数据量,如本文上面其他地方所描述的,导致行缓冲器的大小减小。具体地,对于图片1150沿着x方向的每个像素位置,数据方案900或1000使得行缓冲器能够减少由参数Nsaved表示的像素数量,其等于L形区域911或1011的水平段的宽度,即WL,如等式(1)所示。即,对于图片1150沿着x方向的每个像素位置,Nsaved=WL=min(Nf2,Nref-Nrev)。考虑到整个图片1150,受益于采用使用光栅扫描模式1115的数据方案900或1000,行缓冲器大小的总减少是:
Line Buffer Size Saving=Nsaved×Wpic×B (2)
其中Wpic是图片1150的宽度,以像素为单位进行测量,B是用于表示每个像素的比特数。
在一些实施例中,环路滤波器100可以采用扫描序列1120并且按照光栅扫描模式1125处理图片1150的CTB。在扫描序列1120中,图片1150的CTB被分成几个图块(tile),例如图块1151和1152。环路滤波器100在改变为沿着正x方向处理图块中的下一个CTU行之前,也沿正x方向处理图块内的CTU行的每个CTB,然后,直到图片1150的每个CTB都被处理。在按照光栅扫描模式1125处理完图块1151中的每个CTB之后,环路滤波器100可以从图块1151移动到图块1152以继续处理其中的CTB,也遵循光栅扫描模式1125。因此,受益于采用使用光栅扫描模式1125的数据方案900或1000,行缓冲器大小的总减少是:
Line Buffer Size Saving=Nsaved×Wtile×B (3)
其中Wtile是图块1151和1152的宽度,以像素为单位测量,B是用于表示每个像素的比特数。在图片1150的图块不具有相同宽度的情况下,等式(3)中的Wtile由图片1150的所有图块的最大宽度确定。例如,如果图块1151的宽度大于图块1152的宽度,则图块1151的宽度作为等式(3)中的Wtile
除了行缓冲器中的尺寸节省之外,数据方案900和1000可以通过CTU高度缓冲器中的尺寸节省而使SAO滤波器120受益。CTU高度缓冲器提供与行缓冲器相似的功能,除了CTU高度缓冲器用于存储由SAO滤波器120从存储器180获取的像素数据(对于该沿y方向的图片1150的每个CTU行的每个像素位置)。因此,光栅扫描模式1115在CTU高度缓冲器中节省的大小为:
CTU Height Buffer Size Saving=Nsaved×HCTU×B (4)其中HCTU是图片1150的每个CTB的高度,以像素为单位测量,B是用于表示每个像素的比特数。对于光栅扫描模式1125,其中存在垂直图块的,数据方案900和1000也导致垂直图块缓冲器中的尺寸节省。垂直图块缓冲器用于存储当前垂直图块的最右行,以用于处理位于当前垂直图块的右侧紧邻垂直图块。因此,用于光栅扫描模式1125的垂直图块缓冲器中节省的大小为:
Vertical Tile Buffer Size Saving-Nsaved×Htile×B (5)其中Htile是图片1150的垂直图块的最大高度,以像素为单位测量,以及可以与图片1150的高度一样高。
在数据方案900和1000中提出的关于去块滤波器110向SAO滤波器120发送比块710更多的像素数据的想法也适用于去块滤波器110仅执行水平和垂直滤波操作之一的情况。例如,去块滤波方案600可被修改,使得去块滤波器110向SAO滤波器120输出还包括一些部分滤波块的部分的输出块。图12示出根据本公开的实施方式的示例设计,其中针对去块滤波器110和SAO滤波器120的组合呈现数据方案1200。在数据方案1200中,去块滤波器110采用滤波器设置(8,6),以及SAO滤波器120采用2像素的滤波器设置。去块滤波器110已经使用具有滤波器设置(8、6)的去块滤波方案600执行了水平滤波,从而生成完全滤波的子块272、274、281和283,以及部分滤波的子块282和284。根据数据方案1200,在去块滤波器110完成对块168的处理之后,去块滤波器110可以向SAO滤波器120输出输出块1210,输出块1210不仅包括完全滤波的子块272、274、281和283,还包括矩形区域1211。类似于数据方案900和1000,将矩形区域1211包含到输出块1210中作为SAO滤波器120的下一个当前块,是有帮助的在减少SAO滤波器120需要从存储器180获取的像素数据量,从而减少引入SAO滤波器120中的延迟以及节省SAO滤波器120所需的行缓冲器和/或CTU高度缓冲器的大小。
如图12所示,矩形区域1211包含部分滤波的子块282和284的相应部分(即,分别为{(8,0),(9,7)}和{(8,8),(9,15)}),其中相应部分与完全滤波的子块之一(即,分别为子块281和283)相邻。此外,类似于L形区域911或1011的宽度,矩形区域1211的宽度由等式(1)确定。
在一些实施例中,SAO滤波器120可以将从去块滤波器110接收的矩形区域1211的像素数据经由总线125存储到存储器180,从而矩形区域1211的像素数据可由SAO滤波器120再次获取以处理未来块。也就是说,除了从去块滤波器110接收矩形区域1211的像素数据以及使用矩形区域1211的像素数据执行SAO滤波操作之外,SAO滤波器120还可以存储矩形区域1211的像素数据到存储器180。然而,在一些可选实施例中,SAO滤波器120可以在将像素数据存储到存储器180之前更新矩形区域1211的像素数据。也就是说,矩形区域1211的像素数据可以是由于SAO滤波器120执行当前块的SAO滤波操作而被更新,然后被存储到存储器180以供将来使用。
尽管数据方案1200与仅执行水平滤波的去块滤波器110一起使用,但是通过在图12中交换行和列可以容易地从数据方案1200中导出其中去块滤波器110仅执行垂直滤波操作的数据方案。
在一些实施例中,SAO滤波器120可以由受约束的方向增强滤波器(constraineddirectional enhancement filter,简称CDEF)代替,其能够执行类似于SAO滤波器120能够执行的去振铃操作。上述关于SAO滤波器120的每个特征都可以直接应用于CDEF。
五、说明性实施方式
图13示出示例视频编码器1300,其中可以采用上文其他地方描述的各种实施例、滤波方案和数据方案。如图所示,视频编码器1300从视频源1305接收输入视频信号并将信号编码成比特流1395。视频编码器1300具有若干元件或模块,用于对来自视频源1305的信号进行编码,至少包括选自以下的一些元件:变换模块1310、量化模块1311、逆量化模块1314、逆变换模块1315、帧内估计模块1320、帧内预测模块1325、运动补偿模块1330、运动估计模块1335、环路滤波器1345、重构图片缓冲器1350、运动矢量(motion vector,简称MV)缓冲器1365、MV预测模块1375和熵编码器1390。运动补偿模块1330和运动估计模块1335是帧间预测模块1340的一部分。帧间预测模块1340可以包括整数运动估计(integer motionestimation,简称IME)内核,被配置为执行整数像素搜索,以及分数运动估计(fractionalmotion estimation,简称FME)内核,被配置为执行分数像素搜索。整数像素搜索和小数像素搜索都是运动补偿模块1330和运动估计模块1335的基本功能。
在一些实施例中,如上所列的模块1310-1390是由计算设备或电子装置的一个或多个处理单元(例如,处理器)执行的软件指令模块。在一些实施例中,模块1310-1390是由电子设备的一个或多个集成电路(integrated circuits,简称IC)实现的硬件电路模块。尽管模块1310-1390被示为单独的模块,但一些模块可以组合成单个模块。
视频源1305提供原始视频信号,其呈现每个视频帧的像素数据而不进行压缩。也就是说,视频源1305提供包括以时间序列呈现的相机图片的视频流。减法器1308计算来自视频源1305的视频数据与来自运动补偿模块1330或帧内预测模块1325的预测像素数据1313之间的差值。变换模块1310转换差值(或残差像素数据或残差信号))1309转换成变换系数1316(例如,通过执行离散余弦变换或DCT)。量化模块1311将变换系数1316量化为量化数据(或量化系数)1312,其由熵编码器1390编码到比特流1395中。
逆量化模块1314对量化数据(或量化系数)1312进行去量化以获得变换系数,以及逆变换模块1315对变换系数执行逆变换以产生重构残差1319。重构残差1319与预测的像素数据1313相加一起产生重构的像素数据1317。在一些实施例中,重构的像素数据1317被临时存储在行缓冲器(未示出)中用于帧内预测和空间MV预测。重构像素由环路滤波器1345滤波并存储在重构图片缓冲器1350中。在一些实施例中,重构图片缓冲器1350是视频编码器1300外部的存储器。在一些实施例中,重构图片缓冲器1350是视频编码器1300内部的存储器。
帧内估计模块1320基于重构的像素数据1317执行帧内预测以产生帧内预测数据。帧内预测数据被提供至熵编码器1390以被编码成比特流1395。帧内预测数据还被帧内预测模块1325用来产生预测像素数据1313。
运动估计模块1335通过产生MV以参考存储在重构画面缓冲器1350中的先前解码帧的像素数据来执行帧间预测。这些MV被提供至运动补偿模块1330以产生预测像素数据。
视频编码器1300不是对比特流中的完整实际MV进行编码,而是使用MV预测来生成预测的MV,以及用于运动补偿的MV与预测的MV之间的差值被编码为残差运动数据并存储在比特流1395中。
MV预测模块1375基于参考MV生成预测的MV,参考MV为编码先前视频帧而生成,即,用于执行运动补偿的运动补偿MV。MV预测模块1375从MV缓冲器1365中获取来自先前视频帧的参考MV。视频编码器1300将对当前视频帧生成的MV存储在MV缓冲器1365中作为用于生成预测MV的参考MV。
MV预测模块1375使用参考MV来创建预测的MV。预测的MV可以通过空间MV预测或时间MV预测来计算。预测的MV和当前帧的运动补偿MV(MC MV)之间的差值(残差运动数据)由熵编码器1390编码到比特流1395中。
熵编码器1390通过使用诸如上下文自适应二进制算术编解码(context-adaptivebinary arithmetic coding,简称CABAC)或霍夫曼编解码的熵编码技术将各种参数和数据编码到比特流1395中。熵编码器1390将各种报头元素、标志连同量化的变换系数1312和作为语法元素的残差运动数据编码到比特流1395中。比特流1395又存储在存储设备中或通过网络等通信媒介传输到解码器。
环路滤波器1345对重构的像素数据1317执行滤波或平滑操作以减少编码的伪影,特别是在像素块的边界处。环路滤波器1345可以由环路滤波器100实施。在一些实施例中,执行的滤波操作包括可以由SAO滤波器120实施的样本自适应偏移(sample adaptiveoffset,简称SAO)。在一些实施例中,滤波操作包括自适应环路滤波(adaptive loopfilter,简称ALF)操作,其可以由ALF 130实施。
图14示出了示例视频解码器1400。如图所示,视频解码器1400是图像解码或视频解码电路,其接收比特流1495并将比特流1495的内容解码为视频帧的像素数据以供显示。视频解码器1400具有用于解码比特流1495的若干元件或模块,包括选自以下的一些元件:逆量化模块1411、逆变换模块1410、帧内预测模块1425、运动补偿模块1430、环路滤波器1445、解码图片缓冲器1450、MV缓冲器1465、MV预测模块1475和解析器1490。运动补偿模块1430是帧间预测模块1440的一部分。
在一些实施例中,模块1410-1490是由计算设备的一个或多个处理单元(例如,处理器)执行的软件指令模块。在一些实施例中,模块1410-1490是由电子设备的一个或多个集成电路(integrated circuit,简称IC)实现的硬件电路模块。尽管模块1410–1490被示为单独的模块,但一些模块可以组合成单个模块。
解析器(例如,熵解码器)1490接收比特流1495并根据由视频编解码或图像编解码标准定义的语法执行初始解析。解析的语法元素包括各种报头元素、标志以及量化数据(或量化系数)1412。解析器1490通过使用熵编解码技术(例如上下文自适应二进制算术编解码(context-adaptive binary arithmetic coding,简称CABAC)或霍夫曼编解码来解析各种语法元素。
逆量化模块1411对量化数据(或量化系数)1412进行去量化以获得变换系数1416,以及逆变换模块1410对变换系数1416执行逆变换以产生重构的残差信号1419。重构的残差信号1419与来自帧内预测模块1425或运动补偿模块1430的预测像素数据1413相加以产生解码像素数据1417。解码像素数据1417由环路滤波器1445滤波并存储在解码图片缓冲器中1450。在一些实施例中,解码图片缓冲器1450是视频解码器1400外部的存储器。在一些实施例中,解码图片缓冲器1450是视频解码器1400内部的存储器。
帧内预测模块1425从比特流1495接收帧内预测数据,并且据此,从存储在解码图片缓冲器1450中的解码像素数据1417产生预测像素数据1413。在一些实施例中,解码像素数据1417也被存储在行缓冲器(未示出)中,用于帧内预测和空间MV预测。
在一些实施例中,解码图片缓冲器1450的内容用于显示。显示设备1455或者获取解码图片缓冲器1450的内容用于直接显示,或者获取解码图片缓冲器1450的内容到显示缓冲器。在一些实施例中,显示设备通过像素传输(pixel transport)从解码图片缓冲器1450接收像素值。
运动补偿模块1430根据运动补偿MV(MC MV)从解码图片缓冲器1450中存储的解码像素数据1417产生预测像素数据1413。这些运动补偿MV通过将从比特流1495接收的残差运动数据与从MV预测模块1475接收的预测MV相加来解码。
MV预测模块1475基于为解码先前视频帧而生成的参考MV(例如,用于执行运动补偿的运动补偿MV)生成预测的MV。MV预测模块1475从MV缓冲器1465中获取先前视频帧的参考MV。视频解码器1400将为解码当前视频帧而生成的运动补偿MV存储在MV缓冲器1465中作为用于产生预测MV的参考MV。
环路滤波器1445对解码的像素数据1417执行滤波或平滑操作以减少编解码的伪影,特别是在像素块的边界处。环路滤波器1445可以由环路滤波器100实施。在一些实施例中,执行的滤波操作包括可样本自适应偏移(sample adaptive offset,简称SAO),其由SAO滤波器120实施。在一些实施例中,滤波操作包括自适应环路滤波(adaptive loop filter,简称ALF)操作,其可以由ALF 130实施。
图15示出滤波器1500,其可以实施视频编码器1300的环路滤波器1345或视频解码器1400的环路滤波器1445。滤波器1500还可以实施环路滤波器100或去块滤波器110。滤波器1500可以使用基于块的流水线处理来处理图片。滤波器1500具有若干元件或模块,包括选自以下的一些元件:输入模块1510、相邻块缓冲器1520、去块滤波器1530、去振铃滤波器1540、滤波块缓冲器1550和输出模块1560。
输入模块1510可以被配置为接收视频图片的当前块,而当前块是滤波器1500当前开始处理的块。例如,输入模块1510可以被配置为接收当前块168。输入模块1510还可以接收当前块的一个或多个相邻块的第一组像素数据,以及随后将第一组像素数据存储于相邻块缓冲器1520。例如,第一组像素数据可以包括子块243、244、272和274,子块243、244、272和274属于块168的两个相邻块(即,块164和167)。
相邻块缓冲器1520可以被配置为存储当前块的一个或多个相邻块的第一组像素数据。在输入模块1510接收到第一组像素数据之后,一个或多个相邻块的第一组像素数据由输入模块1510存储在相邻块缓冲器1520中。在一些实施例中,相邻块缓冲器1520可以另外存储一个或多个相邻块的第二组像素数据。例如,相邻块缓冲器1520可以另外存储L形区域938或1038的像素数据。去振铃滤波器1540可以使用第二组像素数据来对输出块执行去振铃操作。
去块滤波器1530可以被配置为使用当前块的像素数据和一个或多个相邻块的第一组像素数据对当前块执行去块操作。例如,去块滤波器1530可以实施去块滤波器110以及可以根据水平滤波方案300、水平滤波方案400、垂直滤波方案500或垂直滤波方案580来执行去块操作。去块滤波器1530可以使用块168的像素数据以及子块243和244的像素数据沿着去块边界250执行垂直滤波操作。可选地或额外地,去块滤波器1530可以使用块168的像素数据以及子块272和274的像素数据沿着去块边界210执行水平滤波操作。
作为去块操作的结果,去块滤波器1530可以生成滤波器块,该滤波器块包括一个或多个完全滤波的子块和一个或多个部分滤波的子块。滤波块缓冲器1550可以被配置为存储滤波块。例如,在去块滤波器1530沿着去块边界210、218、250和258执行去块操作之后,去块滤波器1530可以生成滤波块,该滤波器块包含完全滤波的子块243、272和281,以及部分滤波的子块244、274、282、283和284。完全滤波的子块243、272和281可以存储在滤波块缓冲器1550的第一部分1552中,而部分滤波的子块244、274、282、283和284可以存储在滤波块缓冲器1550的第二部分1554中。
输出模块1560可以被配置为输出输出块,该输出块包括一个或多个完全滤波的子块以及一个或多个部分滤波子块中的每一个的相应部分,该一个或多个完全滤波的子块被存储在滤波块缓冲器1550的第一部分1552中,以及一个或多个部分滤波子块中的每一个的相应部分被存储在滤波块缓冲器1550的第二部分1554中。例如,输出模块1560可以被配置为输出输出块910,该输出块910包括完全滤波的子块234、243、272和281以及L形区域911。L形区域911与完全滤波的子块243、272和281相邻。如本文上面其他地方所述,L形区域911由部分滤波的子块244、282、284、283和274的相应部分组成,其中该相应部分中的每一个与完全滤波的子块234、243、272和281中的对应一个相邻。
去振铃滤波器1540可以被配置为使用输出块的像素数据和一个或多个相邻块的第二组像素数据对输出块执行去振铃操作。例如,去振铃滤波器1540可以实施SAO滤波器120以及可以使用块930或块1030的像素数据来执行去振铃操作。块930包括输出块910和L形区域938。块1030包括输出块1010和L形区域1038。L形区域938和1038中的每一个包括来自块163、164和167的像素数据,块163、164和167是当前块168的相邻块。
在一些实施例中,去振铃滤波器1540可以在滤波器1500的外部,以及输出模块1560可以将输出块输出到去振铃滤波器1540。在一些实施例中,滤波器1500可以包括去振铃滤波器1540。去振铃滤波器1540可以是SAO滤波器或受约束的方向增强滤波器(constrained directional enhancement filter,简称CDEF)。去振铃滤波器1540可实施SAO滤波器120。
六、说明性处理
图16示出根据本公开的实施方式的示例处理1600。处理1600可以表示实现上述各种提出的设计、概念、方案、系统和方法的一个方面。更具体地,处理1600可以表示与实现根据本公开的有效环路滤波过程有关的所提出的概念和方案的一个方面。处理1600可以包括如块1610、1620、1630和1640中的一个或多个所示的一个或多个操作、动作或功能。尽管被示为离散块,但处理1600的各种块可以被划分成额外块、组合成更少块或被消除,这取决于期望的实现方式。此外,处理1600的块/子块可以按图16所示的顺序执行,或者以不同的顺序执行。此外,处理1600的一个或多个块/子块可以重复或迭代地执行。处理1600可以由装置1500或在装置1500及其任一变体中实现。仅出于说明性目的并不限制范围,处理1600在下文中在装置1500的上下文中进行描述。处理1600可以开始于块1610。
在1610,处理1600可以涉及输入模块1510接收当前块的像素数据。例如,输入模块1510可以从帧间/帧内预测模块103接收块168的像素数据。处理1600可以从1610进行到1620。
在1620,处理1600可以涉及输入模块1510接收当前块的一个或多个相邻块的像素数据。例如,输入模块1510可以从帧间/帧内预测模块103接收子块243和244的像素数据以及子块272和274的像素数据。子块243和244属于块164,其是当前块168的上方紧邻的相邻块。子块272和274属于块167,块167是当前块168的左侧紧邻的相邻块。处理1600还可以涉及输入模块1510将一个或多个相邻块的像素数据存储到相邻块缓冲器1520。处理1600可以从1620进行到1630。
在1630,处理1600可以涉及去块滤波器1530通过对当前块执行滤波操作来生成滤波块。滤波操作可以使用当前块的像素数据和一个或多个相邻块的像素数据来执行。滤波块可以包括一个或多个完全滤波的子块和一个或多个部分滤波的子块。例如,去块滤波器1530可以采用数据方案1200,以及使用去块滤波器设置(8,6)沿着当前块168的去块边界210和218来执行水平滤波操作。水平滤波操作可使用块168的像素数据以及相邻块167的像素数据(特别是子块272和274的像素数据)来执行。去块滤波器1530可以相应地生成滤波块,该滤波块包括四个完全滤波的子块272、274、281和283,以及两个部分滤波的子块282和284。处理1600可以从1630进行到1640。
在1640,处理1600可以涉及输出模块1560输出输出块,该输出块包括一个或多个完全滤波的子块和一个或多个部分滤波的子块中的每一个的相应部分,其中每个相应部分与完全滤波的子块之一相邻。例如,输出模块1560可以采用数据方案1200并输出输出块1210。输出块1210包括完全滤波的子块272、274、281和283,以及矩形区域1211。矩形区域1211包括部分滤波的子块282的一部分和部分滤波的子块284的一部分。部分滤波的子块282的一部分,即{(8,0),(9,7)},与完全滤波的子块281相邻。部分滤波的子块284的一部分,即{(8,8),(9,15)},与完全滤波的子块283相邻。
图17示出根据本公开的实施方式的示例处理1700。处理1700可以表示实现上述各种提出的设计、概念、方案、系统和方法的一个方面。更具体地,处理1700可以表示与实现根据本公开的有效环路滤波过程有关的所提出概念和方案的一个方面。处理1700可以包括如块1710、1720、1730、1740、1750和1760中的一个或多个所示的一个或多个操作、动作或功能。尽管被示为离散块,但是处理1700的各个块可以被划分为额外的块,组合成更少的块,或被消除,取决于所需的实现方式。此外,处理1700的块/子块可以按图17所示的顺序执行,或者以不同的顺序执行。此外,处理1700的一个或多个块/子块可以重复或迭代地执行。处理1700可以由装置1500或在装置1500及其任一变体中实现。仅出于说明性目的并不限制范围,处理1700在设备1500的上下文中描述如下。处理1700可以开始于块1710。
在1710,处理1700可以涉及输入模块1510接收当前块的像素数据。例如,输入模块1510可以从帧间/帧内预测模块103接收块168的像素数据。处理1700可以从1710进行到1720。
在1720,处理1700可以涉及输入模块1510接收当前块的一个或多个相邻块的第一组像素数据。例如,输入模块1510可以从帧间/帧内预测模块103接收子块243和244的像素数据以及子块272和274的像素数据。子块243和244属于块164,其是当前块168上方紧邻的相邻块。子块272和274属于块167,块167是当前块168左侧紧邻的相邻块。处理1700还可以涉及输入模块1510将一个或多个相邻块的像素数据存储到相邻块缓冲器1520中。处理1700可以从1720进行到1730。
在1730,处理1700可以涉及去块滤波器1530通过对当前块执行滤波操作来生成滤波块。滤波操作可以使用当前块的像素数据和一个或多个相邻块的像素数据来执行。滤波块可以包括一个或多个完全滤波的子块和一个或多个部分滤波的子块。例如,去块滤波器1530可以采用数据方案1000,以及使用去块滤波器设置(8,6)来执行水平滤波操作和垂直滤波操作。去块滤波器1530可以沿着去块边界210和218执行水平滤波操作,以及沿着去块边界250和258执行垂直滤波操作。水平滤波操作可以使用块168的像素数据以及相邻块167的像素数据(特别是子块272和274的像素数据)来执行。垂直滤波操作可以使用块168的像素数据以及相邻块164的像素数据(特别是子块243和244的像素数据)来执行。去块滤波器1530可以相应地生成滤波块,该滤波块包括三个完全滤波的子块243、272和281以及五个部分滤波的子块244、282、284、283和274。处理1700可以从1730进行到1740。
在1740,处理1700可以涉及输出模块1560输出输出块,该输出块包括一个或多个完全滤波的子块和一个或多个部分滤波的子块中的每一个的相应部分,其中每个相应部分与完全滤波的子块之一相邻。例如,输出模块1560可以采用数据方案1000并输出输出块1010。输出块1010包括完全滤波的子块234、243、272和281,以及L形区域1011。L形区域1011包括部分滤波的子块244的一部分、部分滤波的子块282的一部分、部分滤波的子块284的一部分、部分滤波的子块283的一部分和部分滤波的子块274的一部分。部分滤波的子块244的一部分,即{(8,-8),(9,-1)},与完全滤波的子块243边缘相邻。部分滤波的子块282的一部分,即{(8,0),(9,7)},与完全滤波的子块281边缘相邻。部分滤波的子块284的一部分,即{(8,8),(9,9)},与完全滤波的子块281角相邻。部分滤波的子块283的一部分,即{(0,8),(7,9)}与完全滤波的子块281边缘相邻。部分滤波的子块274的一部分,即{(-8,8),(-1,9)},与完全滤波的子块272边缘相邻。处理1700可以从1740进行到1750。
在1750,处理1700可以涉及输入模块1510接收当前块的一个或多个相邻块的第二组像素数据。例如,去振铃滤波器1540可以采用数据方案1000,以及从帧间/帧内预测模块103接收L形区域1038的像素数据作为第二组像素数据。L形区域1038包括块163、164和167的像素数据,块163、164和167是当前块168的相邻块。处理1700还可以涉及输入模块1510将第二组像素数据存储到相邻块缓冲器1520中。处理1700可以进一步涉及去振铃滤波器1540从相邻块缓冲器1520接收第二组像素数据。处理1700可以从1750进行到1760。
在1760,处理1700可以涉及去振铃滤波器1540使用输出块的像素数据、第二组像素数据或两者对一个或多个完全滤波的子块的每个像素执行第二滤波操作。例如,去振铃滤波器1540可以使用2个像素的SAO滤波器设置对块710的每个像素执行SAO滤波操作。去振铃滤波器1540可以使用块1030内的像素数据来执行SAO滤波操作,其包括块1010和L形区域1038。对于块710的每个像素,去振铃滤波器1540可以参考左方向、右方向、顶部方向和底部方向中的每一个中的两个像素并相应地修改相应像素的值。在一些实施例中,去振铃滤波器1540还可在左上方向、右上方向、左下方向和右下方向中的每一个上从相应像素参考两个像素,并相应地修改相应像素的值。
七、说明性电子系统
许多上述特征和应用方式被实现为软件过程,其被指定为记录在计算机可读存储介质(也被称为计算机可读介质)上的一组指令。当这些指令由一个或多个计算或处理单元(例如,一个或多个处理器、处理器内核或其他处理单元)执行时,它们使处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于只读光盘驱动器(compact discread-only memory,简称CD-ROM)、闪存驱动器、随机存取存储器(random-access memory,简称RAM)芯片、硬盘驱动器、可擦除可编程只读存储器(electrically erasableprogrammble read-only,简称EPROM)、电可擦除可编程只读存储器(electricallyerasable programmable read-only memory,简称EEPROM)等。计算机可读介质不包括通过无线或有线连接传递的载波和电子信号。
在本说明书中,术语“软件”意味着包括只读存储器中的固件或者存储在磁存储装置中的应用程序,该应用程序可以被读入到内存中以用于处理器进行处理。同时,在一些实施例中,复数个软件发明可以作为更大程序的子部分来实现,而保留不同的软件发明。在一些实施例中,复数个软件发明可以作为独立的程序来实现。最后,一起实现本文所描述的软件发明的独立的程序的任何结合在本发明的范围内。在一些实施例中,当软件程序被安装以在一个或者复数个电子系统上进行操作时,软件程序定义了一个或者复数个特定的机器实现方式,该机器实现方式执行和实施该软件程序的操作。
图18概念性地示出实现本公开的一些实施例的电子系统1800。电子系统1800可以是计算机(例如,台式计算机,个人计算机,平板计算机等),电话,个人数字助理(personaldigital assistant,简称PDA)或任一其他种类的电子设备。这种电子系统包括各种类型的计算机可读介质以及用于各种其他类型的计算机可读介质的接口。电子系统1800包括总线1805,处理单元1810,图形处理单元(graphics-processing unit,简称GPU)1815,系统内存1820,网络1825,只读存储器1830,永久存储装置1835,输入设备1840,以及输出设备1845。
总线1805共同表示所有系统、外围设备和芯片组总线,它们以通信方式连接电子系统1800的众多内部设备。例如,总线1805将处理单元1810与GPU1815,只读存储器1830、系统存储器1820和永久存储设备1835通信连接。
从这些各种存储器单元中,处理单元1810获取要执行的指令和要处理的数据,以便执行本公开的处理。在不同的实施例中,处理单元可以是单个处理器或多核处理器。一些指令被传递到GPU 1815并由其执行。GPU 1815可以卸载各种计算或补充由处理单元1810提供的图像处理。
只读存储器(read-only-memory,简称ROM)1830存储由处理单元1810和电子系统的其他模块使用的静态数据和指令。另一方面,永久存储设备1835是读写存储设备。该设备是即使在电子系统1800关闭时也存储指令和数据的非易失性存储单元。本公开的一些实施例使用大容量存储设备(例如磁盘或光盘及其对应的磁盘驱动器)作为永久存储设备1835。
其他实施例使用可移动存储设备(例如软盘、闪存设备等,及其对应的磁盘驱动器)作为永久存储设备。与永久存储设备1835一样,系统存储器1820是读写存储器设备。然而,与存储设备1835不同,系统存储器1820是易失性读写存储器,例如随机存取存储器。系统存储器1820存储处理器在运行时使用的一些指令和数据。在一些实施例中,根据本公开的处理被存储在系统存储器1820、永久存储设备1835和/或只读存储器1830中。例如,根据一些实施例,各种存储器单元包括用于处理多媒体剪辑的指令。从这些各种存储器单元中,处理单元1810获取要执行的指令和要处理的数据,以便执行一些实施例的处理。
总线1805还连接到输入和输出设备1840和1845。输入设备1840使用户能够向电子系统传达信息和选择命令。输入设备1840包括字母数字键盘和定点设备(也被称为“光标控制设备”)、照相机(例如,网络摄像头)、麦克风或用于接收语音命令的类似设备等。输出设备1845显示由电子系统生成的图像或者输出数据。输出设备1845包括打印机和显示设备,例如阴极射线管(cathode ray tube,简称CRT)或液晶显示器(liquid crystal display,简称LCD),以及扬声器或类似的音频输出设备。一些实施例包括用作输入和输出设备的设备,例如触摸屏。
最后,如图18所示,总线1805还通过网络适配器(未示出)将电子系统1800耦合到网络1825。计算机可以是计算机网络的一部分(例如局域网(local area network,简称LAN),广域网(wide area network,简称WAN)或内部网络),或多个网络中的一个网络,比如说因特网。电子系统1800的任一或所有元件可以与本公开结合使用。
一些实施例包括电子元件,例如,微处理器、存储装置和内存,其将计算机程序指令存储到机器可读介质或者计算机可读介质(可选地被称为计算机可读存储介质、机器可读介质或者机器可读存储介质)。计算机可读介质的一些示例包括RAM、ROM、只读光盘(read-only compact disc,CD-ROM),可录制光盘(recordable compact disc,CD-R)、可擦写光盘(rewritable compact disc,CD-RW)、只读数字通用光盘(read-only digitalversatile disc)(例如,DVD-ROM,双层DVD-ROM)、各种可记录/可擦写DVD(例如DVD RAM、DVD-RW、DVD+RW等)、闪存(如SD卡、迷你SD卡,微SD卡等)、磁性和/或固态硬盘、只读和可刻录
Figure BDA0003867329220000431
(Blu-/>
Figure BDA0003867329220000432
)盘、超高密度光盘和其他任何光学介质或磁介质,以及软盘。计算机可读介质可以存储由至少一个处理单元执行的计算机程序,并且包括用于执行各种操作的指令集。计算机程序或计算机代码的示例包括机器代码,例如编译程序产生的机器代码,以及包含由计算机、电子元件或微处理器使用注释器(interpreter)而执行的高级代码的文档。
当以上讨论主要是指执行软件的微处理器或多核处理器时,很多上述的功能和应用程序由一个或复数个集成电路执行,如特定应用的集成电路(application specificintegrated circuit,ASIC)或现场可程序设计门阵列(field programmable gate array,FPGA)。在一些实施例中,这种集成电路执行存储在该电路本身上的指令。此外,一些实施例执行存储在可程序设计逻辑器件(programmable logic device,PLD),ROM或RAM装置中的软件。
如本发明的说明书和任一权利要求所使用,术语“计算机”、“服务器”、“处理器”和“内存”均指电子装置或其他技术装置。这些术语不包括人或群体。出于说明的目的,术语显示或显示设备指在电子装置上进行显示。如本发明的说明书和任一权利要求中所使用,术语“计算机可读介质”、“计算机可读媒质”和“机器可读介质”完全局限于有形的、实体的物体,其以计算机可读的形式存储信息。这些术语不包括任何无线信号、有线下载信号和其他任何短暂信号。
在结合许多具体细节的情况下描述了本发明时,所属技术领域的技术人员将认识到,本发明可以以其他具体形式而被实施,而不脱离本发明的精神。
附加的说明
本文所描述的主题有时表示不同的元件,其包含在或者连接到其他不同的元件。可以理解的是,所描述的结构仅是示例,实际上可以由许多其他结构来实施,以实现相同的功能,从概念上讲,任何实现相同功能的元件的排列实际上是“相关联的”,以便实现所需功能。因此,不论结构或中间部件,为实现特定的功能而组合的任何两个元件被视为“相互关联”,以实现所需的功能。同样,任何两个相关联的元件被看作是相互“可操作连接”或“可操作耦接”,以实现特定功能。能相互关联的任何两个元件也被视为相互“可操作地耦接”,以实现特定功能。能相互关联的任何两个元件也被视为相互“可操作地耦合”以实现特定功能。可操作连接的具体例子包括但不限于物理可配对和/或物理上相互作用的元件,和/或无线可交互和/或无线上相互作用的元件,和/或逻辑上相互作用和/或逻辑上可交互的元件。
此外,关于基本上任何复数和/或单数术语的使用,所属技术领域的技术人员可以根据上下文和/或应用从复数变换为单数和/或从单数到复数。为清楚起见,本发明明确阐述了不同的单数/复数排列。
此外,所属技术领域的技术人员可以理解,通常,本发明所使用的术语特别是权利要求中的,如权利要求的主题,通常用作“开放”术语,例如,“包括”应解释为“包括但不限于”,“有”应理解为“至少有”“包括”应解释为“包括但不限于”等。所属技术领域的技术人员可以进一步理解,若计划介绍特定数量的权利要求内容,将在权利要求内明确表示,并且,在没有这类内容时将不显示。例如,为帮助理解,下面权利要求可能包含短语“至少一个”和“一个或复数个”,以介绍权利要求的内容。然而,这些短语的使用不应理解为暗示使用不定冠词“一个”或“一种”介绍权利要求内容,而限制了任何特定神专利范围。甚至当相同的权利要求包括介绍性短语“一个或复数个”或“至少有一个”,不定冠词,例如“一个”或“一种”,则应被解释为表示至少一个或者更多,对于用于介绍权利要求的明确描述的使用而言,同样成立。此外,即使明确引用特定数量的介绍性内容,所属技术领域的技术人员可以认识到,这样的内容应被解释为表示所引用的数量,例如,没有其他修改的“两个引用”,意味着至少两个引用,或两个或两个以上的引用。此外,在使用类似于“A、B和C中的至少一个”的表述的情况下,通常如此表述是为了所属技术领域的技术人员可以理解该表述,例如,“系统包括A、B和C中的至少一个”将包括但不限于单独具有A的系统,单独具有B的系统,单独具有C的系统,具有A和B的系统,具有A和C的系统,具有B和C的系统,和/或具有A、B和C的系统等。所属技术领域的技术人员进一步可理解,无论在说明书中,权利要求中或者附图中,由两个或两个以上的替代术语所表现的任何分隔的单词和/或短语应理解为,包括这些术语中的一个,其中一个,或者这两个术语的可能性。例如,“A或B”应理解为,“A”,或者“B”,或者“A和B”的可能性。
从前述可知,出于说明目的,本发明已描述了各种实施方案,并且在不偏离本发明的范围和精神的情况下,可以进行各种变形。因此,此处所公开的各种实施方式不用于限制,真实的范围和申请由权利要求表示。

Claims (20)

1.一种处理图片的当前块的方法,包括:
接收所述当前块的像素数据;
接收所述当前块的一个或多个相邻块的像素数据;
通过使用所述当前块的像素数据和所述一个或多个相邻块的所述像素数据对所述当前块执行滤波操作来生成滤波块,所述滤波块包括一个或多个完全滤波的子块和一个或多个部分滤波的子块;以及
输出输出块,所述输出块包括所述一个或多个完全滤波的子块,以及所述一个或多个部分滤波的子块中的每一个子块的相应部分,所述相应部分与所述完全滤波的子块之一相邻。
2.如权利要求1所述的处理图片的当前块的方法,其特征在于,
所述一个或多个相邻块包括紧邻所述当前块上方的第一相邻块和紧邻所述当前块左侧的第二相邻块,
所述一个或多个部分滤波子块包括与所述当前块重叠的三个部分滤波子块,以及分别与所述第一相邻块和所述第二相邻块重叠的两个部分滤波子块,以及
所述多个部分滤波的子块的所述多个相应部分共同形成L形区域。
3.如权利要求1所述的处理图片的当前块的方法,其特征在于,
所述一个或多个相邻块包括紧邻所述当前块左侧的相邻块,
所述一个或多个部分滤波的子块包括与所述当前块重叠的一个部分滤波的子块,以及
所述一个部分滤波的子块的所述相应部分包括矩形区域。
4.如权利要求1所述的处理图片的当前块的方法,其特征在于,
所述滤波操作包括去块操作,
所述图片包括使用基于块的帧内或帧间预测的重构图片,
所述滤波操作的执行包括以下之一或两者:
沿着所述当前块的至少一个垂直去块边界执行水平滤波操作,以及
沿着所述当前块的至少一个水平去块边界执行垂直滤波操作,
所述水平滤波操作包括在至少一个垂直去块边界的两侧中的每一侧上,参考第一数量的像素以及修改第二数量的像素,以及
所述垂直滤波操作包括在至少一个水平去块边界的两侧的每一侧上,参考第三数量的像素以及修改第四数量的像素。
5.如权利要求4所述的处理图片的当前块的方法,其特征在于,
所述滤波操作的执行包括执行所述水平滤波操作,
所述相应部分包括具有第五像素数量的水平尺寸的矩形区域,以及
所述第五数量等于所述第一个数量和所述第二个数量之间的差值。
6.如权利要求4所述的处理图片的当前块的方法,其特征在于,
所述滤波操作的执行包括执行所述垂直滤波操作,
所述相应部分包括具有第六像素的垂直尺寸的矩形区域,以及
所述第六数量等于所述第三数量和所述第四数量之间的差值。
7.如权利要求4所述的处理图片的当前块的方法,其特征在于,
执行所述滤波操作包括执行所述水平滤波操作和所述垂直滤波操作;
所述多个部分滤波的子块的所述多个相应部分共同形成L形区域,所述L形区域包括第一段和第二段,所述第一段具有第五数量的像素的宽度,以及所述第二段具有第六数量的像素的宽度,
第五数量等于所述第一数量和所述第二数量之间的差值,以及
所述第六数量等于所述第三数量和所述第四数量之间的差值。
8.如权利要求1所述的处理图片的当前块的方法,其特征在于,其中所述一个或多个相邻块的所述像素数据包括第一组像素数据,以及其中所述滤波操作包括第一滤波操作,所述方法还包括:
接收所述一个或多个相邻块的第二组像素数据,
使用所述输出块的像素数据、所述第二组像素数据或两者对所述一个或多个完全滤波的子块的每个像素执行第二滤波操作,其中所述第二滤波操作包括:
参考与所述一个或多个完全滤波子块的相应像素在左方向、右方向、上方向和下方向中的每一个方向上相邻的第七数量的像素;以及
基于所述参考修改所述一个或多个完全滤波的子块的所述相应像素。
9.如权利要求8所述的处理图片的当前块的方法,其特征在于,
所述部分滤波的子块的所述相应部分共同形成L形区域,所述L形区域包括第一段和第二段,所述第一段具有第五数量的像素的宽度,以及所述第二段具有第六像素的数量的宽度,
所述第二滤波操作进一步包括在左上方向、右上方向、左下方向和右下方向参考第七数量的像素,所述像素与所述一个或多个完全滤波的子块的所述相应像素相邻,以及
所述第七数量等于所述第五数量和所述第六数量。
10.如权利要求8所述的处理图片的当前块的方法,其特征在于,
所述第一滤波操作包括由所述第一滤波器执行的去块操作,
所述第二滤波操作包括由所述第二滤波器执行的去振铃操作,
所述第二滤波器包括样本自适应偏移滤波器或约束方向增强滤波器,以及
所述第一滤波器和所述第二滤波器被配置为使用基于块的流水线处理来处理所述图片。
11.一种装置,用于处理图片的当前块,包括:
输入模块,被设置为接收图片的当前块;
相邻块缓冲器,被设置为存储所述当前块的一个或多个相邻块的第一组像素数据;
去块滤波器,被设置为使用所述当前块的像素数据以及所述一个或多个相邻块的所述第一组像素数据对所述当前块执行去块操作;
滤波块缓冲器,被配置为存储一个或多个完全滤波的子块和一个或多个部分滤波的子块;以及
输出模块,被设置为输出输出块,所述输出块包括所述一个或多个完全滤波的子块,以及所述一个或多个部分滤波的子块中的每一个子块的相应部分,所述相应部分与所述完全滤波的子块之一相邻。
12.如权利要求11所述的装置,其特征在于,
所述一个或多个相邻块包括紧邻所述当前块上方的第一相邻块和紧邻所述当前块左侧的第二相邻块,
所述去块操作包括水平滤波操作和垂直滤波操作,
所述一个或多个部分滤波子块包括与所述当前块重叠的三个部分滤波子块,以及分别与所述第一相邻块和所述第二相邻块重叠的两个部分滤波子块,以及
所述多个部分滤波的子块的所述多个相应部分共同形成L形区域。
13.如权利要求11所述的装置,其特征在于,
所述一个或多个相邻块包括紧邻所述当前块左侧的相邻块,
所述去块操作包括水平滤波操作,
所述一个或多个部分滤波的子块包括与所述当前块重叠的一个部分滤波的子块,以及
所述一个部分滤波的子块的所述相应部分包括矩形区域。
14.如权利要求11所述的装置,其特征在于,
所述去块滤波器被配置为通过参考第一数量的像素以及在至少一个垂直或水平去块边界的两侧的每一侧上修改第二数量的像素,来执行沿着所述当前块的至少一个垂直或水平去块边界的所述去块操作。
15.如权利要求14所述的所述的装置,其特征在于,
所述相应部分包括矩形区域,所述矩形区域具有第五像素数量的宽度或长度,以及
所述第五数量等于所述第一数量和所述第二数量的差值。
16.如权利要求15所述的装置,其特征在于,
所述多个部分滤波的子块的所述多个相应部分共同形成包括第一段和第二段的L形区域,其中所述第一段和所述第二段中每个段具有所述第五数量的像素的宽度。
17.如权利要求11所述的装置,其特征在于,
所述相邻块缓冲器还被配置为存储所述一个或多个相邻块的第二组像素数据,
所述装置还包括:
去振铃滤波器,被配置为使用所述输出块的像素数据以及所述一个或多个相邻块的所述第二组像素数据对所述一个或多个完全滤波的子块的每个像素执行去振铃操作。
18.如权利要求17所述的装置,其特征在于,
所述去振铃滤波器被配置为通过参考与在左方向、右方向、顶部方向以及底部方向中的每一个方向上的所述一个或多个完全滤波的子块的每个像素相邻的第七数量的像素来执行所述去振铃操作,以及基于所述参考修改所述一个或多个完全滤波的子块的所述相应像素。
19.如权利要求18所述的装置,其特征在于,
所述去振铃滤波器被配置为通过进一步参考在左上方向、右上方向、底部左侧方向和底部右侧方向的每个方向上与所述一个或多个完全滤波的子块的所述相应像素相邻的所述第七数量的像素来执行所述去振铃操作。
20.如权利要求17所述的装置,其特征在于,
所述去振铃滤波器包括样本自适应偏移滤波器或约束方向增强滤波器,以及
所述去块滤波器和所述去振铃滤波器被配置为使用基于块的流水线处理来处理所述图片。
CN202211186461.3A 2021-09-29 2022-09-27 用于视频编码的高效环路滤波 Pending CN115883852A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163249633P 2021-09-29 2021-09-29
US63/249,633 2021-09-29
US17/844,034 2022-06-19
US17/844,034 US11917144B2 (en) 2021-09-29 2022-06-19 Efficient in-loop filtering for video coding

Publications (1)

Publication Number Publication Date
CN115883852A true CN115883852A (zh) 2023-03-31

Family

ID=85770096

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211186461.3A Pending CN115883852A (zh) 2021-09-29 2022-09-27 用于视频编码的高效环路滤波

Country Status (3)

Country Link
US (1) US11917144B2 (zh)
CN (1) CN115883852A (zh)
TW (1) TWI832449B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024026163A1 (en) * 2022-07-27 2024-02-01 Qualcomm Incorporated Systems and methods for video decoding with partial-block deblocking filtering for use by constrained directional enhancement filter

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8576924B2 (en) * 2005-01-25 2013-11-05 Advanced Micro Devices, Inc. Piecewise processing of overlap smoothing and in-loop deblocking
TWI264951B (en) * 2005-05-19 2006-10-21 Cheertek Inc Deblock filter method for applying on video encoding/decoding and the apparatus thereof
CN103947208B (zh) * 2011-09-13 2017-07-07 寰发股份有限公司 减少解块滤波器的方法及装置
US9282344B2 (en) * 2011-11-04 2016-03-08 Qualcomm Incorporated Secondary boundary filtering for video coding
KR20130049523A (ko) 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 장치
US9872044B2 (en) * 2013-05-15 2018-01-16 Texas Instruments Incorporated Optimized edge order for de-blocking filter
US10469876B2 (en) 2016-12-22 2019-11-05 Mediatek Inc. Non-local adaptive loop filter combining multiple denoising technologies and grouping image patches in parallel
TWI812378B (zh) * 2017-04-06 2023-08-11 美商松下電器(美國)知識產權公司 解碼裝置、編碼裝置及電腦可讀取之非暫時性媒體
CN113545041A (zh) * 2019-03-07 2021-10-22 数字洞察力有限公司 图像编码/解码方法和设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024026163A1 (en) * 2022-07-27 2024-02-01 Qualcomm Incorporated Systems and methods for video decoding with partial-block deblocking filtering for use by constrained directional enhancement filter

Also Published As

Publication number Publication date
TWI832449B (zh) 2024-02-11
US20230412800A1 (en) 2023-12-21
TW202315411A (zh) 2023-04-01
US11917144B2 (en) 2024-02-27

Similar Documents

Publication Publication Date Title
US11546587B2 (en) Adaptive loop filter with adaptive parameter set
US10306246B2 (en) Method and apparatus of loop filters for efficient hardware implementation
JP2023126408A (ja) イントラ予測方法とそれを利用した符号化器及び復号化器
US8576924B2 (en) Piecewise processing of overlap smoothing and in-loop deblocking
US7792385B2 (en) Scratch pad for storing intermediate loop filter data
US9860530B2 (en) Method and apparatus for loop filtering
US20160241881A1 (en) Method and Apparatus of Loop Filters for Efficient Hardware Implementation
US9344717B2 (en) Method and apparatus for sample adaptive offset in a video decoder
US20150326886A1 (en) Method and apparatus for loop filtering
US11778235B2 (en) Signaling coding of transform-skipped blocks
CN111213380B (zh) 一种帧间预测装置、方法、编解码装置和可读介质
TWI737137B (zh) 視訊編碼之非線性適應性迴圈濾波方法和裝置
CN113994670A (zh) 具有虚拟边界的跨分量自适应环路滤波的视频编解码方法及装置
CN103947208A (zh) 减少解块滤波器的方法及装置
CA3105441A1 (en) Apparatus and method for filtering in video coding
JP2015012410A (ja) 画像復号装置
TWI832449B (zh) 視訊編解碼方法及裝置
US11785214B2 (en) Specifying video picture information
US20140105306A1 (en) Image processing apparatus and image processing method
JP2007258882A (ja) 画像復号装置
WO2022116824A1 (zh) 视频解码方法、视频编码方法、相关设备及存储介质
CN114430904A (zh) 利用环内子图像级可控噪声生成进行的视频压缩
CN114175659A (zh) 用于双向光流的比特宽度控制的装置和方法
RU2815738C2 (ru) Определение режима кодирования цветности на основе внутрикадрового предсказания на основе матрицы
WO2023093863A1 (en) Local illumination compensation with coded parameters

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination