CN115280772A - 有损压缩的二重标准块分割启发法 - Google Patents

有损压缩的二重标准块分割启发法 Download PDF

Info

Publication number
CN115280772A
CN115280772A CN202080098574.0A CN202080098574A CN115280772A CN 115280772 A CN115280772 A CN 115280772A CN 202080098574 A CN202080098574 A CN 202080098574A CN 115280772 A CN115280772 A CN 115280772A
Authority
CN
China
Prior art keywords
block
sub
blocks
value
partition
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
CN202080098574.0A
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN115280772A publication Critical patent/CN115280772A/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/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)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种用于对图像块进行分区以减少量化伪影的方法包括估计块的预期熵;将块分区成子块,其中,每个子块的大小为最小可能分区大小;计算子块的相应视觉掩蔽量;选择子块的相应视觉掩蔽量中的最高视觉掩蔽值作为块的视觉掩蔽特征;将块的视觉掩蔽特征与块的预期熵组合以获得分割指示符值;以及基于分割指示符来确定是否分割块。

Description

有损压缩的二重标准块分割启发法
背景技术
(例如,静止图像或视频帧的)图像内容表示大量在线内容。例如,网页可以包括多个图像,并且花费在渲染网页上的大部分时间和资源专用于渲染这些图像以供显示。接收并渲染图像以供显示所需的时间和资源量部分地取决于压缩图像的方式。因此,能够通过使用有损压缩和解压缩技术减小图像的总数据大小来更快地渲染图像。
有损压缩技术试图使用比原始图像中的比特数少的比特来表示图像内容。有损压缩技术可能会将诸如振铃伪影和带状伪影的视觉伪影引入到解压缩图像中。较高压缩水平可能会导致更明显的伪影。希望在维持高压缩水平的同时最小化伪影。
发明内容
本公开的一个方面是一种方法,一个方面是一种用于对图像块进行分区以减少量化伪影的方法。该方法包括:估计块的预期熵;将块分区成子块,其中,每个子块的大小为最小可能分区大小;计算子块的相应视觉掩蔽量;选择子块的相应视觉掩蔽量中的最高视觉掩蔽值作为块的视觉掩蔽特征;将块的视觉掩蔽特征与块的预期熵组合以获得分割指示符值;以及基于分割指示符来确定是否分割块。
另一方面是一种用于对图像块进行分区以减少量化伪影的装置。该装置包括存储器和处理器。该处理器被配置成执行存储在存储器中的指令以:估计块的预期熵;将块分区成子块,其中,每个子块的大小为最小可能分区大小;计算子块的相应视觉掩蔽量;选择子块的相应视觉掩蔽量中的最高视觉掩蔽值作为块的视觉掩蔽特征;将块的视觉掩蔽特征与块的预期熵组合以获得分割指示符值;以及基于分割指示符来确定是否分割块。
另一方面是一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质包括可执行指令,所述可执行指令当由处理器执行时促进操作的执行,操作包括:估计块的预期熵;将块分区成子块,其中,每个子块的大小为最小可能分区大小;计算子块的相应视觉掩蔽量;选择子块的相应视觉掩蔽量中的最高视觉掩蔽值作为块的视觉掩蔽特征;将块的视觉掩蔽特征与块的预期熵组合以获得分割指示符值;以及基于分割指示符来确定是否分割块。
在实施例的以下详细描述、所附权利要求书和附图中公开本公开的这些和其它方面。
将认识到,能够以任何方便的形式实现各方面。例如,可以通过适当的计算机程序实现各方面,适当的计算机程序可以被承载在适当的载体介质上,适当的载体介质可以是有形载体介质(例如,磁盘)或无形载体介质(例如,通信信号)。各方面也可以使用合适的装置来实现,合适的装置可以采取运行计算机程序的可编程计算机的形式,计算机程序被布置成实现本文公开的方法和/或技术。能够组合各方面,使得在一个方面的上下文中描述的特征可以在另一个方面中实现。
附图说明
图1是根据本公开的实施方式的计算设备的图。
图2是根据本公开的实施方式的计算和通信系统的图。
图3是根据本公开的实施方式的用于在编码和解码中使用的视频流的图。
图4是根据本公开的实施方式的编码器的框图。
图5是根据本公开的实施方式的解码器的框图。
图6是根据本公开的实施方式的帧的部分的表示的框图。
图7是根据本公开的实施方式的用于对图像块进行分区以减少量化伪影的技术的流程图。
图8是根据本公开的实施方式的用于对图像块进行分区以减少量化伪影的技术800的流程图。
图9是根据本公开的实施方式的计算拉普拉斯算子的示例。
图10是根据本公开的实施方式的振铃伪影的示例。
图11图示根据传统技术的变换分区和根据本公开的实施方式的变换分区的假设比较示例。
具体实施方式
视频压缩方案可以包括将每个图像(单个图像或视频帧)分解成诸如块的较小部分,以及使用限制输出中对于每个块包括的信息的技术来生成输出比特流。能够对编码比特流进行解码,以根据有限的信息来重新创建块和源图像。在一些实施方式中,可以通过减少空间冗余、减少时间冗余(在视频的情况下)或它们的组合来限制输出中对于每个块包括的信息。例如,通过基于编码器和解码器两者都可用的信息来预测帧,并且包括表示预测帧与原始帧之间的差异或残差的信息,可以减少时间(在视频帧的情况下)或空间冗余。
可以通过将残差信息变换成变换系数来进一步压缩残差信息。将残差信息变换成变换系数能够包括量化步骤,该量化步骤引入损失——因此得名或命名为“有损压缩”。
有损压缩能够用于对图像的视觉信息进行代码化。有损压缩技术能够应用于源图像以产生压缩图像。有损技术的逆能够应用于压缩图像以产生解压缩图像。有损压缩技术的有损方面能够至少部分地归因于频域信息的量化(如下文进一步描述的)。损失量由使用量化参数(QP)的量化步长规定。
量化参数能够用于控制速率与失真之间的折衷。通常,较大量化参数意味着(诸如变换系数的)较高量化,从而导致较低速率但较高失真;并且较小量化参数意味着较低量化,从而导致较高速率但较低失真。变量QP、q和Q在本公开中可以可互换使用以指代量化参数。
通常,可以将图像块(例如,亮度块或色度块)分取成更小块。块的一种分区(即,预测分区)能够用于预测目的。另一种分区(即,变换分区)能够用于将预测的残差变换到变换域中的目的。使用诸如DCT的变换类型将预测的残差变换到变换域中。预测分区和变换分区不一定导致源块的相同分区。为了说明,图像块可以是32×32亮度块。按照光栅扫描顺序,预测分区可以是大小为8×16、8×16、16×16、16×16、16×8和16×8的子块。另一方面,按照光栅扫描顺序,变换分区可以是8×8、8×8、8×8、8×8、16×16、16×16、8×8、8×8、8×8和8×8。预测分区和/或变换分区的子块能够是正方形或矩形。
传统上,确定用于变换残差信息的变换分区能够包括递归地确定用于使用当前块大小变换的代价是否超过用于将当前块分区成子块和使用子块大小变换进行编码的代价。如果用于使用子块大小变换进行编码的代价更小,则使用子块大小作为当前块大小并且使用更小的子块大小作为子块大小来重复对每个子块的确定。
给定特定期望质量,代价通常是基于定义为平衡速率与失真的速率失真(RD)函数。速率是指编码(如对块、帧、量化的变换块系数等进行编码)所需的比特数。失真测量源图像块与源图像块的重构版本之间的质量损失。通过执行速率失真优化(RDO)过程,编解码器相对于编码视频所需的速率(即,指定质量)优化失真量。
通常使用量化参数来计算RD代价。更一般来说,每当编码器决策(例如,模式决策)是基于RD代价时,编码器就可以使用QP值来确定RD代价。
QP能够用于导出用于将速率与失真值组合成一个度量的乘数。一些编解码器可以将乘数称为拉格朗日乘数(表示为λmode);其它编解码器可以使用称为rdmult的类似乘数。每个编解码器可以具有计算乘数的不同方法。除非上下文清楚说明,否则无论编解码器如何,本文中将乘数称为拉格朗日乘数或拉格朗日参数。
例如,给定对应于某个变换分区的模式m,使rm表示由使用模式m产生的速率或代价(以比特为单位)并且使dm表示产生的失真。选择模式m的速率失真代价能够被计算为标量值:dmmoderm。通过使用拉格朗日参数λmode,然后能够比较两种模式的代价并且选择具有较低的组合RD代价的模式。评估速率失真代价的这种技术是至少在一些编解码器中的模式决策过程的基础。
如上所提及的,有损压缩旨在描述(即,代码化、压缩等)具有最少比特数的图像,同时在对压缩图像进行解压缩时尽可能多地保留图像的质量。也就是说,有损压缩技术试图在不会使图像质量下降到低于不可接受水平的情况下压缩图像。
在压缩期间,与能够用于描述快速变化的区域和/或对象的比特相比,较少比特能够用于描述图像的缓慢变化的区域和/或对象。“缓慢变化”和“快速变化”在此上下文中指代频域的变化。图10是根据本公开的实施方式的振铃伪影的示例1000。在示例1000中,诸如图像1010的图像包括形成图像1010的背景的天空以及遮挡背景的至少一部分的树枝。由天空背景覆盖的区域,诸如区域1002,是缓慢变化的区域。也就是说,缓慢变化的区域对应于空间低频区域。包括背景天空与树枝之间的过渡的图像1010的区域,诸如区域1004,是快速变化的区域。放大镜1050图示包括区域1004的图像1010的放大区域。快速变化的区域对应于空间高频区域。区域1006(即,树干的一部分)图示缓慢变化的区域的另一示例。因此,图像1010图示背景天空主要包括缓慢变化的区域,但是也包括快速变化的区域。
如下文进一步描述的,对图像或视频的图像(即,视频帧)进行编码能够包括将图像分区成块。如本文所使用的,“图像”和“图片”两者都是指单个图像或视频帧。块能够包括缓慢变化的区域(即,低频信号)和快速变化的区域(即,高频信号)。
有损压缩技术可能会产生不希望的伪影,诸如振铃伪影、带状伪影,振铃伪影出现在图像中的急剧过渡处(例如,在图10的区域1004中的天空与树枝之间的边缘处),由此将平滑的图像梯度变换成可感知的离散带、轮廓、分色或其它一些伪影。
例如,振铃伪影能够由压缩高频信号产生。振铃伪影可能显现为在解压缩图像中的对象的边缘附近的条带和/或重影。图10的区域1052图示振铃的示例。振铃伪影是由于边缘周围的下冲和过冲引起的。“下冲”意味着解压缩图像中的像素的值小于源图像中的相同像素的值。也就是说,“下冲”能够意味着边缘周围的像素被淡化。“过冲”意味着解压缩图像中的像素的值大于源图像中的相同像素的值。也就是说,“过冲”能够意味着边缘周围的一些像素被加重。也就是说,由于有损压缩,在解压缩图像中,明亮(暗色)背景的一些部分能够变得更亮(更暗)。
过冲和下冲能够由频域正弦型振荡引起。例如,在包括由暗色(明亮)前景对象部分地遮挡的明亮(暗色)背景的图像中,在背景和前景对象的边缘处存在阶梯状函数。
如果根据基于频率的变换对边缘进行压缩,则由于量化的频率限制特性,增加的量化水平会导致在边缘附近的正弦型振荡。如所提及的,能够在边缘周围观察到下冲和过冲。如下文进一步描述的,基于频率的变换(还称为“基于块的变换”)的示例包括离散余弦变换(DCT)、傅立叶变换(FT)、离散正弦变换(DST)等。
应注意,较大变换块能够允许源图像的较大区域共享共同参数,并且对于均匀纹理和低比特速率能够是高效的。然而,较大变换块以在图像中进一步传播的伪影为代价。也就是说,伪影能够在统计上一直传播到图像中由变换块覆盖的块。
为了说明,假设图像包括含有大量纹理(例如,一块草地)的第一8×8块以及平滑的第二邻接8×8图像块(例如,汽车引擎盖的一部分)。如果单独编码(例如,变换)第一块和第二块,则第一块的重构(例如,解码)版本可能包括振铃,而第二块的重构版本将不包括振铃。另一方面,如果使用8×16(或16×8,取决于如何布置第一块和第二块)变换大小将两个块一起变换,则重构的第二块也将可能包括振铃伪影。
如上文所描述的,传统上,给定目标质量(例如,给定QP值),RD代价能够用于确定变换分区。基于两个目标度量(例如,以比特为单位的代价和失真)来计算RD代价。
然而,仅使用速率和失真能够导致在不需要该分区时对块进行分区,或者在分区可能优选时不进行分区。
本公开涉及变换分区。更具体来说,本公开涉及确定确定块到子块的最佳分区,使得每个子块然后使用诸如DCT的变换类型进行变换。如本文所使用的最佳分区是在减少用于压缩块的比特数与同时通过限制量化伪影(例如,振铃)的传播来提高质量之间取得平衡的分区。能够基于块的子块根据适合于块的振铃量来选择块分区(例如,变换块大小)。
关于限制伪影的传播,本公开的实施方式确定来自一个块的伪影是否可能在相邻块中可见或掩蔽。如果第一块中的伪影可能在第二块中掩蔽,则能够将第一块与第二块组合成一个块以用于变换到频域中的目的。如果第一块的伪影不可能在第二块中掩蔽,则第一块不与第二块组合。相反,单独地变换第一块。
为了确定是否应当对块进行分区,用于有损压缩的二重标准块分割启发法的实施方式计算组合两个标准以获得分割指示符值的启发法。是否应当进一步分割块取决于分割指示符值高于还是低于阈值。任何数量的值能够用于比较分割指示符值。在示例中,分割指示符值能够与根据经验导出的常数相比较。在示例中,分割指示符值能够与和目标图像质量和/或允许误差相关(例如,线性相关)的值相比较。在示例中,如果要对块进行分区,则能够将分割指示符值与基于所得分区大小导出的值相比较。
第一标准估计(例如,近似、相关等)具有指定质量所需的预期熵。具体质量能够由特定QP值给出。第二标准估计伪影(例如,振铃伪影)在该块中将多么容易地可见。第二标准是子块中的伪影对相邻子块的影响的估计。也就是说,第二标准估计块的子块中的视觉掩蔽量。每个子块的大小能够为通常由确定分割的编解码器支持的最小可能分区大小。在示例中,块能够是大小为32×32的亮度块,并且最小可能分区大小能够是8×8。然而,其它块大小和最小可能分区大小是可能的。在示例中,每个子块的最小大小能够基于目标质量而改变。例如,在最高质量(例如,butteraugli限制<1.0,或某个其它质量标准)下,视觉掩蔽子块大小能够被设置为5×5或某个其它这样小的大小;并且在低质量(例如,butteraugli限制>4或8,或某个其它质量标准)下,能够将最小大小扩展到更大的大小(例如,12×12、16×16等)。下文解释butteraugli限制。
视觉掩蔽是人眼的特性。视觉掩蔽允许一些伪影消失(例如,变得不引人注目)和一些伪影出现(例如,变得引人注目)。因此,如果子块中的伪影(例如,振铃伪影)可能在块的其它子块(即,更准确地说,子块的重构版本)中消失,则这有利于将子块与其它相邻子块组合,以便使用组合子块大小的变换(诸如DCT)进行变换。另一方面,如果伪影不太可能在相邻子块中消失,则这有利于在不将子块与其它相邻子块组合的情况下变换子块。
因此,例如,当确定是否对N×N块(例如,32×32块)进行分区时,除了考虑在块中实现指定质量所需的熵(例如,速率的指示)之外,根据本公开的实施方式还考虑该块内的掩蔽特性。
为了说明,给定N×N(例如,32×32)块,能够考虑块的最小可能子块(例如,8×8)。能够考虑(例如,计算、确定等)每个子块的视觉掩蔽特性(或简称为掩蔽特性)。如果任何子块是平坦的(例如,几乎不包括纹理),则该子块可能比在子块有噪声(例如,包括大量纹理)的情况下更容易示出从另一个子块传播的伪影。如果N×N块的每一个子块都具有一些噪声(诸如在N×N块是地毯、灌木丛或草地的图像块的情况下),则一个子块中的任何伪影能够在其它子块的纹理中隐藏(例如,通过视觉掩蔽进行掩蔽)。另一方面,如果N×N块的剩余部分的至少一部分是平滑的(例如在天空或汽车油漆的情况下),则不存在视觉掩蔽,并且伪影的可见性显露(例如,被传播到N×N块的剩余部分的至少该部分)。
因此,二重标准块分割(即,变换分区)启发法是指使用以比特为单位的代价(第一标准)和子块内的视觉掩蔽(第二标准)两者来确定块分区。确定块内的视觉掩蔽的最坏情况区域(即,块的一个或多个子块)。假设伪影以等同的方式在整个块中传播。因此,能够假设块内的伪影由块内的最低视觉掩蔽区域确定。
用于有损压缩的二重标准块分割启发法的益处包括单个启发法(二重标准块分割启发法)能够用于大范围图像(诸如图形、照片、屏幕截图、用户界面元素),同时保留脆弱纹理(诸如森林、大理石、皮肤)的自然外观,而同时仍然使用较小的积分变换,其中,较小的变换能够是有用的(诸如在屏幕截图、图形或平滑区域与非平滑区域之间的边界的情况下)。
在本文中首先参考能够在其中实现本文的教导的系统描述用于有损压缩的二重标准块分割启发法的细节。图1是视频编码和解码系统100的示意图。发射站102能够是例如具有内部硬件配置的计算机,诸如关于图2描述的计算机。然而,发射站102的其它合适的实施方式是可能的。例如,发射站102的处理能够被分布在多个设备当中。
网络104能够将发射站102和接收站106连接,以用于编码和解码视频流。具体来说,视频流能够在发射站102中编码,并且编码的视频流能够在接收站106中解码。例如,网络104能够是因特网。网络104也能够是局域网(LAN)、广域网(WAN)、虚拟专网(VPN)、蜂窝电话网络,或将视频流从发射站102传递到(在此示例中)接收站106的任何其它手段。
在一个示例中,接收站106能够是具有内部硬件配置的计算机,例如关于图2描述的计算机。然而,接收站106的其它合适的实施方式是可能的。例如,接收站106的处理能够被分布在多个设备当中。
视频编码和解码系统100的其它实施方式是可能的。例如,实施方式能够省略网络104。在另一实施方式中,视频流能够被编码并且然后被存储以供稍后传输到接收站106或具有存储器的任何其它设备。在一个实施方式中,接收站106(例如,经由网络104、计算机总线和/或某个通信路径)接收编码的视频流并且存储视频流以供稍后解码。在示例实施方式中,实时传输协议(RTP)用于通过网络104传输编码的视频。在另一实施方式中,可以使用除了RTP之外的传输协议(例如,基于HTTP的视频流传输协议)。
例如,当在视频会议系统中使用时,发射站102和/或接收站106可以包括如下所述的对视频流进行编码和解码的能力。例如,接收站106能够是视频会议参与者,该视频会议参与者从视频会议服务器(例如,发射站102)接收编码的视频比特流,以解码和查看并且进一步编码它自己的视频比特流并将它自己的视频比特流传输到视频会议服务器以供其他参与者解码和查看。
图2是能够实现发射站或接收站的计算设备200的示例的框图。例如,计算设备200能够实现图1的发射站102和接收站106中的一个或两者。计算设备200能够呈包括多个计算设备的计算系统的形式,或者呈单个计算设备的形式,例如移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。
计算设备200中的CPU 202能够是中央处理单元。或者,CPU 202能够是能够操纵或处理信息的任何其它类型的设备,或现有或以后开发的多个设备。尽管能够利用如所示的单个处理器(例如,CPU 202)实践所公开的实施方式,但是能够通过使用多于一个处理器来实现速度和效率方面的优势。
在实施方式中,计算设备200中的存储器204能够是只读存储器(ROM)设备或随机存取存储器(RAM)设备。任何其它合适类型的存储设备能够用作存储器204。存储器204能够包括由CPU 202使用总线212访问的代码和数据206。存储器204能够进一步包括操作系统208和应用程序210,应用程序210包括允许CPU 202执行本文描述的方法的至少一个程序。例如,应用程序210能够包括应用1到N,它们进一步包括执行本文描述的方法的视频代码化应用。计算设备200还能够包括辅助存储设备214,它例如能够是与移动的计算设备200一起使用的存储器卡。因为视频通信会话可以包含大量信息,所以它们能够全部或部分存储在辅助存储设备214中,并且根据需要加载到存储器204中以供处理。
计算设备200还能够包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是将显示器与触敏元件组合的触敏显示器,触敏元件能够操作用于感测触摸输入。显示器218能够经由总线212耦合到CPU 202。除了或替代显示器218,能够提供允许用户编程或以其它方式使用计算设备200的其它输出设备。当输出设备是或包括显示器时,显示器能够以各种方式实现,包括作为液晶显示器(LCD);阴极射线管(CRT)显示器;或发光二极管(LED)显示器,诸如有机LED(OLED)显示器。
计算设备200还能够包括图像感测设备220或与图像感测设备220通信,图像感测设备220例如为相机或能够感测图像(诸如操作计算设备200的用户的图像)的现有或以后开发的任何其它图像感测设备。图像感测设备220能够被定位成使得它被指向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴能够被配置使得视场包括与显示器218直接相邻并且显示器218从其可见的区域。
计算设备200还能够包括声音感测设备222或与声音感测设备222通信,声音感测设备222例如为麦克风或能够感测计算设备200附近的声音的现有或以后开发的任何其它声音感测设备。声音感测设备222能够被定位成使得它被指向操作计算设备200的用户,并且能够被配置成接收在用户操作计算设备200时由用户发出的声音,例如语音或其它话语。
尽管图2将计算设备200的CPU 202和存储器204描述为集成到单个单元中,但能够利用其它配置。CPU 202的操作能够跨能够直接耦合或跨局域网或其它网络耦合的多个机器(每个机器具有一个或多个处理器)分布。存储器204能够跨多个机器分布,诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器。尽管这里描述为单个总线,但是计算设备200的总线212能够由多个总线组成。此外,辅助存储设备214能够直接耦合到计算设备200的其它组件或能够经由网络访问,并且能够包括诸如存储器卡的单个集成单元或诸如多个存储器卡的多个单元。计算设备200因此能够以各种各样的配置来实现。
图3是要编码并且随后解码的视频流300的示例的图。视频流300包括视频序列302。在下一级,视频序列302包括多个相邻帧304。尽管将三个帧描绘为相邻帧304,但是视频序列302能够包括任何数量的相邻帧304。然后能够将相邻帧304进一步细分成单独的帧,例如帧306。在下一级,能够将帧306分成一系列片段308或平面。例如,片段308能够是允许并行处理的帧的子集。片段308也能够是能够将视频数据分离成不同颜色的帧的子集。例如,彩色视频数据的帧306能够包括一个亮度平面和两个色度平面。可以在不同的分辨率下对片段308进行采样。
无论是否将帧306分成片段308,都可以将帧306进一步细分成块310,该块能够包含对应于例如帧306中的16×16像素的数据。块310还能够被布置成包括来自像素数据的一个或多个片段308的数据。块310还能够具有任何其它合适的大小,诸如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素,或更大。
图4是根据本公开的实施方式的编码器400的框图。如上所述,编码器400能够诸如通过提供存储在存储器(例如存储器204)中的计算机软件程序而在发射站102中实现。计算机软件程序能够包括机器指令,机器指令当由诸如CPU 202的处理器执行时使发射站102以本文描述的方式对视频数据进行编码。编码器400还能够被实现为例如包括在发射站102中的专用硬件。编码器400具有以下级以在前向路径(由实连接线所示)中执行各种功能,以使用视频流300作为输入来产生编码或压缩比特流420:帧内/帧间预测级402、变换级404、量化级406和熵编码级408。编码器400还可以包括重构路径(由虚连接线所示),以重构帧以用于未来块的编码。在图4中,编码器400具有以下级以在重构路径中执行各种功能:去量化级410、逆变换级412、重构级414和环路滤波级416。编码器400的其它结构变化能够用于对视频流300进行编码。
当呈现视频流300以用于编码时,能够以块为单位处理帧306。在帧内/帧间预测级402,能够使用帧内预测(也称为帧内预测)或帧间预测(也称为帧间预测)或两者的组合对块进行编码。在任何情况下,能够形成预测块。在帧内预测的情况下,预测块的全部或部分可以由当前帧中先前已经编码和重构的样本形成。在帧间预测的情况下,预测块的全部或部分可以由使用运动向量确定的一个或多个先前构建的参考帧中的样本形成。
接下来,仍参考图4,能够在帧内/帧间预测级402从当前块中减去预测块以产生残差块(也称为残差)。变换级404使用基于块的变换将残差变换成例如频域中的变换系数。这种基于块的变换(即变换类型)包括例如离散余弦变换(DCT)和非对称离散正弦变换(ADST)。其它基于块的变换是可能的。此外,可以将不同变换的组合应用于单个残差。在应用变换的一个示例中,DCT将残差块变换到其中变换系数值是基于空间频率的频域中。最低频率(DC)系数处于矩阵的左上角,并且最高频率系数处于矩阵的右下角。值得注意的是,预测块的大小以及由此产生的残差块可能与变换块的大小不同。例如,可以将预测块分割成单独变换应用于的更小块。
量化级406使用量化器值或量化级别将变换系数转换成离散量子值,离散量子值称为量化变换系数。例如,可以将变换系数除以量化器值并且将变换系数截断。然后由熵编码级408对量化的变换系数进行熵编码。可以使用包括令牌和二叉树的任何数量的技术来执行熵代码化。然后将熵编码的系数与用于对块进行解码的其它信息(其可以包括例如使用的预测的类型、变换类型、运动向量和量化器值)一起输出到压缩比特流420。可以将用于对块进行解码的信息熵代码化为压缩比特流420内的块、帧、切片和/或段头。压缩比特流420还能够被称为编码的视频流或编码的视频比特流;这些术语将在本文中可互换使用。
图4中的重构路径(由虚连接线所示)能够用于确保编码器400和解码器500(下文描述)两者都使用相同的参考帧和块来对压缩比特流420进行解码。重构路径执行与在解码过程期间发生并且在下面更详细讨论的功能类似的功能,包括在去量化级410对量化的变换系数进行去量化,以及在逆变换级412对去量化的变换系数进行逆变换以产生导数残差块(也称为导数残差)。在重构级414,能够将在帧内/帧间预测级402预测的预测块添加到导数残差以创建重构块。环路滤波级416能够被应用于重构块以减少失真,诸如块伪影。
编码器400的其它变型能够用于对压缩比特流420进行编码。例如,基于非变换的编码器400能够直接量化残差信号,而无需用于某些块或帧的变换级404。在另一实施方式中,编码器400能够将量化级406与去量化级410组合成单个级。
图5是根据本公开的实施方式的解码器500的框图。解码器500能够例如通过提供存储在存储器204中的计算机软件程序而在接收站106中实现。计算机软件程序能够包括机器指令,机器指令当由诸如CPU 202的处理器执行时使接收站106以下文描述的方式对视频数据进行解码。解码器500还能够以包括在例如发射站102或接收站106中的硬件来实现。
类似于上面讨论的编码器400的重构路径,解码器500在一个示例中包括以下级以执行各种功能以从压缩比特流420产生输出视频流516:熵解码级502、去量化级504、逆变换级506、帧内/帧间预测级508、重构级510、环路滤波级512和后滤波级514。解码器500的其它结构变型能够用于对压缩比特流420进行解码。
当呈现压缩比特流420以用于解码时,压缩比特流420内的数据元素能够由熵解码级502解码以产生一组量化的变换系数。去量化级504对量化的变换系数进行去量化(例如,通过将量化的变换系数乘以量化器值),并且逆变换级506使用所选择的变换类型对去量化的变换系数进行逆变换以产生导数残差,该导数残差能够与由编码器400中的逆变换级412创建的导数残差相同。使用从压缩比特流420解码的报头信息,解码器500能够使用帧内/帧间预测级508来创建与在编码器400中例如在帧内/帧间预测级402处创建的预测块相同的预测块。在重构级510,能够将预测块添加到导数残差以创建重构块。环路滤波级512能够被应用于重构块以减少块伪影。其它滤波能够被应用于重构块。在示例中,后滤波级514被应用于重构块以减少块失真,并且输出结果作为输出视频流516。输出视频流516还能够被称为解码视频流;这些术语将在本文中可互换使用。
解码器500的其它变型能够用于对压缩比特流420进行解码。例如,解码器500能够在没有后滤波级514的情况下产生输出视频流516。在解码器500的一些实施方式中,在环路滤波级512之后应用后滤波级514。环路滤波级512能够包括任选的去块滤波级。另外或替代地,编码器400包括在环路滤波级416中的任选的去块滤波级。
编解码器能够使用多种变换类型。例如,变换类型能够是图4的变换级404用于生成变换块的变换类型。例如,变换类型(即,逆变换类型)能够是图5的去量化级504使用的变换类型。可用变换类型能够包括一维离散余弦变换(1D DCT)或其近似、一维离散正弦变换(1D DST)或其近似、二维DCT(2D DCT)或其近似、二维DST(2D DST)或其近似,以及恒等变换。其它变换类型能够是可用的。在示例中,能够在一个维度(例如,行或列)中应用一维变换(1D DCT或1D DST),并且能够在另一个维度中应用恒等变换。
在使用1D变换(例如,1D DCT、1D DST)(例如,1D DCT被应用于变换块的列(或行))的情况下,能够通过使用逐行(即光栅)扫描顺序或逐列扫描顺序对量化系数进行代码化。在使用2D变换(例如,2D DCT)的情况下,不同的扫描顺序可以用于对量化系数进行代码化。如上文所指示的,能够使用不同的模板来导出用于基于使用的变换类型对非零映射的非零标志进行代码化的上下文。因此,在实施方式中,能够基于用于生成变换块的变换类型来选择模板。如上文所指示的,变换类型的示例包括:应用于行(或列)的1D DCT和应用于列(或行)的恒等变换;应用于行(或列)的1D DST和应用于列(或行)的恒等变换;应用于行(或列)的1D DCT和应用于列(或行)的1D DST;2D DCT;以及2D DST。变换的其它组合能够包括变换类型。
图6是根据本公开的实施方式的帧(诸如,图3的帧306)的部分600的表示的框图。如图所示,帧的部分600包括矩阵或笛卡尔平面中的两行和两列中的四个64×64块610,它们可以称为超级块。超级块能够具有更大或更小的大小。尽管图6参考大小为64×64的超级块解释,但是描述可容易地扩展到更大(例如,128×128)或更小的超级块大小。
在示例中并且不失一般性,超级块能够是基本或最大代码化单元(CU)。每个超级块能够包括四个32×32块620。每个32×32块620能够包括四个16×16块630。每个16×16块630能够包括四个8×8块640。每个8×8块640能够包括四个4×4块650。每个4×4块650能够包括16个像素,这些像素能够在笛卡尔平面或矩阵中的每个相应块中表示为四行和四列。像素能够包括表示在帧中捕获的图像的信息,诸如亮度信息、颜色信息和位置信息。在示例中,诸如所示的16×16像素块的块能够包括亮度块660,该亮度块能够包括亮度像素662;以及两个色度块670/680,诸如U或Cb色度块670和V或Cr色度块680。色度块670/680能够包括色度像素690。例如,亮度块660能够包括16×16亮度像素662,并且每个色度块670/680能够包括8×8色度像素690,如图所示。尽管示出一种块布置,但是能够使用任何布置。尽管图6示出N×N块,但是在一些实施方式中,能够使用N×M块,其中N≠M。例如,能够使用32×64块、64×32块、16×32块、32×16块,或任何其它大小的块。在一些实施方式中,能够使用N×2N块、2N×N块,或其组合。
在一些实施方式中,代码化(即,图像或视频代码化)能够包括有序块级代码化。有序块级代码化能够包括按照诸如光栅扫描顺序的顺序对帧的块进行代码化,其中,能够从帧的左上角的块或帧的一部分开始识别和处理块,并且沿着从左到右和从顶行到底行的行进行,依次识别每个块以进行处理。例如,帧的顶行和左列中的超级块能够是第一块被代码化的,而紧靠第一块的右侧的超级块能够是第二块被代码化的。从上数第二行能够是第二行被代码化的,使得第二行的左列中的超级块能够在第一行的最右列中的超级块之后被代码化。
在示例中,对块进行代码化能够包括使用四叉树代码化,四叉树代码化能够包括按照光栅扫描顺序对关于块的更小块单元进行代码化。在图6中所示的帧的部分的左下角示出的64×64超级块例如能够使用四叉树代码化进行代码化,其中能够对左上32×32块进行代码化,然后能够对右上32×32块进行代码化,然后能够对左下32×32块进行代码化,并且然后能够对右下32×32块进行代码化。每个32×32块能够使用四叉树代码化进行代码化,其中能够对左上16×16块进行代码化,然后能够对右上16×16块进行代码化,然后能够对左下16×16块进行代码化,并且然后能够对右下16×16块进行代码化。每个16×16块能够使用四叉树代码化进行代码化,其中能够对左上8×8块进行代码化,然后能够对右上8×8块进行代码化,然后能够对左下8×8块进行代码化,并且然后能够对右下8×8块进行代码化。每个8×8块能够使用四叉树代码化进行代码化,其中能够对左上4×4块进行代码化,然后能够对右上4×4块进行代码化,然后能够对左下4×4块进行代码化,并且然后能够对右下4×4块进行代码化。在一些实施方式中,对于16×16块能够省略8×8块,并且能够使用四叉树代码化对16×16块进行代码化,其中能够对左上4×4块进行代码化,并且然后能够按照光栅扫描顺序对16×16块中的其它4×4块进行代码化。
在示例中,视频代码化能够包括通过从对应的编码帧中省略原始帧中的一些信息来压缩原始(例如,输入、源等)帧中包括的信息。例如,代码化能够包括减少光谱冗余、减少空间冗余、减少时间冗余或它们的组合。
在示例中,减少光谱冗余能够包括使用基于亮度分量(Y)和两个色度分量(U和V或Cb和Cr)的颜色模型,颜色模型能够被称为YUV或YCbCr颜色模型或颜色空间。使用YUV颜色模型能够包括使用相对大量的信息来表示帧的部分的亮度分量,并且使用相对少量的信息来表示帧的部分的每个对应色度分量。例如,帧的部分能够由高分辨率亮度分量表示,高分辨率亮度分量能够包括16×16像素块,并且能够由两个较低分辨率色度分量表示,每个较低分辨率色度分量将帧的部分表示为8×8像素块。像素能够指示值(例如,从0到255范围内的值)并且能够使用例如八个比特来存储或传输。尽管参考YUV颜色模型描述本公开,但是能够使用任何颜色模型。
减少空间冗余能够包括将块变换到如上所述的频域中。例如,编码器的单元(诸如图4的熵编码级408)能够使用基于空间频率的变换系数值来执行DCT。
减少时间冗余能够包括使用帧之间的相似性以使用基于一个或多个参考帧的相对少量的数据来对帧进行编码,一个或多个参考帧能够是视频流的先前编码、解码和重构的帧。
如上所述,能够使用四叉树代码化来对超级块进行代码化。图7是根据本公开的实施方式的块的四叉树表示的示例700的框图。示例700包括块702。如上所述,块702能够被称为超级块或CTB。示例700说明块702的分区。然而,块702能够诸如通过编码器(例如,图4的编码器400)来不同地分区。
示例700说明块702被分区成四个块,即块702-1、702-2、702-3和702-4。块702-2被进一步分区成块702-5、702-6、702-7和702-8。因此,如果例如块702的大小是N×N(例如,128×128),则块702-1、702-2、702-3和702-4各自具有大小N/2×N/2(例如,64×64),并且块702-5、702-6、702-7和702-8各自具有大小N/4×N/4(例如,32×32)。如果块被分区,则块被分区成四个相等大小的非重叠正方形子块。
四叉树数据表示用于描述如何将块702分区成子块,诸如块702-1、702-2、702-3、702-4、702-5、702-6、702-7和702-8。示出块702的分区的四叉树703。如果四叉树703的每个节点被进一步分割成四个子节点,则该节点被分配标志“1”,并且如果该节点未被分割,则该节点被分配标志“0”。标志能够被称为分割比特(例如,1)或停止比特(例如,0)并且代码化在压缩比特流中。在四叉树中,节点具有四个子节点,或者没有子节点。没有子节点的节点对应于没有进一步分割的块。分割块的每个子节点对应于子块。
在四叉树703中,每个节点对应于块702的子块。在括号内示出对应子块。例如,具有值0的节点704-1对应于块702-1。
根节点704-0对应于块702。由于块702被分割成四个子块,因此根节点704-0的值是分割比特(例如,1)。在中间级别,标志指示块702的子块是否被进一步分割成四个子子块。在这种情况下,节点704-2包括标志“1”,因为块702-2被分割成块702-5、702-6、702-7和702-8。节点704-1、704-3和704-4中的每一个包括标志“0”,因为对应块未被分割。由于节点704-5、704-6、704-7和704-8位于四叉树的底层,因此这些节点不需要标志“0”或“1”。能够从不存在对应于这些块的附加标志推断块702-5、702-6、702-7和702-8未被进一步分割。
四叉树703的四叉树数据表示能够由二进制数据“10100”表示,其中,每个比特表示四叉树703的节点704。二进制数据向编码器和解码器指示块702的分区。在编码器需要将二进制数据传送到解码器(诸如图5的解码器500)的情况下,编码器能够将二进制数据编码在压缩比特流(诸如图4的压缩比特流420)中。
对应于四叉树703的叶节点的块能够用作用于预测的基础。也就是说,能够针对块702-1、702-5、702-6、702-7、702-8、702-3和702-4中的每一个(本文中称为代码化块)执行预测。如关于图6所提及的,代码化块能够是亮度块或色度块。应注意,在示例中,能够相对于亮度块确定超级块分区。相同的分区能够与色度块一起使用。
在代码化块(例如,块702-1、702-5、702-6、702-7、702-8、702-3或702-4)级别,确定预测类型(例如,帧内或帧间预测模式)。也就是说,代码化块是用于预测的决策点。
在一些实施方式中,可以通过将当前残差块分区成一个或多个变换分区来提高基于块的代码化效率,一个或多个变换分区可以是矩形的,包括用于变换代码化的正方形分区。例如,诸如块610的当前残差块可以是64×64块,并且可以在不使用64×64变换进行分区的情况下执行。在示例中,诸如块610的当前残差块可以是32×32块,并且可以在不使用32×32变换进行分区的情况下执行。
尽管在图6中没有明确地示出,但是可以将残差块变换分区成变换子块。例如,可以使用包括六十四个8×8变换块的变换分区方案或使用包括256个4×4变换块的统一变换分区方案将64×64残差块变换分区成四个32×32变换块,包括十六个16×16变换块。
在一些实施方式中,使用二重标准块分割启发法的视频代码化能够包括识别残差块的变换块大小。在一些实施方式中,变换分区代码化可以包括递归地确定是使用当前块大小变换来变换当前块还是通过对当前块进行分区并且对每个分区进行变换分区代码化。
例如,图6中所示的左下块610可以是64×64残差块,并且变换分区代码化可以包括确定是使用64×64变换对当前64×64残差块进行代码化还是通过将64×64残差块分区成分区(例如,四个32×32分区620)并且对每个分区进行变换分区代码化来对64×64残差块进行代码化。在示例中,分区能够是四个32×32分区620、两个64×32分区、两个32×64分区中的一个。是否对64×64进行分区能够是基于分割指示符值是否指示块应当被分区。如上文描述的并且如下文进一步描述的,分割指示符值能够将对块进行代码化的代价(以比特为单位)与块的视觉掩蔽特性组合。在示例中,分割指示符值能够是代价与视觉掩蔽特性的比率。在示例中,比率能够与根据经验得出的常数进行比较。如果比率小于常数,则对块进行分割。
在一些实施方式中,确定当前变换块的变换分区能够是基于评估同级分区的相应分割指示符值。例如,如果N×N变换块的分割指示符值指示块应当被分割。可能变换分区可以是四个N/2×N/2分区(即,第一分区,包括四个N/2×N/2变换子块的变换分区)、两个N/2×N分区(即,第二分区,包括两个N/2×N变换子块的变换分区),或两个N×N/2分区(即,第三分区,包括两个N/2×N/2变换子块的变换分区)。能够分别针对第一变换分区、第二变换分区和第三变换分区计算第一、第二和第三分割指示符值。然后能够选择对应于相应分割指示符值中的最佳者的变换分区。变换分区的分割指示符值能够是变换分区的变换子块的分割指示符值的聚合。聚合能够是分区的变换子块的分割指示符值的总和、最大值或某个其它聚合。
在示例中,能够针对当前块(即,当前变换块)确定分割指示符值,并且能够针对当前块的可能变换分区中的每一个确定相应的分割指示值。如果当前变换块的分割指示符值好于子分区的分割指示符值,则不分割当前块;否则,根据具有最小(例如,最佳)分割指示符值的分区来分割当前块。
为了说明,对于所示的左下64×64块610,用于使用64×64大小的变换对64×64块610进行编码的分割指示符值可以指示左下64×64块610应当被分割。因此,确定用于使用32×32变换对四个32×32子块620进行编码的分割指示符值的聚合。用于使用32×32变换对左上32×32子块620进行编码的分割指示符值可以指示左上32×32子块620不应当被分割,并且可以使用32×32变换对左上32×32子块620进行代码化。类似地,用于使用32×32变换对右上32×32子块620进行编码的分割指示符值可以小于用于使用四个16×16变换对右上32×32子块620进行编码的代价的总和,并且可以使用32×32变换对右上32×32子块620进行代码化。类似地,用于使用32×32变换对左下32×32子块620进行编码的分割指示符值可以小于用于使用四个16×16变换对左下32×32子块620进行编码的分割指示符值的聚合,并且可以使用32×32变换对左下32×32子块620进行代码化。用于使用32×32变换对右下32×32子块620进行编码的分割指示符值可以超过用于使用四个16×16变换对右下32×32子块620进行编码的分割指示符值的聚合,并且可以将右下32×32子块620分区成四个16×16子块630,并且可以使用多形式变换分区代码化对每个16×16子块630进行代码化。
图8是根据本公开的实施方式的用于对图像块进行分区以减少量化伪影的技术800的流程图。技术800确定是否应当使用二重标准块分割启发法对块进行变换分区。第一标准估计预期熵;并且第二标准是子块中的伪影对块的相邻子块的影响的估计。技术800确定是否使用具有块的大小的变换将块变换到频域,或者是否应当将块分区成更小的子块,并且使用具有该子块的大小的变换或通过使用技术800进一步分区来单独地变换每个子块。
图像能够是单个图像或视频序列的帧。块包括像素,并且每个像素具有对应像素值。像素值能够是亮度Y值、色度U值、色度V值,或其它颜色分量值。在示例中,块能够是最大代码化块大小(例如,超级块、宏块等)。在示例中,最大代码化块大小能够具有大小32×32、64×64、128×128、更小或更大。在示例中,块能够是最大代码化块的较小子块。为了说明,块能够是32×32最大代码化块大小的16×16、32×16、16×32、8×16、16×8或某个其它子块。
技术800能够例如实现为可以由计算设备执行的软件程序,计算设备诸如图1的计算和发射站102或接收站106。软件程序能够包括机器可读指令,机器可读指令可以被存储在诸如存储器204的存储器中,并且当由诸如CPU 202的处理器执行时能够使计算设备执行技术800。
技术800能够在编码器中或由编码器实现,技术800的操作能够完全地或部分地实现于图4的编码器400的变换单元420、去量化单元450、逆变换单元460、重构单元470、其它单元、或其任何组合中。
技术800能够使用专用硬件或固件实现。可以使用多个处理器、存储器或两者。
在802处,技术800估计块的预期熵。技术800能够估计在块中具有指定质量所需的预期熵。块的预期熵能够如下所述的进行近似。
在示例中,技术800能够计算块中像素的拉普拉斯算子并且取最大绝对值。也就是说,最大绝对拉普拉斯算子值能够用作预期熵的估计。因此,估计802块的预期熵能够包括确定块的像素的相应拉普拉斯算子并且选择绝对拉普拉斯算子的最大值作为块的预期熵。
拉普拉斯算子能够指示块中的高频能量。统计上,块中的高频能量能够映射到变换块的至少大部分高频元素(即,变换系数位置)。当在高频元素中存在能量时,在那些高频元素处(即,在变换系数位置处)的值(即,变换系数值)不为零。当变换(例如,DCT变换)的高频元素不为零时,存储这些变换系数值能够是代价高的(就压缩比特流中的比特而言)。为了重新迭代,拉普拉斯算子能够用信号通知变换的最高频元素(例如,DCT变换)。
图9是根据本公开的实施方式的计算拉普拉斯算子的示例900。为简洁起见,关于大小为8×8的块902描述计算拉普拉斯算子。然而,块能够具有任何矩形大小,包括正方形大小。块902能够是亮度块、色度块或某个其它颜色分量块。在示例中,在块是亮度块的情况下,块的像素值能够由8比特值表示。因此,块902的像素值能够在范围[0.255]中。
在示例中,确定块的像素的相应拉普拉斯算子能够包括:对于块的行和列中的像素,从像素中减去第一值,第一值是行的所有像素的第一平均值的第一函数;以及从像素中减去第二值,第二值是列的所有像素的第二平均值的第二函数。例如,对于在块902的位置(x,y)处的每个像素,从在位置(x,y)处的像素值中减去列x的平均像素值的函数和行y的平均像素值的函数。像素(即,像素值)的拉普拉斯算子能够被认为是从像素中减去像素的相邻像素的平均值。这能够等效于将高通滤波器应用于像素。块902的所有像素的拉普拉斯算子是块(例如,拉普拉斯算子块918或拉普拉斯算子块922)描述块902中的快速变化。
行平均值904是包括块902的每行平均值的列向量。行平均值能够四舍五入到最接近的整数。例如,平均值906(即,147)是行908的平均像素值。因此,平均值906被计算为round((85+65+116+196+138+139+183+250)/8)=147。列平均值910是包括块902的每列平均值的行向量。列平均值能够四舍五入到最接近的整数。例如,平均值912(即,166)是列914的平均像素值。因此,平均值912被计算为round((200+68+138+230+241+87+151+214)/8)=166。
在示例中,函数可以是酉函数。本文中的酉函数意味着平均值按原样取或乘以1。因此,像素916的拉普拉斯算子920在拉普拉斯算子块918中被计算为round((138-147-166)=-175)。在示例中,函数能够将平均值乘以1/2。因此,像素916的拉普拉斯算子924在拉普拉斯算子块922中被计算为round((138-147/2-166/2)=-19)。应注意,通过减去一半的平均值,积分(即,拉普拉斯算子块922中的值的总和)实际上将具有零影响。也就是说,值的总和非常接近零。减去一半的平均值已经表明给出良好的结果。然而,能够减去其它分数值。平均值的函数能够不同于1/2函数的酉函数。
如果没有从块的像素中去除行和列平均值,则可以为DCT(即,变换块)的第一行和第一列设置不小量的熵权重,因为这些平均值能够在变换块的第一行和第一列中映射。重申一下,从像素中去除水平和垂直积分(即行和列平均值)能够允许更真实的熵估计,因为这些积分投影到第一行和第一列并且总熵低于其它高频元素。
为了进一步说明,假设图像是地平线的图像,其中在地平线之上是天空并且在地平线之下是湖泊。因此,在单个块(例如,3×32块)中,可以存在限定天空与湖泊之间的分割的单条线。当使用32×32DCT变换此块时,它包括1,024个元素并且是要存储的大量数据。然而,通过去除平均值,仅剩下地平线(即一条线),并且积分变换将不会使用所有32×32元素。变换仅使用32个元素:变换仅将所有值放在第一列(对于水平线,诸如所描述的地平线)或第一行(对于垂直线)。因此,得到显著减少的熵(和要存储的数据)。因此,为了减少拉普拉斯算子的估计中的熵,能够去除水平和垂直积分。
拉普拉斯算子块的最大绝对值能够用作预期熵。
返回到图8,在示例中,估计802块的预期熵能够包括使用假设编码器对块进行编码,并且使用从假设编码产生的多个比特作为块的预期熵。假设编码过程是执行代码化步骤但不将比特输出到压缩比特流中的过程。由于目的是估计比特速率(或简单地速率),因此可以将假设编码过程视为或称为速率估计过程。假设编码过程计算对区域进行编码所需的比特数。在另一示例中,能够使用已知与块的最终熵计算正相关的启发法估计(例如,近似)块的预期熵。例如,能够计算块的香农熵。
在804处,技术800将块分区成子块。每个子块的大小能够是最小可能分区大小。在示例中,亮度块的最小可能分区大小能够是8×8。在示例中,亮度块的最小可能分区大小能够是5×5。在示例中,色度块的最小可能分区大小能够是4×4。至少出于变换分区目的,具有最小可能分区大小的块不能被进一步分区。
在806处,技术800计算子块的相应视觉掩蔽量。也就是说,对于每个子块,技术800计算视觉掩蔽量。也就是说,技术800估计(例如,近似、相关等)伪影在该子块的重构子块块中多么容易地可见。
对于每个子块,技术800能够使用公式(1)计算子块中所有像素的积分
1/(1+x*x/(C*C))。 (1)
在公式(1)中,x表示(例如,指示、描述等)局部增量;并且常数C表示当以当前质量压缩子块时预期存在的局部增量的量。“局部增量”是指相邻像素之间的差异。例如,局部增量能够是拉普拉斯算子的幅度。在示例中,当使用公式(1)计算子块中的所有像素的积分时,x能够是子块中的最大绝对拉普拉斯算子。在另一示例中,能够将x计算为子块的所有拉普拉斯算子的总和。
积分值能够与经验确定的阈值(例如,5或某个其它值)进行比较。经验确定的阈值能够使用优化技术,诸如Nedler-Mead优化技术导出。积分的高值能够指示该子块中没有太多像素将参与视觉掩蔽。因此,传播到子块的来自相邻子块的任何伪影都可能是可见的。
在另一示例中,常数C能够是子块的butteraugli限制的倍数。butteraugli限制估计两个图像的心理视觉相似性。它对在几乎没有明显差异的域中可靠的图像打分,并且计算差异水平的空间图。butteraugli限制能够用作有损图像和视频压缩的质量目标。butteraugli能够用作质量评估器(即度量);然而,butteraugli限制的确切值能够用于定义有损图像和视频压缩的质量目标。因此,butteraugli限制能够是源子块(例如,预编码子块)与重构子块(例如,解码后子块)之间的质量差的估计。能够从https://opensource.google/projects/butteraugli获得用于计算butteraugli限制的工具。butteraugli限制是客观图像质量评估度量。它将差异平均主观分(DMOS)值分配给原始图像与降级版本之间的差异。重申一下,能够将常数C计算为子块的质量的倍数。子块的质量能够被定义为子块中最小可觉差的多个倍数。也就是说,常数C能够是butteraugli限制的倍数。
C是取决于期望(例如,选择等)的质量水平的常数。众所周知,通常在对图像进行编码时指定目标质量水平。因此,C能够与目标质量水平相关。众所周知,较低质量比较高目标质量导致压缩比特流中的更少比特。质量水平能够是或者能够被指定为量化参数QP。因此,常数C能够是QP的函数。在示例中,C能够是QP的线性函数(例如,倍数)。
在808处,技术800选择子块的相应视觉掩蔽量中的最高视觉掩蔽值作为块的视觉掩蔽特征。例如,如果块的大小(例如,32×32)大于最小可能分区大小(例如,8×8),则能够将块的所有子块的最差视觉掩蔽特征视为块的视觉掩蔽特征。如果块具有最小可能分区大小(例如,8×8),则采取视觉掩蔽特征。
在810处,技术800将块的视觉掩蔽特征与块的预期熵组合以获得分割指示符值。也就是说,能够将达到目标质量所需的熵与最坏情况的视觉掩蔽组合以获得最终分割决策。如上所述,块的掩蔽特征能够是块的所有子块的最坏情况的视觉掩蔽。在示例中,能够使用线性模型来将块的掩蔽特征与块的预期熵组合。在示例中,能够通过将块的视觉掩蔽与块的期望熵相乘来获得分割指示符值。
在812处,技术800基于分割指示符值来确定是否分割块。在示例中,分割指示符值能够与根据经验得出的预定义常数(例如,5)相比较。如果分割指示符值小于预定义常数,则分割块;否则,不分割块。
块的变换分割(分区)决策是其自然地导致适合于块的子块的振铃量的决策。变换分割能够有利于更大的变换大小。为了说明,假设块是32×32块。如果32×32块的振铃量(例如,如在技术800的806处计算的)对于掩蔽(如在技术800的810处计算的)是可接受的,则选择32×32变换。另一方面,如果振铃量不可接受,则使用技术800各自单独地测试块的可能分区。例如,测试由两个16×32块组成的第一分区和由两个32×16块组成的第二分区中的每一个。如果相应振铃量在第一分区和第二分区中不可接受,则测试由四个16×16块组成的第三分区。接下来,能够测试以下分区:由四个32×8块组成的第四分区、由八个16×8块组成的第五分区、由八个8×16块组成的第六分区、以及由十六个8×8子块组成的第七分区。也就是说,将块分区为越来越小的分区,直到达到可接受量值的振铃结果和/或最小的可能分区。如能够认识到的,能够存在许多不同的方式来测试块的分区。
能够按照大小顺序测试块(或子块)的分区,并且能够将产生分割指示符的可接受值的最大分区选择为块的分区。
图11图示根据传统技术的变换分区1100和根据本公开的实施方式的变换分区1110的假设比较示例。图11的示例仅用于说明目的并且不以任何方式限制本公开的教导。
在根据传统技术的变换分区1100中,可以将残差块(例如,大小为32×32)分区成四个变换子块1102、1104、1106和1108(例如,每个具有大小16×16)。将变换子块1102进一步分区成子块1102A、1102B、1102C和1102D(例如,每个具有大小8×8)。可以将变换子块1104进一步分区成子块1104A、1104B、1104C和1104D(例如,每个具有大小4×16)。变换子块1106不被进一步分区。将变换子块1108进一步分区成子块1108A和1108B(例如,每个具有大小16×8)。变换分区1100说明较大块(或子块)可以被进一步分割,因为它被确定为包含平滑子块。
对比之下,根据本公开的实施方式的变换分区1110导致块被分区成子块1102(例如,具有大小16×16)、子块1110(例如,具有大小32×16)和子块1106(例如,具有大小16×16)。因此,上面描述的用于确定是否应当进一步分割平滑子块的有损压缩的二重标准块分割启发法能够产生更大大小的变换子块。
为了简化说明,将技术800描绘和描述为一系列步骤或操作。然而,根据本公开的步骤或操作能够按照各种顺序和/或同时发生。另外,可以使用本文未提出和描述的其它步骤或操作。此外,可能不需要所有图示的步骤或操作来实现根据所公开的主题的方法。
词语“示例”或“示例性”在本文中用于意指充当示例、实例或说明。本文描述为“示例”或“示例性”的任何方面或设计不一定被解释为比其它方面或设计优选或有利。相反,使用词语“示例”或“示例性”旨在以具体方式呈现概念。如本申请中所使用的,术语“或”旨在意指包括性“或”,而不是排他性“或”。也就是说,除非另外指定或从上下文中清楚可知,否则“X包括A或B”旨在意指其任何自然的包括性置换。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何前述情况下都满足“X包括A或B”。另外,如本申请和所附权利要求书中所使用的词语“一”和“一个”一般应当被解释为意指“一个或多个”,除非另外指定或从上下文清楚地指示为单数形式。此外,贯穿全文对术语“实施例”或“一个实施例”或“实施方式”或“一个实施方式”的使用并不旨在意指相同的实施例或实施方式,除非如此描述。如本文所使用的,术语“确定”和“识别”或其任何变型包括以无论任何方式使用图1中所示的一个或多个设备来选择、确认、计算、查找、接收、确定、建立、获得或以其它方式识别或确定。
此外,为了简化说明,尽管本文的附图和描述可以包括操作或阶段的序列或系列,但是本文公开的方法的元素能够按照各种顺序和/或同时发生。另外,本文公开的方法的元素可以与本文未明确呈现和描述的其它元素一起出现。此外,可以从根据所公开的主题的方法的实施方式中省略本文描述的方法的一个或多个要素。
发射站102和/或接收站106(以及存储在其上和/或由此执行的算法、方法、指令等)的实施方式能够用硬件、软件、或其任何组合来实现。硬件能够包括例如计算机、知识产权(IP)内核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器、或任何其它合适的电路。在权利要求中,术语“处理器”应当被理解为单独地或组合地包括任何前述硬件。术语“信号”和“数据”可互换使用。此外,发射站102和接收站106的部分不一定以相同的方式实现。
此外,在一个实施方式中,例如,能够使用计算机程序来实现发射站102和接收站106,计算机程序在执行时实现本文描述的相应方法、算法和/或指令中的任一个。另外或替代地,例如,能够利用专用计算机/处理器,专用计算机/处理器能够包含用于实现本文描述的方法、算法或指令中的任一个的专用硬件。
发射站102和接收站106能够例如在实时视频系统中的计算机上实现。或者,发射站102能够在服务器上实现,而接收站106能够在与服务器分开的设备(诸如手持式通信设备)上实施。在这种情况下,发射站102能够使用编码器400将内容编码成编码的视频信号并且将编码的视频信号传输到通信设备。然后,通信设备进而能够使用解码器500对编码的视频信号进行解码。或者,通信设备能够对本地存储在通信设备上的内容(例如,不由发射站102传输的内容)进行解码。其它合适的发射站102和接收站106实施方案是可用的。例如,接收站106能够是通常固定的个人计算机,而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。
此外,所有或部分实施方式能够采取可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质能够是能够例如有形地包含、存储、传送或输送程序以供任何处理器使用或结合任何处理器使用的任何设备。介质能够是例如电子、磁性、光学、电磁或半导体设备。其它合适的介质也是可用的。已经描述了上述实施方式,以便允许容易理解本申请而不是限制性的。相反,本申请涵盖包括在所附权利要求的范围内的各种修改和等效布置,该范围应被赋予法律允许的最宽解释,以涵盖所有这样的修改和等效布置。

