CN114788276A - 图像数据编码和解码 - Google Patents
图像数据编码和解码 Download PDFInfo
- Publication number
- CN114788276A CN114788276A CN202080066130.9A CN202080066130A CN114788276A CN 114788276 A CN114788276 A CN 114788276A CN 202080066130 A CN202080066130 A CN 202080066130A CN 114788276 A CN114788276 A CN 114788276A
- Authority
- CN
- China
- Prior art keywords
- output data
- data unit
- encoding
- data
- constraint
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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 slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
- H03M7/4012—Binary arithmetic codes
- H03M7/4018—Context adapative binary arithmetic codes [CABAC]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种图像数据编码设备,包括:熵编码器,被配置为选择性地对表示图像数据的数据项进行编码,以便生成连续输出数据单元的编码的二进制符号;熵编码器被配置为生成受约束的输出数据流,该约束限定了可由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的二进制符号的数量上限,其中,该熵编码器被配置为对不满足约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足约束;该设备包括:属性检测器,被配置为检测适用于给定输出数据单元的编码属性;以及选择器,被配置为响应于检测到的编码属性,从两个或更多个候选约束中选择用于给定输出数据单元的约束。
Description
技术领域
本公开涉及图像数据编码和解码。
背景技术
本文提供的“背景技术”描述是为了总体上呈现本公开的上下文的目的。在该背景技术部分中描述的程度上,当前命名的发明人的工作以及在提交时可能不符合现有技术的描述方面既不明确也不隐含地被认为是针对本公开的现有技术。
有几种视频数据编码和解码***涉及将视频数据转换成频域表示,量化频域系数,并且然后对量化的系数应用某种形式的熵编码。这可以实现视频数据的压缩。应用相应的解码或解压缩技术来恢复原始视频数据的重构版本。
高效视频编码(HEVC)(也被称为H.265或MPEG-H部分2)是H.264/MPEG-4AVC的所提议的后继者。与H.264相比,HEVC旨在提高视频质量,并且使数据压缩比翻倍,并且HEVC旨在可从128×96扩展到7680×4320像素分辨率,大致相当于128kbit/s至800Mbit/s的比特率。
发明内容
本公开解决或减轻了由该处理引起的问题。
本公开提供了一种图像数据编码设备,包括:
熵编码器,被配置为选择性地对表示图像数据的数据项进行编码,以便生成连续输出数据单元的编码的二进制符号;
熵编码器被配置为生成受约束的输出数据流,该约束限定了能由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的二进制符号的数量上限,其中,熵编码器被配置为对不满足约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足约束;该设备包括:
属性检测器,被配置为检测适用于给定输出数据单元的编码属性;以及
选择器,被配置为响应于检测到的编码属性,从两个或更多个候选约束中选择用于给定输出数据单元的约束。
本公开还提供了一种图像数据编码方法,包括:
选择性地对表示图像数据的数据项进行编码,以便生成连续输出数据单元的编码的二进制符号;
生成受约束的输出数据流,该约束限定了能由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的二进制符号的数量上限;
对不满足约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足约束;
检测适用于给定输出数据单元的编码属性;并且
响应于检测到的编码属性,从两个或更多个候选约束中选择用于给定输出数据单元的约束。
本公开还提供了一种合适的解码设备来对由以上限定的方法或设备生成的数据信号进行解码。
在所附权利要求中限定了本公开的另外的相应方面和特征。
应该理解,前述一般描述和以下详细描述两者都是本技术的示例性而非限制性的。
附图说明
当结合附图考虑时,通过参考以下详细描述,将容易获得对本公开及其许多伴随优点的更完整的理解,因为本公开及其许多伴随优点变得更好理解,其中:
图1示意性地示出了使用视频数据压缩和解压缩的音频/视频(A/V)数据发送和接收***;
图2示意性地示出了使用视频数据解压缩的视频显示***;
图3示意性地示出了使用视频数据压缩和解压缩的音频/视频存储***;
图4示意性地示出了使用视频数据压缩的摄像机;
图5和图6示意性地示出了存储介质;
图7提供了视频数据压缩和解压缩设备的示意图;
图8示意性地示出了预测器;
图9示意性地示出了部分编码的图像;
图10示意性地示出了一组可能的帧内预测方向;
图11示意性地示出了一组预测模式;
图12示意性地示出了另一组预测模式;
图13示意性地示出了帧内预测过程;
图14示意性示出了CABAC编码器;
图15和图16示意性地示出了CABAC编码技术;
图17和图18示意性地示出了CABAC解码技术;
图19示意性地示出了分区图像;
图20示意性地示出了设备;
图21示意性地示出了控制器;
图22A和图22B示意性地表示输出数据单元;以及
图23是示出方法的示意流程图。
具体实施方式
现在参考附图,提供图1至图4以给出利用下面将结合本技术的实施例描述的压缩和/或解压缩设备的设备或***的示意图。
下面将要描述的所有数据压缩和/或解压缩设备可以以硬件、以在通用数据处理设备(诸如通用计算机)上运行的软件、作为可编程硬件(诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA))或这些的组合来实现。在实施例由软件和/或固件实现的情况下,应当理解,这种软件和/或固件以及存储或以其他方式提供这种软件和/或固件的非暂时性数据存储介质被认为是本技术的实施例。
图1示意性地示出了使用视频数据压缩和解压缩的音频/视频数据发送和接收***。
输入音频/视频信号10被提供给视频数据压缩设备20,该设备至少压缩音频/视频信号10的视频分量,以便沿着诸如电缆、光纤、无线链路等的传输路径30传输。压缩信号由解压缩设备40处理,以提供输出音频/视频信号50。对于返回路径,压缩设备60压缩用于沿着传输路径30传输到解压缩设备70的音频/视频信号。
压缩设备20和解压缩设备70因此可以形成传输链路的一个节点。解压缩设备40和压缩设备60可以形成传输链路的另一节点。当然,在传输链路是单向的情况下,仅一个节点需要压缩设备,而另一节点仅需要解压缩设备。
图2示意性地示出了使用视频数据解压缩的视频显示***。具体地,压缩的音频/视频信号100由解压缩设备110处理,以提供可以在显示器120上显示的解压缩信号。解压缩设备110可以被实现为显示器120的整体部分,例如,设置在与显示装置相同的壳体内。可替代地,解压缩设备110可以被设置为(例如)所谓的机顶盒(STB),注意,表达“机顶”并不意味着要求该盒位于相对于显示器120的任何特定取向或位置,只是本领域中使用的一个术语,用来表示可作为***装置连接到显示器的装置。
图3示意性地示出了使用视频数据压缩和解压缩的音频/视频存储***。输入音频/视频信号130被提供给压缩设备140,该压缩设备生成用于由存储装置150(诸如磁盘装置、光盘装置、磁带装置、固态存储装置(诸如半导体存储器)或其他存储装置)存储的压缩信号。为了重放,从存储装置150读取压缩数据,并将其传送到解压缩设备160进行解压缩,以提供输出音频/视频信号170。
应当理解,压缩或编码的信号以及存储该信号的存储介质(诸如机器可读非暂时性存储介质)被认为是本技术的实施例。
图4示意性地示出了使用视频数据压缩的摄像机。在图4中,图像捕获装置180(诸如电荷耦合装置(CCD)图像传感器和相关的控制和读出电子设备)生成视频信号,该视频信号被传送到压缩设备190。麦克风(或多个麦克风)200生成要传送到压缩设备190的音频信号。压缩设备190生成要存储和/或发送的压缩的音频/视频信号210(一般显示为示意性阶段220)。
下面将要描述的技术主要涉及视频数据压缩和解压缩。应当理解,许多现有技术可以结合即将描述的视频数据压缩技术用于音频数据压缩,以生成压缩的音频/视频信号。因此,将不提供音频数据压缩的单独讨论。还应当理解,与视频数据相关联的数据速率(尤其是广播质量视频数据)通常比与音频数据(无论是压缩的还是未压缩的)相关联的数据速率高得多。因此,应当理解,未压缩的音频数据可以伴随压缩的视频数据,以形成压缩的音频/视频信号。还应当理解,尽管本示例(图1至图4所示)涉及音频/视频数据,但是下面描述的技术可以在简单处理(也就是说,压缩、解压缩、存储、显示和/或发送)视频数据的***中找到用途。也就是说,实施例可以应用于视频数据压缩,而根本不需要任何相关联的音频数据处理。
因此,图4提供了包括图像传感器和下面将要讨论的类型的编码设备的视频捕获设备的示例。因此,图2提供了下面将要讨论的类型的解码设备和解码图像被输出到的显示器的示例。
图2和图4的组合可以提供包括图像传感器180和编码设备190、解码设备110和解码图像被输出到的显示器120的视频捕获设备。
图5和图6示意性地示出了存储介质,其存储(例如)由设备20、60生成的压缩数据、输入到设备110或存储介质或阶段150、220的压缩数据。图5示意性地示出了诸如磁盘或光盘的盘存储介质,而图6示意性地示出了诸如闪存的固态存储介质。注意,图5和图6还可以提供存储计算机软件的非暂时性机器可读存储介质的示例,当由计算机执行时,该计算机软件使计算机执行下面将要讨论的一种或多种方法。
因此,上述设置提供了体现本技术中任何一种的视频存储、捕获、发送或接收设备的示例。
图7提供了视频数据压缩和解压缩设备的示意图。
控制器343控制设备的整体操作,并且尤其是当涉及压缩模式时,通过充当选择器来控制尝试编码过程,以选择各种操作模式,诸如块大小和形状,以及视频数据是否要被无损编码或以其他方式编码。控制器被认为是图像编码器或图像解码器的一部分(视情况而定)。输入视频信号300的连续图像被提供给加法器310和图像预测器320。下面将参考图8更详细地描述图像预测器320。图像编码器或解码器(视情况而定)加上图8的帧内图像预测器可以使用来自图7的设备的特征。然而,这并不意味着图像编码器或解码器一定需要图7的每个特征。
加法器310实际上执行减法(负加法)操作,因为在“+”输入端接收输入视频信号300,在“-”输入端接收图像预测器320的输出,从而从输入图像中减去预测图像。结果是生成所谓的残余图像信号330,表示实际图像与投影图像之间的差异。
生成残余图像信号的一个原因如下。要描述的数据编码技术(也就是说,将被应用于残余图像信号的技术)在要编码的图像中存在较少“能量”时倾向于更有效地工作。在此处,术语“有效地”是指生成少量编码数据;对于特定的图像质量水平,期望(并且被认为是“有效的”)生成尽可能少的数据。在残余图像中提及的“能量”涉及残余图像中包含的信息量。如果预测图像与真实图像相同,则两者之间的差异(也就是说,残余图像)将包含零信息(零能量),并且将非常容易编码成少量的编码数据。一般来说,如果可以使预测过程工作得相当好,使得预测的图像内容类似于要编码的图像内容,则期望残余图像数据将比输入图像包含更少的信息(更少的能量),并且因此将更容易编码成少量的编码数据。
现在将描述充当编码器(对残余或差异图像进行编码)的设备的剩余部分。残余图像数据330被提供给变换单元或电路340,该变换单元或电路生成残余图像数据的块或区域的离散余弦变换(DCT)表示。DCT技术本身是公知的,并且此处不再详细描述。还要注意,DCT的使用仅是一个示例性设置的说明。可以使用的其他变换包括例如离散正弦变换(DST)。变换也可以包括单独变换的序列或级联,诸如一个变换之后(无论是否直接)是另一变换的设置。变换的选择可以明确地确定和/或取决于用于配置编码器和解码器的附带信息(sideinformation)。
变换单元340的输出(也就是说,图像数据的每个变换块的一组DCT系数)被提供给量化器350。在视频数据压缩领域中已知各种量化技术,从简单的乘以量化比例因子到在量化参数的控制下应用复杂的查找表。总体目标是双重的。首先,量化过程减少了变换数据的可能值的数量。其次,量化过程可以增加变换数据的值为零的可能性。这两者都可以使下面将要描述的熵编码过程更有效地生成少量压缩视频数据。
扫描单元360应用数据扫描过程。扫描过程的目的是对量化的变换数据重新排序,以便将尽可能多的非零量化的变换系数聚集在一起,并且当然也因此将尽可能多的零值系数聚集在一起。这些特征可以允许有效地应用所谓的游程编码或类似技术。因此,扫描过程包括根据“扫描顺序”从量化的变换数据中选择系数,并且尤其是从对应于已经被变换和量化的图像数据块的系数块中选择系数,使得(a)所有系数作为扫描的一部分被选择一次,以及(b)扫描倾向于提供期望的重新排序。倾向于给出有用结果的一个示例扫描顺序是所谓的右上对角线扫描顺序。
扫描的系数然后被传递到熵编码器(EE)370。同样,可以使用各种类型的熵编码。两个示例是所谓的上下文自适应二进制算术编码(CABAC)***的变体和所谓的上下文自适应可变长度编码(CAVLC)***的变体。总的来说,CABAC被认为提供了更好的效率,并且在一些研究中,与CAVLC相比,对于可比较的图像质量,CABAC被证明提供了10%至20%的编码输出数据量的减少。然而,CAVLC被认为表示比CABAC更低的复杂性(就其实现而言)。注意,扫描过程和熵编码过程被示出为单独的过程,但是实际上可以组合或一起处理。也就是说,可以按照扫描顺序将数据读入熵编码器。相应的考虑适用于下面将要描述的相应逆过程。
熵编码器370的输出连同额外数据(上面提到和/或下面讨论的)例如定义预测器320生成预测图像的方式,提供压缩的输出视频信号380。
然而,还提供了返回路径,因为预测器320本身的操作取决于压缩的输出数据的解压缩版本。
该特征的原因如下。在解压缩过程的适当阶段(将在下面描述),生成残余数据的解压缩版本。该解压缩的残余数据必须被添加到预测图像,以生成输出图像(因为原始残余数据是输入图像与预测图像之间的差异)。为了使该过程具有可比性,在压缩侧与解压缩侧之间,由预测器320生成的预测图像在压缩过程期间和解压缩过程期间应该是相同的。当然,在解压缩时,设备不能访问原始输入图像,而仅能访问解压缩的图像。因此,在压缩时,预测器320将其预测(至少对于帧间图像编码)基于压缩图像的解压缩版本。
由熵编码器370执行的熵编码过程被认为(在至少一些示例中)是“无损的”,也就是说,可以被反转以获得与首先被提供给熵编码器370的数据完全相同的数据。因此,在这样的示例中,返回路径可以在熵编码阶段之前实现。实际上,由扫描单元360执行的扫描过程也被认为是无损的,但是在本实施例中,返回路径390是从量化器350的输出到互补逆量化器420的输入。在由阶段引入损耗或潜在损耗的情况下,该阶段可以包括在由返回路径形成的反馈回路中。例如,熵编码阶段至少原则上可以是有损的,例如,通过在奇偶信息中编码比特的技术。在这种情况下,熵编码和解码应该构成反馈回路的一部分。
一般而言,熵解码器410、反向扫描单元400、逆量化器420和逆变换单元或电路430提供熵编码器370、扫描单元360、量化器350和变换单元340的相应逆功能。目前,讨论将通过压缩过程继续进行;将在下面单独讨论解压缩输入压缩视频信号的过程。
在压缩过程中,扫描的系数通过返回路径390从量化器350传递到逆量化器420,逆量化器执行扫描单元360的逆操作。由单元420、430执行逆量化和逆变换过程,以生成压缩-解压缩的残余图像信号440。
图像信号440在加法器450处被添加到预测器320的输出,以生成重构的输出图像460。如下所述,这形成了对图像预测器320的一个输入。
现在转到应用于解压缩接收的压缩视频信号470的过程,该信号被提供给熵解码器410,并在被加法器450添加到图像预测器320的输出之前从此处被提供给反向扫描单元400、逆量化器420和逆变换单元430的链。因此,在解码器侧,解码器重构残余图像的版本,并且然后(通过加法器450)将其应用于图像的预测版本(在逐块的基础上),以便解码每个块。简单地说,加法器450的输出460形成输出解压缩视频信号480。在实践中,在输出信号之前,可以可选地应用进一步的滤波(例如,通过图8中所示的滤波器560,但是为了图7的高级图的清楚起见,从图7中省略了该滤波器)。
图7和图8的设备可以充当压缩(编码)设备或解压缩(解码)设备。两种类型的设备的功能基本重叠。扫描单元360和熵编码器370不用于解压缩模式,并且预测器320(将在下面详细描述)和其他单元的操作遵循包含在接收的压缩比特流中的模式和参数信息,而不是自己生成这样的信息。
图8示意性地示出了预测图像的生成,并且尤其是图像预测器320的操作。
由图像预测器320执行的预测有两种基本模式:所谓的帧内图像预测和所谓的帧间图像或运动补偿(MC)预测。在编码器侧,每个包括检测关于要预测的当前块的预测方向,并根据其他样本(在相同(帧内)或另一(帧间)图像中)生成预测的样本块。借助于单元310或450,预测块与实际块之间的差异被编码或应用,以便分别对该块进行编码或解码。
(在解码器处,或者在编码器的反向解码侧,预测方向的检测可以响应于由编码器与编码数据相关联的数据,指示在编码器处使用哪个方向。或者检测可以响应于与在编码器做出决定的因素相同的因素)。
帧内图像预测基于来自同一图片内的数据来预测图像的块或区域的内容。这对应于其他视频压缩技术中所谓的I帧编码。然而,与包括通过帧内编码对整个图像进行编码的I帧编码相反,在本实施例中,可以在逐块的基础上进行帧内编码与帧间编码之间的选择,尽管在其他实施例中,该选择仍然是在逐图像的基础上进行的。
运动补偿预测是帧间图像预测的示例,并且利用运动信息,试图在另一相邻或附近的图像中定义要在当前图像中编码的图像细节的来源。因此,在理想的示例中,预测图像中的图像数据块的内容可以被非常简单地编码为指向相邻图像中相同或稍微不同位置的对应块的参考(运动矢量)。
被称为“块复制”预测的技术在某些方面是两者的混合,因为使用矢量来指示在同一图像内从当前预测的块移位的位置处的样本块,该样本块应该被复制,以形成当前预测的块。
回到图8,示出了两种图像预测设置(对应于帧内图像预测和帧间图像预测),由多路复用器500在模式信号510(例如,来自控制器343)的控制下选择其结果,以便提供预测图像的块,以提供给加法器310和450。根据哪个选择给出最低的“能量”来做出选择(如上所述,该“能量”可以被认为是需要编码的信息内容),并且该选择在编码的输出数据流内被通知给解码器。在这种情况下,可以检测图像能量,例如,通过对来自输入图像的预测图像的两个版本的区域进行尝试减法,对差分图像的每个像素值进行平方,对平方值求和,并识别两个版本中的哪一个产生与该图像区域相关的差分图像的较低均方值。在其他示例中,可以对每个选择或潜在选择执行尝试编码,然后根据每个潜在选择的成本,根据图片编码和失真所需的比特的数量中的一个或两个进行选择。
在帧内编码***中,基于作为信号460的一部分接收的图像块进行实际预测,也就是说,预测是基于编码解码的图像块,以便可以在解压缩设备中进行完全相同的预测。然而,可以通过帧内模式选择器520从输入视频信号300中导出数据,以控制帧内图像预测器530的操作。
对于帧间图像预测,运动补偿(MC)预测器540使用运动信息,诸如由运动估计器550从输入视频信号300导出的运动矢量。运动补偿预测器540将这些运动矢量应用于重构图像460的处理版本,以生成帧间图像预测的块。
因此,单元530和540(与估计器550一起操作)各自充当检测器,以检测关于要预测的当前块的预测方向,并且充当生成器,以根据由预测方向定义的其他样本生成样本的预测块(形成传递到单元310和450的预测的一部分)。
现在将描述应用于信号460的处理。首先,信号可选地由滤波器单元560滤波,这将在下面更详细地描述。这包括应用“去块”滤波器来消除或至少倾向于减少由变换单元340执行的基于块的处理和后续操作的影响。也可以使用样本自适应偏移(SAO)滤波器。此外,可选地,使用通过处理重构信号460和输入视频信号300获得的系数来应用自适应环路滤波器。自适应环路滤波器是一种使用已知技术将自适应滤波器系数应用于要滤波的数据的滤波器。也就是说,滤波器系数可以根据各种因素而变化。包括定义使用哪个滤波器系数的数据,作为编码输出数据流的一部分。
当设备作为解压缩设备运行时,来自滤波器单元560的滤波输出实际上形成输出视频信号480。还在一个或多个图像或帧存储器570中缓冲;连续图像的存储是运动补偿预测处理的要求,并且尤其是运动矢量的生成。为了保存存储需求,图像存储器570中存储的图像可以以压缩形式保存,并且然后解压缩,以用于生成运动矢量。为此,可以使用任何已知的压缩/解压缩***。存储的图像被传递到插值滤波器580,该插值滤波器生成存储图像的更高分辨率版本;在该示例中,生成中间样本(子样本),使得插值滤波器580输出的插值图像的分辨率是存储在图像存储器570中的亮度通道为4:2:0的图像的分辨率的4倍(在每个维度上)以及存储在图像存储器570中的色度通道为4:2:0的图像的分辨率的8倍(在每个维度上)。插值图像作为输入被传递到运动估计器550,并且也被传递到运动补偿预测器540。
现在将描述对图像进行分割以进行压缩处理的方式。基本上,要压缩的图像被认为是样本块或区域的阵列。可以通过决策树将图像分割成这样的块或区域,诸如在Bross等人的“高效视频编码(HEVC)文本规范草案6”,JCTVC-h1003_d0(2011年11月)(HighEfficiency Video Coding(HEVC)text specification draft6”,JCTVC-H1003_d0(November 2011))中描述的决策树,其内容通过引用结合于此。在一些示例中,所得到的块或区域具有大小,并且在一些情况下具有形状,这些形状借助于决策树通常可以遵循图像内的图像特征的设置。这本身可以允许提高编码效率,因为表示或跟随相似图像特征的样本将倾向于通过这种设置被分组在一起。在一些示例中,不同大小的正方形块或区域(诸如,高达64×64或更大块的4×4样本)可供选择。在其他示例设置中,可以使用不同形状的块或区域,诸如矩形块(例如,垂直或水平定向的)。可以设想其他非正方形和非矩形块。将图像划分成这样的块或区域的结果是(至少在本示例中)图像的每个样本被分配给一个并且仅一个这样的块或区域。
现在将讨论帧内预测过程。一般而言,帧内预测包括从同一图像中先前编码和解码的样本生成当前样本块的预测。
图9示意性地示出了部分编码的图像800。在此处,图像在逐块的基础上从左上方到右下方被编码。在处理整个图像的中途编码的示例块被示为块810。块810上方和左侧的阴影区域820已经被编码。块810的内容的帧内图像预测可以利用任何阴影区域820,但是不能利用其下方的未阴影区域。
在一些示例中,图像在逐块的基础上被编码,使得较大的块(称为编码单元或CU)以诸如参考图9讨论的顺序被编码。在每个CU内,CU有可能被作为一组两个或更多更小的块或变换单元(TU)来处理(取决于已经发生的块分割过程)。这可以给出编码的分级顺序,使得图像在逐CU的基础上被编码,并且每个CU潜在地在逐TU的基础上被编码。然而,注意,对于当前编码树单元(块划分的树结构中的最大节点)内的单个TU,上面讨论的编码的分级顺序(逐CU,然后逐TU)意味着在当前CU中可能存在先前编码的样本,并且可用于该TU的编码,例如,该TU的右上或左下。
块810表示CU;如上所述,出于帧内图像预测处理的目的,这可以被细分为一组更小的单元。在CU 810内示出了当前TU 830的示例。更一般地,图片被分割成样本区域或样本组,以允许信令信息和变换数据的有效编码。信息的信令可能需要与变换的树结构不同的子划分的树结构,并且实际上是预测信息或预测本身的树结构。为此,编码单元可以具有与变换块或区域、预测块或区域以及预测信息不同的树结构。在诸如HEVC的一些示例中,该结构可以是所谓的编码单元的四叉树,其叶节点包含一个或多个预测单元和一个或多个变换单元;变换单元可以包含对应于图片的亮度和色度表示的多个变换块,并且预测可以被认为适用于变换块级别。在示例中,应用于特定样本组的参数可以被认为主要是在块级别定义的,这可能与变换结构的粒度不同。
帧内图像预测考虑了在考虑当前TU之前编码的样本,诸如当前TU上方和/或左侧的样本。预测所需样本的源样本可以位于相对于当前TU的不同位置或方向。为了决定哪个方向适合于当前预测单元,示例编码器的模式选择器520可以测试每个候选方向的可用TU结构的所有组合,并且选择具有最佳压缩效率的预测方向和TU结构。
图片也可以在“切片”的基础上编码。在一个示例中,切片是水平相邻的一组CU。但是更一般地,整个残余图像可以形成一个切片,或者一个切片可以是单个CU,或者一个切片可以是一行CU等。由于切片被编码为独立的单元,因此切片可以提供一定的容错能力。编码器和解码器状态在切片边界完全复位。例如,不跨切片边界执行帧内预测;为此,切片边界被视为图像边界。
图10示意性地示出了一组可能的(候选)预测方向。预测单元可获得整组候选方向。方向由相对于当前块位置的水平和垂直位移决定,但被编码为预测“模式”,一组模式如图11所示。注意,所谓的DC模式表示周围左上样本的简单算术平均值。还要注意,图10所示的一组方向只是一个示例;在其他示例中,图12中示意性示出的一组(例如)65个角度模式加上DC和平面(整组67个模式)构成了整组。可以使用其他数量的模式。
一般而言,在检测到预测方向之后,***可操作来根据由预测方向定义的其他样本生成预测样本块。在示例中,图像编码器被配置为对识别为图像的每个样本或区域选择的预测方向的数据进行编码(并且图像解码器被配置为检测这样的数据)。
图13示意性地示出了帧内预测过程,其中,样本的块或区域910的样本900根据由与该样本相关联的帧内预测模式定义的方向930从同一图像的其他参考样本920导出。该示例中的参考样本920来自所讨论的块910上方和左侧的块,并且通过沿着方向930跟踪参考样本920而获得样本900的预测值。方向930可能指向单个单独的参考样本,但是在更一般的情况下,周围参考样本之间的插值用作预测值。注意,块910可以是如图13所示的正方形,或者可以是诸如矩形的其他形状。
图14和图15示意性地示出了先前提出的参考样本投影过程。
在图14和图15中,要预测的样本的块或区域1400被参考样本的线性阵列包围,从该线性阵列中进行预测样本的帧内预测。参考样本1410在图14和图15中被示出为阴影块,并且要预测的样本被示出为无阴影块。注意,在该示例中使用了要预测的8×8样本块或区域,但是该技术适用于可变块大小和实际块形状。
如上所述,参考样本包括相对于要预测的样本的当前图像区域在相应取向上的至少两个线性阵列。例如,线性阵列可以是要预测的样本块上方的样本阵列或行1420以及要预测的样本块左侧的样本阵列或列1430。
如上面参考图13所讨论的,参考样本阵列可以延伸到要预测的块的范围之外,以便在图10至图12所示的范围内提供预测模式或方向。必要时,如果先前解码的样本不能用作特定参考样本位置的参考样本,则其他参考样本可以在这些缺失的位置重新使用。参考样本滤波过程可用于参考样本。
图14示意性示出了CABAC熵编码器的操作。
CABAC编码器对二进制数据(也就是说,仅由两个符号0和1表示的数据)进行操作。编码器利用所谓的上下文建模过程,该过程基于先前编码的数据为后续数据选择“上下文”或概率模型。以确定性的方式执行上下文的选择,使得可以在解码器处基于先前解码的数据执行相同的确定,而不需要将进一步的数据(指定上下文)添加到传递给解码器的编码数据流中。
参考图14,如果要编码的输入数据还不是二进制形式,则可以将其传递给二进制转换器1400;如果数据已经是二进制形式,则转换器1400被旁路(通过示意性开关1410)。在本实施例中,实际上通过将量化的DCT系数数据表示为一系列二进制“映射”来实现到二进制形式的转换,这将在下面进一步描述。
然后,二进制数据可以由两个处理路径(“常规”路径和“旁路”路径(这两个路径被示意性地示出为单独的路径,但是在下面讨论的本发明的实施例中,实际上可以由相同的处理阶段来实现,只是使用稍微不同的参数))中的一个来处理。旁路路径采用所谓的旁路编码器1420,该编码器不一定以与常规路径相同的形式使用上下文建模。在CABAC编码的一些示例中,如果需要对一批数据进行特别快速的处理,则可以选择该旁路路径,但是在本实施例中,注意到了所谓的“旁路”数据的两个特征:首先,旁路数据由CABAC编码器(950、1460)处理,仅使用表示50%概率的固定上下文模型;其次,旁路数据涉及某些类别的数据,一个特定示例是系数符号数据。否则,常规路径由在控制电路1435的控制下操作的示意性开关1430、1440选择。这包括由上下文建模器1450处理的数据,随后是编码引擎1460。
如果块完全由零值数据形成,则图14所示的熵编码器将该数据块(即,例如,对应于与残余图像块相关的系数块的数据)编码为单个值。对于不属于这一类别的每个块,也就是说,至少包含一些非零数据的块,准备“重要性映射”。重要性映射指示对于要编码的数据块中的每个位置,该块中的对应系数是否为非零。二进制形式的重要性映射数据本身是CABAC编码的。重要性映射的使用有助于压缩,因为对于重要性映射指示为0的幅度的系数,不需要编码任何数据。此外,重要性映射可以包括特殊代码来指示块中的最终非零系数,使得可以从编码中省略所有最终高频/尾随零系数。在编码比特流中,重要性映射之后是定义由重要性映射指定的非零系数值的数据。
还准备并编码了更多级别的映射数据。一个示例是将重要性映射已经指示为“非零”的映射位置处的系数数据是否实际上具有值“1”定义为二进制值(1=是,0=否)的映射。另一映射指定重要性映射已经指示为“非零”的映射位置处的系数数据是否实际上具有值“2”。另一映射指示,对于重要性映射已经指示系数数据为“非零”的那些映射位置,数据是否具有“大于2”的值。对于标识为“非零”的数据,另一映射指示数据值的符号(使用预定的二进制表示法,诸如1表示+,0表示-,当然反之亦然)。
在本发明的实施例中,重要性映射和其他映射以预定的方式被分配给CABAC编码器或旁路编码器,并且都表示相同初始数据项的不同相应属性或值范围。在一个示例中,至少重要性映射是CABAC编码的,并且至少一些剩余映射(诸如符号数据)是旁路编码的。因此,每个数据项被分成相应的数据子集,并且相应的子集由第一编码***(例如,CABAC)和第二(例如,旁路)编码***编码。数据的以及CABAC和旁路编码的性质使得对于预定数量的CABAC编码数据,对于相同的初始数据项生成可变数量的零个或多个旁路数据。因此,例如,如果量化的、重新排序的DCT数据包含基本上所有的零值,则可能没有生成旁路数据或生成非常少量的旁路数据,因为旁路数据仅涉及重要性映射已经指示值为非零的那些映射位置。在另一示例中,在具有许多高值系数的量化的重新排序的DCT数据中,可能生成大量的旁路数据。
在本发明的实施例中,重要性映射和其他映射例如由扫描单元360从量化的DCT系数生成,并且在经受CABAC编码之前经受锯齿形扫描处理(或者根据帧内预测模式从锯齿形、水平光栅和垂直光栅扫描中选择的扫描处理)。
一般来说,CABAC编码包括基于其他先前编码的数据来预测要编码的下一位的上下文或概率模型。如果下一位与被概率模型识别为“最有可能”的位相同,则“下一位与概率模型一致”的信息的编码可以非常高效地被编码。“下一位与概率模型不一致”的编码效率较低,因此上下文数据的推导对于编码器的良好运行很重要。术语“自适应”是指在编码期间调整或改变上下文或概率模型,试图提供与(尚未编码的)下一个数据的良好匹配。
使用一个简单的类比,在书面英语中,字母“U”相对不常见。但在紧接字母“Q”之后的字母位置,确实很常见。因此,概率模型可能会将“U”的概率设置为非常低的值,但是如果当前字母是“Q”,则“U”作为下一个字母的概率模型可能会设置为非常高的概率值。
在本设置中,CABAC编码至少用于重要性映射和指示非零值是1还是2的映射。在这些实施例中,旁路处理与CABAC编码相同,但是事实上,概率模型固定在1s和0s的相等(0.5:0.5)概率分布,旁路处理至少用于指示值是否>2的符号数据和映射。对于那些被识别为>2的数据位置,可以使用单独的所谓转义数据编码来对数据的实际值进行编码。这可能包括Golomb-Rice编码技术。
在WD4中更详细地描述了CABAC上下文建模和编码过程:高效视频编码的工作草案4,JCTVC-F803_d5,ISO/I EC 23008-HEVC草案;201x(E)2011-10-28(Working Draft 4ofHigh-Efficiency Video Coding,JCTVC-F803_d5,Draft ISO/IEC 23008-HEVC;201x(E)2011-10-28)。
现在参考图15和图16,形成视频编码设备的一部分的熵编码器包括第一编码***(例如,算术编码编码***,诸如CABAC编码器1500)和第二编码***(诸如旁路编码器1510),其被设置成使得特定的数据字或值被CABAC编码器或旁路编码器而不是CABAC编码器和旁路编码器两者编码成最终输出数据流。在本发明的实施例中,传递到CABAC编码器和旁路编码器的数据值是从初始输入数据(在这个示例中是重新排序的量化的DCT数据)分离或导出的有序数据值的相应子集,表示从输入数据生成的“映射”集合中的不同映射。
图15中的示意图将CABAC编码器和旁路编码器视为独立的设置。这在实践中可能是很好的情况,但是在另一种可能性中,如图16示意性所示,单个CABAC编码器1620用作图15的CABAC编码器1500和旁路编码器1510两者。编码器1620在编码模式选择信号1630的控制下操作,以便当处于CABAC编码器1500的模式时以自适应上下文模型(如上所述)操作,并且当处于旁路编码器1510的模式时以固定50%概率上下文模型操作。
第三种可能性将这两者结合起来,因为两个基本相同的CABAC编码器可以并行操作(类似于图15的并行设置),不同之处在于,作为旁路编码器1510操作的CABAC编码器将其上下文模型固定在50%概率上下文模型。
CABAC编码过程和旁路编码过程的输出可以(至少暂时地)存储在相应缓冲器1540、1550中。在图16的情况下,开关或多路分解器1660在模式信号1630的控制下动作,将CABAC编码数据路由到缓冲器1550,并将编码数据旁路到缓冲器1540。
图17和图18示意性地示出了形成视频解码设备的一部分的熵解码器的示例。参考图17,相应的缓冲器1710、1700将数据传递给CABAC解码器1730和旁路解码器1720,它们被设置成使得特定的编码数据字或值被CABAC解码器或旁路解码器而不是CABAC编码器和旁路编码器两者解码。逻辑1740将解码的数据重新排序为后续解码阶段的适当顺序。
图17中的示意图将CABAC解码器和旁路解码器视为独立的设置。这在实践中可能是很好的情况,但是在另一种可能性中,如图18示意性所示,单个CABAC解码器1850用作图17的CABAC解码器1730和旁路解码器1720两者。解码器1850在解码模式选择信号1860的控制下操作,以便当处于CABAC解码器1730的模式时以自适应上下文模型(如上所述)操作,并且当处于旁路编码器1720的模式时,以固定50%概率上下文模型操作。
如前所述,第三种可能性将这两者结合起来,因为两个基本相同的CABAC解码器可以并行操作(类似于图17的并行设置),不同之处在于,作为旁路解码器1720操作的CABAC解码器将其上下文模型固定在50%概率上下文模型。
在图18的情况下,开关或多路复用器1870在模式信号1860的控制下动作,以将CABAC编码数据从缓冲器1700或缓冲器1710适当地路由到解码器1850。
图19示意性地示出了图片1900,并且将用于演示与以下讨论相关的各种图片划分方案。
图片划分的一个示例是切片或“规则切片”。每个常规切片都封装在自己的网络抽象层(NAL)单元中。不允许图片内的预测(例如,样本内预测、运动信息预测、编码模式预测)和跨切片边界的熵编码依赖性。这意味着一个规则切片可以独立于同一图片中的其他规则切片进行重构。
所谓的图块(tile)定义了水平和垂直边界,以将图片划分为图块的行和列。以与常规切片相对应的方式,不允许图片内预测相关性跨越图块边界,也不允许熵解码依赖性。然而,图块并不限于包含在单独NAL单元中。
一般而言,一个切片中可能有多个图块,或者一个图块中可能有多个切片,并且一个图片中可能有一个或多个切片或图块。图19的示意性示例示出了4个切片1910、1920、1930、1940,其中,切片1940包括2个图块1950、1960。然而,如上所述,这只是任意的示意性示例。
在一些示例设置中,根据以下等式,存在可以在切片或图片中编码的二进制数(bins)(EP或CABAC)的数量的阈值:
BinCountsinNalUnits<=(4/3)*NumBitsInVclNalUnits+(RawMinCuBits*PicSizelnMinCbsY)/32 (等式1)
等式的右侧取决于两个部分的总和:这些部分是用于特定图像区域并且与切片或图片的大小相关的常数值(RawMinCuBits*PicSizelnMinCbsY);以及作为在切片或图片的输出流中编码的比特数的动态值(NumBitsInVclNalUnits)。注意,值4/3表示每比特的二进制数的数量。
RawMinCuBits是最小尺寸的原始CU中的比特的数量-通常为4*4;而PicSizelnMinCbsY是切片或图片中最小尺寸CU的数量。
如果超过该阈值,则CABAC零字(值为00 00 03的3个字节)将被附加到流中,直到达到阈值。每个这样的零字将动态值增加3。
该约束可以表示为:
N<=K1*B+(K2*CU)
其中:
N=输出数据单元中二进制符号的数量;
K1是常数;
B=输出数据单元的编码字节的数量;
K2是取决于由图像数据编码设备采用的最小尺寸编码单元的属性的变量;以及
CU=由输出数据单元表示的图片、切片或图块的大小,表示为最小尺寸的编码单元的数量。
在先前提出的示例中,在图片和切片级别执行该阈值检查。
作为替代,可以使用相同阈值的以下表达式,其中,不同之处在于对字节而不是比特的引用:
BinCountsinNalUnits<=(32/3)*NumByteslnVclNalUnits+(RawMinCuBits*PicSizelnMinCbsY)/32 (等式2)
等式1中的阈值(或等式2中等效表示的阈值)可以被均匀地应用,也就是说,与其他编码或解码参数、属性等无关。
使用这种阈值的技术论证的一个示例可以是阈值本身间接定义了实时解码器所需的最大处理性能水平。实时解码依赖于及时对每一帧进行解码,以达到特定的输出帧速率(例如,每秒若干帧)。对实时解码器的处理性能的约束又取决于需要解码的二进制数的速率,而不是所得到的解码数据量。为了允许在编码器侧进行相对直接的速率控制,用于控制这种情况的技术是限制(例如,上限或阈值或约束)每个切片或图片的二进制数的数量。CABAC解码器所需的最大处理性能可以被认为是该限制和切片或图片必须解码的速率的乘积或函数。
因此,设定适当的阈值(或上限或约束)很重要。太高的阈值可能导致实现或成功操作实时解码器的问题。类似地,使用不正确或不适当的阈值可能导致填充数据的过度使用(例如,伪数据或其他数据仅旨在占据编码数据流的部分,例如,增加编码输出数据单元的大小),从而降低编码效率。
如参考图19所指出的,图片或切片可以被分割成多个图块。为什么会这样做的一个示例是允许使用多个并发(并行)解码器。
在先前提出的设置下,每个图块不一定满足上面讨论的阈值计算。例如,如果像图片一样独立地使用或解码图块,或者如果不同的图块(例如,具有不同的量化参数或来自不同的源)被合成在一起,则这可能会导致问题,不能保证所得的合成的切片或图片符合上述规范。
为了解决这个问题,在示例实施例中,CABAC阈值被应用于每个图块的末端,而不是单独应用于每个切片或图片的末端。因此,阈值的应用发生在对图块、切片和图片中的任何一个进行编码的结束时。话虽如此,如果图像中的每个图块都符合阈值,则可以假设整个图片也必须符合阈值,从而在将图片划分成切片或图块的情况下,因此没有必要在对图片进行编码的结束时再次应用阈值。
术语“图块”和“切片”是指可独立解码的单元,并且表示在本申请的优先权日使用的名称。在随后或其他名称变更的情况下,该设置适用于其他这样的可独立解码的单元。
因此,在示例设置中,数据单元可以是可独立解码的数据单元。例如,图像部分(由输出数据单元表示)可以是图片、切片和图块中的一个。
为了应用上面讨论的等式,动态值表示在图块的输出流中编码的字节的数量,而固定值取决于图块中最小尺寸编码单元(CU)的数量。
图20示意性地示出了被配置为执行该测试的设备。参考图20,在输入端2000,从编码器接收CABAC/EP编码流。填充数据检测器2010在参考切片或图块完成的预定阶段,诸如在对切片或图块进行编码结束时,检测是否符合上述阈值计算。控制器2020响应于检测器2010的检测来控制填充数据生成器2030,以生成填充数据2040,诸如上述CABAC零字,并通过组合器2050将其附加到流中,以形成输出流2060。零字的生成也可以被信令回检测器2010,使得当附加零字时,填充数据检测器2010可以继续监视是否符合阈值,并且一旦符合阈值,就使控制器2020停止零字的生成。
在其他示例中,控制器2020还可以充当预测器,该预测器被配置为在输出数据单元的生成期间,结合此处将要描述的实施例,生成该输出数据单元是否将满足约束的预测。
例如,预定阶段可以是每n个编码的二进制数(其中,n是1或更大的整数),但是在示例设置中,预定阶段是对当前输出数据单元进行编码的结束。
因此,在图20中,公开了填充数据检测器2010和填充数据生成器2030的示例,填充数据检测器2010被配置为在相对于当前输出数据单元的编码的预定阶段检测当前输出数据单元是否满足约束,填充数据生成器2030被配置为生成足够的填充数据并将其***到当前输出数据单元中,使得包括所***的填充数据的输出数据单元满足约束。
参考图21,在一些示例中,控制器2020包括:属性检测器2070,被配置为检测适用于给定输出数据单元的编码属性;以及
选择器2080,被配置为响应于检测到的编码属性,从两个或更多个候选约束2082中选择用于给定输出数据单元的约束。
控制器2020还可以包括比较器2090,用于将从当前选择的约束导出的阈值与填充数据检测器2010的检测进行比较,以便导出控制信号来控制填充数据生成器2030的操作。
由检测器2070检测到的属性可以是例如编码属性(诸如编码模式或配置文件,例如,启用相关量化(将在下面讨论)),这是一种操作模式,在该操作模式中,用于量化当前数据值的量化参数的选择至少部分地取决于先前编码的数据值的属性,并且随后由包括在编码数据流中或与编码数据流相关联的标志数据(示意性地示为2072)来表示,使得稍后可以在解码器处检测到。例如,标志数据可以包括在报头数据(诸如输出数据单元报头数据(例如,切片报头数据))中。检测器2070本身不需要生成或***标志数据;为了受益于本说明书,仅出于示意性目的在图21中示出了该过程的这一方面。该属性可以被认为适用于给定输出数据单元,即使(如在一些示例中)该属性也适用于其他(例如,前述或后续)输出数据单元。
因此,根据关于图19和图20讨论的技术(以及下面讨论的技术)操作的图7和图14的设备提供了图像数据编码设备的示例,该图像数据编码设备包括:
第一数据编码器1450、1460和第二数据编码器1420,每个编码器被配置为从表示图像数据的连续符号中生成表示二进制符号的输出数据比特;
第一数据编码器被配置为以数据比特数与编码符号数的可变比率生成表示编码符号的输出数据比特;
第二数据编码器被配置为生成固定数量的输出数据比特,以表示每个编码符号;
熵编码器被配置为(例如,使用控制器2020和/或控制器1435)生成受约束的输出数据流,该约束限定了可由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的二进制化符号的数量上限,其中,熵编码器被配置为对不满足约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足约束;该设备包括:
属性检测器2070,被配置为检测适用于给定输出数据单元的编码属性;以及
选择器2080,被配置为响应于检测到的编码属性,从两个或更多个候选约束中选择用于给定输出数据单元的约束。
使用图14所示的技术,第一数据编码器/解码器可以是上下文自适应二进制算术编码(CABAC)编码器/解码器。第二数据编码器/解码器可以是旁路编码器/解码器。第二数据编码器/解码器可以是使用固定50%概率上下文模型的二进制算术编码器/解码器。
阈值或约束的应用示例如下。
一般来说,测试是“所生成的输出数据量是否满足阈值测试?”这可以例如在对输出数据单元进行编码的结束时执行。
根据此处讨论的技术操作的图7的设备提供了图像数据编码设备的示例,该图像数据编码设备包括:
熵编码器,被配置为选择性地对表示图像数据的数据项进行编码,以便生成连续输出数据单元的编码的二进制符号;
熵编码器被配置为生成受约束的输出数据流,该约束限定了可由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的二进制符号的数量上限,其中,熵编码器被配置为对不满足约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足约束;该设备包括:
属性检测器,被配置为检测适用于给定输出数据单元的编码属性;以及
选择器,被配置为响应于检测到的编码属性,从两个或更多个候选约束中选择用于给定输出数据单元的约束。
本公开还提供了合适的解码设备来对由此处描述的方法或设备生成的数据信号进行解码。
现在将描述约束的进一步示例。
在上面讨论的示例中,一致地使用单个阈值推导或表达式。在下面将要描述的替代示例中,在两个或更多个候选阈值或约束之间实现挑选。该挑选或选择可以响应于一个或多个编码属性(例如,参数、属性或模式,例如,由从编码器侧到解码器侧的标志等信令的参数或模式,或者可以在编码器侧和解码器侧以对应或匹配的方式导出的参数、属性或模式)。
阈值或约束的另一候选表达式的示例如下:
BinCountsinNalUnits<=10*NumByteslnVclNalUnits+(RawMinCuBits*PicSizelnMinCbsY)/16 (等式3)
因此,虽然如前所述,可以均匀地使用该等式3,但是在示例实施例中,在两个或更多个候选表达式之间实现选择,例如,在等式1/等式2(作为同一事物的等价表达式)与等式3之间。
在一些示例中,可以根据在编码数据流中或与编码数据流一起信令的给定编码属性是处于第一状态还是第二状态来进行选择,给定属性的相应状态对应于在编码器侧和解码器侧对相应候选表达式(例如,等式1/等式2或等式3)的选择。
这种属性的一个示例是所谓的“dep_quant_enabled_flag”。这在切片报头中指示对于该切片报头所应用的切片,是否启用了被称为相关量化的技术。
dep_quant_enabled_flag的替代方法实际上是依赖于(dep_quant)工具的可用性,而不是该工具是否已启用。因此,对于一个示例配置文件,该配置文件可能自己定义(例如)“dep_quant_enabled_flag必须关闭(未启用)”;在另一种情况下,可能没有这样的约束,从而允许dep_quant工具打开(启用)或关闭(未启用)。因此,可以在配置文件约束条件下进行选择,而不是在dep_quant工具当前是启用还是禁用的情况下进行选择。
在2019年7月Bross等人的JVET-N1001-v10的“通用视频编码(草案5)”(“Versatile Video Coding(Draft 5),Bross et al,JVET-N1001-v10,July2019)(其通过引用并入本说明书)中定义了相关量化;例如,参见第8.7.3节。涉及一种技术,通过该技术,解码过程例如响应于先前编码和解码的样本值的属性(诸如奇偶属性),在多个可能的量化参数或量化参数组之间进行选择。因此,当dep_quant_enabled_flag=1(启用)时,会发生这种持续的相关量化选择。当dep_quant_enabled_flag=0(禁用)时,不会发生这种持续的相关量化选择。如上所述,例如,在切片报头中提供了标记dep_quant_enabled_flag(作为编码属性的示例),使得相关量化的启用或禁用适用于整个切片。
当使用相关量化时,不同的约束可能是相关的,或者至少是可能的,因为根据经验观察,当应用相关量化时,其可以改变编码二进制数与解码二进制数之间的预期关系。不同的约束(诸如等式3)可能更适合与相关量化一起使用。
在多个候选约束适用的情况下,期望解码器受到设计约束,以提供足够的处理能力、速度或容量来处理在不同可用约束中更具挑战性(或最具挑战性)的约束下生成的编码数据。
然而,更一般地,可以使用任何这样的属性(例如,标志或参数),不管是否在数据流中或与数据流一起明确地信令。例如,可以针对所谓的“配置文件”的不同的相应实例来选择不同的候选表达式,其中,该上下文中的配置文件定义了一组或一篮参数,诸如比特深度、色度采样(例如,4:0:0(单色)、4:2:0、4:2:2、4:4:4等)、对编码类型的限制(诸如仅帧内图片编码)等。
在示例实施例中,可以方便地使用定义输出数据单元的某个方面的属性,因为随后可以将相关阈值推导应用于该输出数据单元。在这种情况下,输出数据单元的示例可以包括表示相应图像部分的输出数据单元,诸如切片、图块或图片。合适属性的其他示例可以包括:对于切片:切片类型是仅帧内还是无限制(可以包括帧间)。作为图块示例,考虑从多个源合成图片的情况(每个源一个图块)。每个图块可以具有其自己的阈值推导,这取决于它最初是如何编码的。可替代地,可以使用图片中相同位置处的先前图块/输出数据单元的属性值来确定属性。
在一些示例中,如上所述,约束或阈值由如下表达式定义:
N<=K1*B+(K2*CU)
其中:
N=输出数据单元中二进制符号的数量;
K1是常数;
B=输出数据单元的编码字节的数量;
K2是取决于由图像数据编码设备采用的最小尺寸编码单元的属性的变量;以及
CU=由输出数据单元表示的图片、切片或图块的大小,表示为最小尺寸的编码单元的数量。
应当注意,这实际上是上面讨论的等式1、等式2和等式3的一般化。涉及K1和K2的候选约束的示例列表如下:
关于等式5的示例,变量vcIByteScaleFactor可以表示为:
vclByteScaleFactor=(32+4*general_tier_flag)/3
其中,general_tier_flag是编码层的指示符,并且(在至少一些示例中)随着标志值0或1而变化,其中,0指示所谓的主层,1指示所谓的高层。对于特定的编码级别(表示要编码的图像的最大尺寸),高层通常对应于比主层更高的比特率表示。因此,在该示例中,图像数据编码设备被配置为在从至少两个候选编码层中选择的编码层上操作,并且生成限定当前选择的编码层的层参数(例如,在编码图像数据或比特流中编码或者至少与编码图像数据或比特流相关联),其中,至少常数K1取决于层参数。例如,高层参数可指示给定图像大小的较高质量编码输出,并且参数K1可随着层参数而增加。
这允许用于生成阈值的处理、电路、代码或逻辑在每种情况下方便地相同或基本上相同,参数K1和K2相对于每个示例等式1/等式2至等式7简单地改变。然而,应当理解,可以使用一个或多个不同的等式或表达式(或者甚至潜在地不同的固定阈值),如在上述不同的候选阈值或约束之间。
因此,候选约束2082可以被存储或表示为由选择器2080选择的(K1,K2)对。(K1,K2)对可以被预先确定和存储,并且编码器和解码器或者这些对(或者预定对的较大集合的子集的指示)可以作为(例如)配置文件或参数集数据的一部分从编码器发送到解码器。然后,表达式N<=K1*B+(K2*CU)可以在比较器2090处使用主要选择的(K1,K2)进行测试。
图22A和图22B提供了输出数据单元的两个示意性示例,该输出数据单元跨页面延伸,并且包括由上述技术提供和***的二进制数据2200和填充数据2210。填充数据的量可以取决于被编码的特定图像数据(就其能够被编码的效率而言)和使用中的约束。
图23是示出图像数据编码方法的示意流程图,包括:
选择性地对表示图像数据的数据项进行编码(在步骤2300),以便生成连续输出数据单元的编码的二进制符号;
生成(在步骤2310)受约束的输出数据流,该约束限定了可由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的二进制符号的数量上限;
对不满足约束的每个输出数据单元提供(在步骤2320)填充数据,以便增加该输出数据单元的字节大小,从而满足约束;
检测(在步骤2330)适用于给定输出数据单元的编码属性;并且
响应于检测到的编码属性,从两个或更多个候选约束中选择(在步骤2340)用于给定输出数据单元的约束。
示例实施例还提供了一种图像解码器,该图像解码器包括电路,该电路被配置为解释通过控制此处描述的实施例中的任何一个或多个的图像数据编码设备而生成的编码信号,并输出解码的视频图像。
示例实施例还提供了一种图像解码器,该图像解码器包括电路,该电路被配置为解释通过控制此处描述的实施例中的任何一个或多个的第一数据编码器和第二数据编码器以及控制器而生成的编码信号,并输出解码的视频图像。
所描述的实施例可以以任何合适的形式(包括硬件、软件、固件或其任何组合)实现。所描述的实施例可以可选地至少部分地实现为在一个或多个数据处理器和/或数字信号处理器上运行的计算机软件。任何实施例的元件和组件可以以任何合适的方式在物理上、功能上和逻辑上实现。实际上,该功能可以以单个单元、以多个单元或者作为其他功能单元的一部分来实现。这样,所公开的实施例可以以单个单元实现,或者可以在物理上和功能上分布在不同的单元、电路和/或处理器之间。类似地,包括根据上述方法生成的编码数据的数据信号(无论是否包含在非暂时性机器可读介质上)也被认为表示本公开的实施例。
显而易见地是,根据上述教导,本公开的许多修改和变化是可能的。因此,应当理解,在所附条款的范围内,可以不同于本文具体描述的方式来实践本技术。
相应方面和特征由以下编号的条款限定:
1.一种图像数据编码设备,包括:
熵编码器,被配置为选择性地对表示图像数据的数据项进行编码,以便生成连续输出数据单元的编码的二进制符号;
熵编码器被配置为生成受约束的输出数据流,该约束限定了能由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的二进制符号的数量上限,其中,熵编码器被配置为对不满足约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足约束;该设备包括:
属性检测器,被配置为检测适用于给定输出数据单元的编码属性;以及
选择器,被配置为响应于检测到的编码属性,从两个或更多个候选约束中选择用于给定输出数据单元的约束。
2.根据条款1的设备,其中,熵编码器被配置为选择性地对表示要由第一上下文自适应二进制算术编码(CABAC)编码***或第二旁路编码***编码的图像数据的数据项进行编码,以便生成编码的二进制符号。
3.根据条款1的设备,其中,图像数据表示一个或多个图片;
每个图片包括表示以下内容的数据:
(i)相应网络抽象层(NAL)单元内的一个或多个切片,图片的每个切片可独立于同一图片的任何其他切片进行解码;以及
(ii)零个或多个图块,限定图片区域的相应水平和垂直边界,并且不限于封装在相应NAL单元内,这些图块可独立于同一图片的其他图块进行解码;并且
输出数据单元包括图片、切片和图块中的一个或多个。
4.根据条款1或条款2的设备,其中,第二编码***是使用固定的50%概率上下文模型的二进制算术编码***。
5.根据前述条款中任一项的设备,其中,约束由以下等式定义:
N<=K1*B+(K2*CU) (约束等式1)
其中:
N=输出数据单元中二进制符号的数量;
K1是常数;
B=输出数据单元的编码字节的数量;
K2是取决于由图像数据编码设备采用的最小尺寸编码单元的属性的变量;以及
CU=由输出数据单元表示的图片、切片或图块的大小,表示为最小尺寸的编码单元的数量。
6.根据条款5的设备,其中:
至少两个候选约束由约束等式1定义,相应的一组(K1,K2)与至少两个候选约束中的每一个相关联;并且
选择器被配置为选择用于给定输出数据单元的一组(K1,K2)。
7.根据前述条款中任一项的设备,其中:
控制器被配置为与表示给定输出数据单元的输出数据流相关联地对适用于给定输出数据单元的编码属性的表示进行编码。
8.根据条款7的设备,其中:
图像数据编码设备包括:量化器,被配置为选择性地在相关量化模式下操作;并且
编码属性指示对于给定的输出数据单元是启用还是禁用相关量化模式。
9.根据前述条款中任一项的设备,其中,熵编码器包括:
检测器,被配置为在相对于当前输出数据单元的编码的预定阶段检测当前输出数据单元是否将满足约束;以及
填充数据生成器,被配置为生成足够的填充数据并将其***到当前输出数据单元中,使得包括所***的填充数据的输出数据单元满足约束。
10.根据条款6的设备,其中,预定阶段是对当前输出数据单元进行编码的结束。
11.一种视频存储、捕获、发送或接收设备,包括根据前述条款中任一项的设备。
12.一种图像数据编码方法,包括:
选择性地对表示图像数据的数据项进行编码,以便生成连续输出数据单元的编码的二进制符号;
生成受约束的输出数据流,该约束限定了能由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的二进制符号的数量上限;
对不满足约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足约束;
检测适用于给定输出数据单元的编码属性;并且
响应于检测到的编码属性,从两个或更多个候选约束中选择用于给定输出数据单元的约束。
13.一种计算机软件,当由计算机执行时,该计算机软件使计算机执行根据条款12的方法。
14.一种存储有根据条款13的计算机软件的机器可读非暂时性存储介质。
15.一种数据信号,包括根据条款12的方法生成的编码数据。
16.一种图像数据解码器,被配置为对根据条款15的数据信号进行解码。
Claims (16)
1.一种图像数据编码设备,包括:
熵编码器,被配置为选择性地对表示图像数据的数据项进行编码,以便生成连续输出数据单元的编码的二进制符号;
所述熵编码器被配置为生成受约束的输出数据流,所述约束限定了能由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的所述二进制符号的数量上限,其中,所述熵编码器被配置为对不满足所述约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足所述约束;所述设备包括:
属性检测器,被配置为检测适用于给定输出数据单元的编码属性;以及
选择器,被配置为响应于检测到的编码属性,从两个或更多个候选约束中选择用于所述给定输出数据单元的约束。
2.根据权利要求1所述的设备,其中,所述熵编码器被配置为选择性地对表示要由第一上下文自适应二进制算术编码(CABAC)编码***或由第二旁路编码***编码的图像数据的数据项进行编码,以便生成编码的二进制符号。
3.根据权利要求1所述的设备,其中,所述图像数据表示一个或多个图片;
每个图片包括表示以下内容的数据:
(i)相应网络抽象层(NAL)单元内的一个或多个切片,图片的每个切片能独立于同一图片的任何其他切片进行解码;以及
(ii)零个或多个图块,限定图片区域的相应水平和垂直边界并且不限于封装在相应NAL单元内,所述图块能独立于所述同一图片的其他图块进行解码;并且
所述输出数据单元包括图片、切片和图块中的一个或多个。
4.根据权利要求1所述的设备,其中,第二编码***是使用固定的50%概率上下文模型的二进制算术编码***。
5.根据权利要求1所述的设备,其中,所述约束由以下等式定义:
N<=K1*B+(K2*CU)(约束等式1)
其中:
N=所述输出数据单元中二进制符号的数量;
K1是常数;
B=所述输出数据单元的编码字节的数量;
K2是取决于由所述图像数据编码设备采用的最小尺寸编码单元的属性的变量;以及
CU=由所述输出数据单元表示的图片、切片或图块的大小,表示为最小尺寸的编码单元的数量。
6.根据权利要求5所述的设备,其中:
至少两个候选约束由所述约束等式1定义,相应的一组(K1,K2)与所述至少两个候选约束中的每一个相关联;并且
所述选择器被配置为选择用于所述给定输出数据单元的一组(K1,K2)。
7.根据权利要求1所述的设备,其中:
控制器被配置为与表示所述给定输出数据单元的输出数据流相关联地对适用于所述给定输出数据单元的所述编码属性的表示进行编码。
8.根据权利要求7所述的设备,其中:
所述图像数据编码设备包括:量化器,被配置为选择性地在相关量化模式下操作;并且
所述编码属性指示对于所述给定输出数据单元是启用还是禁用所述相关量化模式。
9.根据权利要求1所述的设备,其中,所述熵编码器包括:
检测器,被配置为在相对于当前输出数据单元的编码的预定阶段检测所述当前输出数据单元是否将满足所述约束;以及
填充数据生成器,被配置为生成足够的填充数据并将所述填充数据***到所述当前输出数据单元中,使得包括所***的填充数据的输出数据单元满足所述约束。
10.根据权利要求6所述的设备,其中,所述预定阶段是对所述当前输出数据单元进行编码的结束。
11.一种视频存储、捕获、发送或接收设备,包括根据权利要求1所述的设备。
12.一种图像数据编码方法,包括:
选择性地对表示图像数据的数据项进行编码,以便生成连续输出数据单元的编码的二进制符号;
生成受约束的输出数据流,所述约束限定了能由任何单独的输出数据单元相对于该输出数据单元的字节大小来表示的所述二进制符号的数量上限;
对不满足所述约束的每个输出数据单元提供填充数据,以便增加该输出数据单元的字节大小,从而满足所述约束;
检测适用于给定输出数据单元的编码属性;并且
响应于检测到的编码属性,从两个或更多个候选约束中选择用于所述给定输出数据单元的约束。
13.一种计算机软件,当由计算机执行时,所述计算机软件使所述计算机执行根据权利要求12所述的方法。
14.一种存储有根据权利要求13所述的计算机软件的机器可读非暂时性存储介质。
15.一种数据信号,包括根据权利要求12所述的方法生成的编码数据。
16.一种图像数据解码器,被配置为对根据权利要求15所述的数据信号进行解码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1913733.0A GB2587359A (en) | 2019-09-24 | 2019-09-24 | Image data encoding and decoding |
GB1913733.0 | 2019-09-24 | ||
PCT/GB2020/052296 WO2021058947A1 (en) | 2019-09-24 | 2020-09-23 | Image data encoding and decoding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114788276A true CN114788276A (zh) | 2022-07-22 |
Family
ID=68425486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080066130.9A Pending CN114788276A (zh) | 2019-09-24 | 2020-09-23 | 图像数据编码和解码 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20230007259A1 (zh) |
EP (1) | EP4014493A1 (zh) |
JP (1) | JP2022548685A (zh) |
KR (1) | KR20220062540A (zh) |
CN (1) | CN114788276A (zh) |
BR (1) | BR112022005038A2 (zh) |
GB (1) | GB2587359A (zh) |
WO (1) | WO2021058947A1 (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201119180D0 (en) * | 2011-11-07 | 2011-12-21 | Sony Corp | Data encoding and decoding |
-
2019
- 2019-09-24 GB GB1913733.0A patent/GB2587359A/en not_active Withdrawn
-
2020
- 2020-09-23 BR BR112022005038A patent/BR112022005038A2/pt unknown
- 2020-09-23 KR KR1020227009735A patent/KR20220062540A/ko unknown
- 2020-09-23 WO PCT/GB2020/052296 patent/WO2021058947A1/en unknown
- 2020-09-23 CN CN202080066130.9A patent/CN114788276A/zh active Pending
- 2020-09-23 JP JP2022517356A patent/JP2022548685A/ja active Pending
- 2020-09-23 US US17/642,910 patent/US20230007259A1/en active Pending
- 2020-09-23 EP EP20780776.9A patent/EP4014493A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022548685A (ja) | 2022-11-21 |
GB2587359A (en) | 2021-03-31 |
EP4014493A1 (en) | 2022-06-22 |
BR112022005038A2 (pt) | 2022-06-21 |
KR20220062540A (ko) | 2022-05-17 |
US20230007259A1 (en) | 2023-01-05 |
WO2021058947A1 (en) | 2021-04-01 |
GB201913733D0 (en) | 2019-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI544787B (zh) | 當跳過轉換時用於有損寫碼之內部預測模式 | |
US10284864B2 (en) | Content initialization for enhancement layer coding | |
CN117915092A (zh) | 数据编码和解码方法、数据编码和解码设备及存储介质 | |
EP3991419B1 (en) | Independent cabac for sub-sections of a picture | |
CN111684798A (zh) | 数据编码和解码 | |
WO2020260878A1 (en) | High throughput cabac | |
US20230007259A1 (en) | Image data encoding and decoding | |
US11936872B2 (en) | Image data encoding and decoding | |
US20220248024A1 (en) | Image data encoding and decoding | |
GB2577339A (en) | Image data encoding and decoding |
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 |