Claims (20)

1.一种用于对图像的块进行分区以减少量化伪影的方法,所述方法包括:
估计所述块的预期熵;
将所述块分区成子块;
计算所述子块的相应视觉掩蔽量;
选择所述子块的所述相应视觉掩蔽量中的最高视觉掩蔽值作为所述块的视觉掩蔽特征;
将所述块的所述视觉掩蔽特征与所述块的所述预期熵组合以获得分割指示符值;以及
基于所述分割指示符值来确定是否分割所述块。
2.根据权利要求1所述的方法,其中,所述块具有大小32×32,并且其中,最小可能分区大小是8×8。
3.根据权利要求1所述的方法,其中,估计所述块的所述预期熵包括:
确定所述块的像素的相应拉普拉斯算子;以及
选择所述相应拉普拉斯算子的绝对最大值作为所述块的所述预期熵。
4.根据权利要求3所述的方法,其中,确定所述块的像素的所述相应拉普拉斯算子包括:
对于所述块的行和列中的像素,从所述像素中减去第一值以及从所述像素中减去第二值,所述第一值是所述行的所有像素的第一平均值的第一函数,所述第二值是所述列的所有像素的第二平均值的第二函数。
5.根据权利要求4所述的方法,其中,所述第一值是所述第一平均值的一半,并且其中,所述第二值是所述第二平均值的一半。
6.根据权利要求1至5中任一项所述的方法,其中,估计所述块的所述预期熵包括:
使用假设编码器对所述块进行编码;以及
使用从所述假设编码器产生的多个比特作为所述块的所述预期熵。
7.根据权利要求1至5中任一项所述的方法,其中,计算所述子块的所述相应视觉掩蔽量包括:
使用公式1/(1+x*x/(C*C))计算给定块的相应视觉掩蔽量,其中,x指示所述块与所述块的重构版本之间的差异,并且其中,C是与质量水平相关的常数。
8.根据权利要求7所述的方法,其中,x是子块中的最大绝对拉普拉斯算子。
9.根据权利要求7所述的方法,其中,x是子块的像素的相应拉普拉斯算子的总和。
10.根据权利要求1所述的方法,其中,所述块的所述视觉掩蔽特征与所述预期熵是线性地组合的。
11.一种用于对图像的块进行分区以减少量化伪影的装置,包括:
存储器;以及
处理器,所述处理器被配置成执行存储在所述存储器中的指令以用于:
估计所述块的预期熵;
将所述块分区成子块;
计算所述子块的相应视觉掩蔽量;
选择所述子块的所述相应视觉掩蔽量中的最高视觉掩蔽值作为所述块的视觉掩蔽特征;
将所述块的所述视觉掩蔽特征与所述块的所述预期熵组合以获得分割指示符值;以及
基于所述分割指示符值来确定是否分割所述块。
12.根据权利要求11所述的装置,其中,所述块具有大小32×32,并且其中,最小可能分区大小是5×5。
13.根据权利要求11所述的装置,其中,估计所述块的所述预期熵包括:
确定所述块的像素的相应拉普拉斯算子;以及
选择所述相应拉普拉斯算子的绝对最大值作为所述块的所述预期熵。
14.根据权利要求13所述的装置,其中,确定所述块的像素的所述相应拉普拉斯算子包括:
对于所述块的行和列中的像素,从所述像素中减去第一值以及从所述像素中减去第二值,所述第一值是所述行的所有像素的第一平均值的第一函数,所述第二值是所述列的所有像素的第二平均值的第二函数。
15.根据权利要求14所述的装置,其中,所述第一值是所述第一平均值的一半,并且其中,所述第二值是所述第二平均值的一半。
16.根据权利要求11至15中任一项所述的装置,其中,估计所述块的所述预期熵包括:
使用假设编码器对所述块进行编码;以及
使用从所述假设编码器产生的多个比特作为所述块的所述预期熵。
17.根据权利要求11至15中任一项所述的装置,其中,计算所述子块的所述相应视觉掩蔽量包括:
使用公式1/(1+x*x/(C*C))计算给定块的相应视觉掩蔽量,其中,x指示所述块与所述块的重构版本之间的差异,并且其中,C是与质量水平相关的常数。
18.根据权利要求17所述的装置,其中,x是子块中的最大绝对拉普拉斯算子。
19.根据权利要求17所述的装置,其中,x是子块的像素的相应拉普拉斯算子的总和。
20.一种包括可执行指令的非暂时性计算机可读存储介质,所述可执行指令当由处理器执行时促进操作的执行,所述操作包括:
对图像的块进行分区以减少量化伪影,包括:
估计所述块的预期熵;
将所述块分区成子块;
计算所述子块的相应视觉掩蔽量;
选择所述子块的所述相应视觉掩蔽量中的最高视觉掩蔽值作为所述块的视觉掩蔽特征;
将所述块的所述视觉掩蔽特征与所述块的所述预期熵组合以获得分割指示符值;以及
基于所述分割指示符值来确定是否分割所述块。
CN202080098574.0A 2020-04-08 2020-04-08 有损压缩的二重标准块分割启发法 Pending CN115280772A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/027139 WO2021206699A1 (en) 2020-04-08 2020-04-08 Bicriteria block splitting heuristic for lossy compression

Publications (1)

Publication Number Publication Date
CN115280772A true CN115280772A (zh) 2022-11-01

Family

ID=70465533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080098574.0A Pending CN115280772A (zh) 2020-04-08 2020-04-08 有损压缩的二重标准块分割启发法

Country Status (4)

Country Link
US (1) US20230141888A1 (zh)
EP (1) EP3912344A1 (zh)
CN (1) CN115280772A (zh)
WO (1) WO2021206699A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220417537A1 (en) * 2021-06-23 2022-12-29 Black Sesame International Holding Limited Unprocessed image coding and decoding

Also Published As

Publication number Publication date
EP3912344A1 (en) 2021-11-24
WO2021206699A1 (en) 2021-10-14
US20230141888A1 (en) 2023-05-11

Similar Documents

Publication Publication Date Title
JP7110370B2 (ja) ビデオ符号化のための機械学習モデルの量子化パラメータに適用される非線形関数の使用
Gibson et al. An investigation of dehazing effects on image and video coding
CN113873237B (zh) 用于恢复由重构产生的劣化帧的劣化图块的方法和装置
CN107071440B (zh) 使用先前帧残差的运动矢量预测
CN112203088B (zh) 用于非基带信号代码化的变换选择
EP3066832B1 (en) Adaptive prediction of coefficients of a video block
JP2021516493A (ja) マルチ符号ビット隠蔽及び残差符号予測を和合する方法及び装置
KR20150111993A (ko) 손실된 비디오 데이터의 조건부 은닉
CN110622515A (zh) 定向帧内预测代码化
CN107231557B (zh) 用于在视频编码中的高级帧内预测的递归块分区中的智能重排的编、解码方法及装置
CN111602402B (zh) 一种产生滤波重构帧的方法及装置
CN109891885B (zh) 视频编译中用于环路恢复的引导偏移校正
CN110692245A (zh) 用于压缩的图像处理
US20240179352A1 (en) Restoration for video coding with self-guided filtering and subspace projection
CN110741636A (zh) 用于视频编码的变换块级扫描顺序选择
CN115280772A (zh) 有损压缩的二重标准块分割启发法
US8442338B2 (en) Visually optimized quantization
CN113170121A (zh) 用于比特率减少的视频流自适应滤波
US20210321142A1 (en) No-Reference Banding Artefact Predictor
CN111684811B (zh) 用于有损图像压缩的形态学抗振铃滤波器
Zhang et al. HEVC-based adaptive quantization for screen content by detecting low contrast edge regions
US20200162760A1 (en) Iterative idct with adaptive non-linear filtering
Cui et al. Intra-picture block-matching method for codebook-based texture compression

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