CN117956190A - 视频译码中的显式地址指示 - Google Patents

视频译码中的显式地址指示 Download PDF

Info

Publication number
CN117956190A
CN117956190A CN202311864367.3A CN202311864367A CN117956190A CN 117956190 A CN117956190 A CN 117956190A CN 202311864367 A CN202311864367 A CN 202311864367A CN 117956190 A CN117956190 A CN 117956190A
Authority
CN
China
Prior art keywords
stripe
image
sub
address
video
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
CN202311864367.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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN117956190A publication Critical patent/CN117956190A/zh
Pending legal-status Critical Current

Links

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/70Methods 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
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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/174Methods 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
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • 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

Landscapes

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

Abstract

本发明公开了一种视频译码机制。所述机制包括:接收子码流,其中,所述子码流包括图像中的子图像,其中,所述图像被分割成包括第一条带(slice)的多个条带,与所述图像和所述子图像相关的参数集以及与所述第一条带相关的条带头;解析所述参数集,得到标识符和所述第一条带的条带地址长度;根据所述标识符和所述条带地址长度,从所述条带头中确定所述第一条带的条带地址;解码所述子码流,产生包括所述第一条带的子图像视频序列;发送包括所述第一条带的子图像的视频序列用于显示。

Description

视频译码中的显式地址指示
本申请是分案申请,原申请的申请号是201980087375.7,原申请日是2019年12月31日,原申请的全部内容通过引用结合在本申请中。
相关申请交叉引用
本专利申请要求FNU Hendry等人于2018年12月31日提交的申请号为62/787,110、发明名称为“显式分块标识符(ID)指示(Explicit Tile Identifier(ID)Signaling)”的美国临时专利申请的权益以及要求FNU Hendry等人于2019年8月6日提交的申请号为62/883,537、发明名称为“显式分块标识符(ID)指示(Explicit Tile Identifier(ID)Signaling)”的美国临时专利申请的权益,其内容通过引用的方式并入本文中。
技术领域
本发明大体上涉及视频译码,具体涉及在视频译码中从图像中提取子图像时的地址管理。
背景技术
即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后在现代电信网络中传输。由于内存资源可能有限,当在存储设备上存储视频时,视频的大小也可能成为问题。视频压缩设备通常在源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,由解码视频数据的视频解压缩设备在目的地侧接收压缩数据。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
发明内容
在一个实施例中,本发明包括一种在解码器中实现的方法。所述方法包括:所述解码器的接收器接收子码流,其中,所述子码流包括图像中的子图像,其中,所述图像被分割成包括第一条带的多个条带,与所述图像和所述子图像相关的参数集以及与所述第一条带相关的条带头;所述解码器的处理器解析所述参数集,得到标识符和所述第一条带的条带地址长度;所述处理器根据所述标识符和所述条带地址长度,从所述条带头中确定所述第一条带的条带地址;所述处理器解码所述子码流,产生包括所述第一条带的子图像的视频序列;所述处理器发送包括所述子图像的视频序列用于显示。在一些视频译码系统中,条带(slice)(还称为分块组(tile group))可以根据一组索引进行寻址。这些索引可以从图像左上角的索引0开始,按光栅扫描顺序递增,以图像右下角的索引N结束,其中,N为索引的数量减1。这种系统适用于大多数应用。但是,某些应用,例如虚拟现实(virtual reality,VR),仅显示图像中的子图像。一些系统在流式传输VR内容时只将码流中的子码流发送给解码器,这样可以提高编码效率,其中,所述子码流包括待显示的子图像。在这种情况下,由于解码器接收到的子图像的左上角通常是除0之外的某个索引,所以基于索引的寻址方案可能停止正常运行。为了解决这些问题,可能需要编码器(或相关条带器)来重写每个条带头以改变子图像的索引,使得左上角索引从0开始,并且相应地调整其余的子图像条带。动态地重写条带头(例如根据每个用户请求)可能需要处理器做很多计算。所公开的系统采用一种寻址方案,该寻址方案可以提取包括子图像的子码流,不需要重写条带头。每个条带根据除索引之外的标识符(identifier,ID)(例如子图像ID)进行寻址。这样,无论接收到哪个子图像以及无论接收到的子图像相对于完整图像的左上角所处的位置,解码器都能够一致地确定所有相关地址。由于ID是任意定义的(例如由编码器选择),所以将ID编码在可变长度字段中。相应地,还指示条带地址长度。同样还指示与子图像相关的ID。所述长度用于解析条带地址,所述子图像ID用于将所述条带地址从基于图像的位置映射到基于子图像的位置。通过采用这些机制,可以改进编码器、解码器和/或相关条带。例如,可以提取和发送子码流,而不是提取和发送整个码流,这样可以降低网络资源、内存资源和/或处理资源的使用。此外,这样提取子码流可以不用根据每个用户请求重写每个条带头,这进一步降低了网络资源、内存资源和/或处理资源的使用。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述标识符与子图像相关。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述条带地址长度表示所述条带地址中包括的比特数。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述确定所述第一条带的条带地址包括:所述处理器使用所述参数集中的长度来确定比特边界,以从所述条带头解析所述条带地址;所述处理器使用所述标识符和所述条带地址将所述条带地址从基于图像的位置映射到基于子图像的位置。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:所述处理器解析参数集,得到标识符(identifier,ID)标志,其中,所述ID标志表示映射关系可用于将所述条带地址从所述基于图像的位置映射到所述基于子图像的位置。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述基于图像的位置和所述基于子图像的位置之间的所述映射关系使所述条带头与所述子图像对齐,不需要重写所述条带头。
可选地,在上述任一方面中,在所述方面的另一种实现方式中,所述条带地址包括定义值但不包括索引。
在一个实施例中,本发明包括一种在编码器中实现的方法。所述方法包括:所述编码器的处理器将图像编码在码流中,其中,所述图像包括多个条带,所述多个条带包括第一条带;所述处理器将条带头编码在所述码流中,其中,所述条带头包括所述第一条带的条带地址;所述处理器将参数集编码在所述码流中,其中,所述参数集包括标识符和所述第一条带的条带地址长度;所述处理器通过以下方式提取所述码流中的子码流:根据所述第一条带的条带地址、所述条带地址长度和所述标识符,在不重写所述条带头的情况下提取所述第一条带;将所述子码流存储在所述编码器的存储器中,以发送给解码器。在一些视频译码系统中,条带(slice)(还称为分块组(tile group))可以根据一组索引进行寻址。这些索引可以从图像左上角的索引0开始,按光栅扫描顺序递增,以图像右下角的索引N结束,其中,N为索引的数量减1。这种系统适用于大多数应用。但是,某些应用,例如虚拟现实(virtualreality,VR),仅显示图像中的子图像。一些系统在流式传输VR内容时只将码流中的子码流发送给解码器,这样可以提高编码效率,其中,所述子码流包括待显示的子图像。在这种情况下,由于解码器接收到的子图像的左上角通常是除0之外的某个索引,所以基于索引的寻址方案可能停止正常运行。为了解决这些问题,可能需要编码器(或相关条带器)来重写每个条带头以改变子图像的索引,使得左上角索引从0开始,并且相应地调整其余的子图像条带。动态地重写条带头(例如根据每个用户请求)可能需要处理器做很多计算。所公开的系统采用一种寻址方案,该寻址方案可以提取包括子图像的子码流,不需要重写条带头。每个条带根据除索引之外的标识符(identifier,ID)(例如子图像ID)进行寻址。这样,无论接收到哪个子图像以及无论接收到的子图像相对于完整图像的左上角所处的位置,解码器都能够一致地确定所有相关地址。由于ID是任意定义的(例如由编码器选择),所以将ID编码在可变长度字段中。相应地,还指示条带地址长度。同样还指示与子图像相关的ID。所述长度用于解析条带地址,所述子图像ID用于将所述条带地址从基于图像的位置映射到基于子图像的位置。通过采用这些机制,可以改进编码器、解码器和/或相关条带器(slicer)。例如,可以提取和发送子码流,而不是提取和发送整个码流,这样可以降低网络资源、内存资源和/或处理资源的使用。此外,这样提取子码流可以不用根据每个用户请求重写每个条带头,这进一步降低了网络资源、内存资源和/或处理资源的使用。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述标识符与子图像相关。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述条带地址长度表示所述条带地址中包括的比特数。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述参数集中的长度包括足以从所述条带头中解析所述条带地址的数据,所述标识符包括足以将所述条带地址从基于图像的位置映射到基于子图像的位置的数据。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述方法还包括:所述处理器将标识符(identifier,ID)标志编码在参数集中,其中,所述ID标志表示映射关系可用于将所述条带地址从所述基于图像的位置映射到所述基于子图像的位置。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述条带地址包括定义值但不包括索引。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述提取所述码流中的子码流包括:提取所述图像中的子图像,其中,所述子图像包括所述第一条带,所述子码流包括所述子图像、所述条带头和所述参数集。
在一个实施例中,本发明包括一种视频译码设备。所述视频译码设备包括:处理器、存储器、与所述处理器耦合的接收器以及与所述处理器耦合的发送器,其中,所述处理器、存储器、接收器和发送器用于执行根据任一上述方面所述的方法。
在一个实施例中,本发明包括一种非瞬时性计算机可读介质。所述非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品;所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令;在处理器执行所述计算机可执行指令时,使得所述视频译码设备执行根据任一上述方面所述的方法。
在一个实施例中,本发明包括一种解码器。所述解码器包括:接收模块,用于接收子码流,其中,所述子码流包括图像中的子图像,其中,所述图像被分割成包括第一条带的多个条带,与所述图像和所述子图像相关的参数集以及与所述第一条带相关的条带头;解析模块,用于解析所述参数集,得到标识符和所述第一条带的条带地址长度;确定模块,用于根据所述标识符和所述条带地址长度,从所述条带头中确定所述第一条带的条带地址;解码模块,解码所述子码流,产生包括所述第一条带的子图像的视频序列;发送模块,用于发送包括所述第一条带的子图像的视频序列用于显示。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述解码器还用于执行根据任一上述方面所述的方法。
在一个实施例中,本发明包括一种编码器。所述编码器包括:编码模块,用于:将图像编码在码流中,其中,所述图像包括多个条带,所述多个条带包括第一条带;将条带头编码在所述码流流中,其中,所述条带头包括所述第一条带的条带地址;将参数集编码在所述码流中,其中,所述参数集包括标识符和所述第一条带的条带地址长度;提取模块,用于通过以下方式提取所述码流中的子码流:根据所述第一条带的条带地址、所述条带地址长度和所述标识符,在不重写所述条带头的情况下提取所述第一条带;存储模块,用于存储所述子码流,以发送给解码器。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述编码器还用于执行根据上述任一方面所述的方法。
为了清楚起见,任一上述实施例可以与上述其它任一或多个实施例组合以创建在本发明范围内的新实施例。
根据以下具体实施方式结合附图和权利要求书能更清楚地理解这些和其它特征。
附图说明
为了更透彻地理解本发明,现结合附图和具体实施方式,参考以下附图说明,其中,相同附图标记表示相同部件。
图1为对视频信号进行编码的示例性方法的流程图。
图2为用于视频译码的示例性编码和解码(编解码)系统的示意图。
图3为示例性视频编码器的示意图。
图4为示例性视频解码器的示意图。
图5为从码流中提取的示例性子码流的示意图。
图6为分割用于编码的示例性图像的示意图。
图7为从图像中提取的示例性子图像的示意图。
图8为示例性视频译码设备的示意图。
图9为对图像的码流进行编码的示例性方法的流程图,该方法通过显式地址指示,在不重写条带头的情况下提取包括子图像的子码流。
图10为通过显式地址指示对包括子图像的子码流进行解码的示例性方法的流程图。
图11为通过显式地址指示发送包括子图像的子码流的示例性系统的示意图。
具体实施方式
首先应理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任一数量的技术来实施,无论所述技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可以在所附权利要求书的范围以及其等效物的完整范围内修改。
本文采用各种缩略语,例如编码树块(coding tree block,CTB)、编码树单元(coding tree unit,CTU)、编码单元(coding unit,CU)、编码视频序列(coded videosequence,CVS)、联合视频专家组(Joint Video Experts Team,JVET)、运动约束分块集(motion constrained tile set,MCTS)、最大传输单元(maximum transfer unit,MTU)、网络抽象层(network abstraction layer,NAL)、图像顺序编号(picture order count,POC)、原始字节序列载荷(raw byte sequence payload,RBSP)、序列参数集(sequenceparameter set,SPS)、通用视频编码(versatile video coding,VVC)和工作草案(workingdraft,WD)。
许多视频压缩技术可以用来减小视频文件,同时尽量减少数据丢失。例如,视频压缩技术可以包括执行空间(例如帧内)预测和/或时间(例如帧间)预测来减少或去除视频序列中的数据冗余。对于基于块的视频译码,视频条带(例如视频图像或视频图像的一部分)可以分割成视频块,视频块还可以称为树块(treeblock)、编码树块(coding tree block,CTB)、编码树单元(coding tree unit,CTU)、编码单元(coding unit,CU)和/或编码节点。使用针对同一图像内的相邻块中的参考样本的空间预测对图像内的帧内编码(I)条带中的视频块进行编码。可以使用针对同一图像内的相邻块中的参考样本的空间预测或使用针对其它参考图像内的参考样本的时间预测对图像内的帧间编码单向预测(P)或双向预测(B)条带中的视频块进行编码。图像(picture/image)可以称为帧(frame),参考图像可以称为参考帧。空间预测或时间预测会产生表示图像块的预测块。残差数据表示原始图像块和预测块之间的像素差。相应地,帧间编码块根据运动矢量和残差数据进行编码,其中,运动矢量指向组成预测块的参考样本的块,残差数据指示经编码块和预测块之间的差值。帧内编码块根据帧内编码模式和残差数据进行编码。为了进一步压缩,残差数据可以从像素域变换到变换域,从而产生可以接着进行量化的残差变换系数。量化变换系数最初以二维阵列排列。可以扫描量化变换系数,以产生变换系数的一维矢量。可以应用熵编码以实现进一步压缩。下文更详细地论述了这类视频压缩技术。
为了确保经编码视频能够正确解码,视频根据对应的视频编码标准进行编码和解码。视频编码标准包括国际电联(International Telecommunication Union,ITU)标准化部门(International Telecommunication Union Standardization Sector,ITU-T)H.261、国际标准化组织/国际电工委员会(International Organization forStandardization/International Electrotechnical Commission,ISO/IEC)运动图像专家组(Motion Picture Experts Group,MPEG)-1第2部分、ITU-T H.262或ISO/IEC MPEG-2第2部分、ITU-T H.263、ISO/IEC MPEG-4第2部分、高级视频编码(Advanced Video Coding,AVC)(还称为ITU-T H.264或ISO/IEC MPEG-4第10部分)以及高效视频编码(HighEfficiency Video Coding,HEVC)(还称为ITU-T H.265或MPEG-H第2部分)。AVC包括可分级视频编码(Scalable Video Coding,SVC)、多视点视频编码(Multiview Video Coding,MVC)和多视点视频编码加深度(Multiview Video Coding plus Depth,MVC+D)以及三维(three dimensional,3D)AVC(3D-AVC)等扩展版。HEVC包括可分级HEVC(Scalable HEVC,SHVC)、多视点HEVC(Multiview HEVC,MV-HEVC)和3D HEVC(3D-HEVC)等扩展版。ITU-T和ISO/IEC的联合视频专家组(joint video experts team,JVET)已着手开发一种称为通用视频编码(Versatile Video Coding,VVC)的视频编码标准。VVC包括在工作草案(WorkingDraft,WD)中,该WD包括JVET-L1001-v7。
为了对视频图像进行编码,首先对该图像进行分割,然后将得到的各分割部分编码在码流中。存在各种图像分割方案。例如,一个图像可以分割成常规条带(slice)、非独立条带、分块(tile),和/或根据波前并行处理(Wavefront Parallel Processing,WPP)进行分割。为了简单起见,HEVC对编码器做了限制,使得在将条带分割成用于视频译码的CTB组时,只能使用常规条带、非独立条带、分块、WPP及其组合。这种分割能够支持最大传输单元(maximum transfer unit,MTU)大小匹配、并行处理和减少端到端时延。MTU表示能够在单个数据包中发送的最大数据量。如果数据包载荷超过MTU,则通过称为分片的过程将该载荷划分为两个数据包。
常规条带还简称为条带,是分割图像后得到的部分,可以独立于同一个图像内的其它常规条带重建,但是由于存在环路滤波操作,所以还是存在相互依赖性。每个常规条带封装在自身的网络抽象层(network abstraction layer,NAL)单元中进行发送。此外,帧内预测(帧内样本预测、运动信息预测、编码模式预测)和跨条带边界的熵编码依赖性可能被禁用,以支持独立重建。这种独立重建支持并行化操作。例如,基于常规条带的并行化减少了处理器间或核间通信。但是,由于常规条带都是独立的,所以每个条带都与单独的条带头相关。由于每个条带都具有条带头比特成本,且缺乏跨条带边界的预测,所以使用常规条带会产生大量的编码开销。此外,可以使用常规条带来支持MTU大小匹配需求。具体地,由于常规条带封装在单独的NAL单元中,并且可以独立编码,所以每个常规条带需要小于MTU方案中的MTU,以避免该条带拆分成多个数据包。因此,为了实现并行化和MTU大小匹配,图像内的条带布局会互相矛盾。
非独立条带与常规条带类似,但缩短了条带头,可以在不打破帧内预测的情况下对图像树块边界进行分割。相应地,非独立条带可以将常规条带分成多个NAL单元,这样先完成整个常规条带的编码,然后将该常规条带的一部分发送出去,从而降低端到端时延。
分块(tile)是图像内由水平和垂直边界形成的分割部分,这些边界形成了分块列和分块行。分块可以按光栅扫描顺序(从右到左,从上到下)进行编码。CTB的扫描顺序为在一个分块内部执行扫描的顺序。相应地,首先对第一分块内的CTB按光栅扫描顺序进行编码,然后处理下一个分块内的CTB。与常规条带类似,分块打破了对帧内预测和熵解码的依赖。但是,分块可以不包括在单个NAL单元中,因此,分块不能用于实现MTU大小匹配。每个分块可以由一个处理器/核处理,解码相邻分块的处理单元之间的帧内预测所使用的处理器间/核间通信可以限于发送共享的条带头(当相邻分块在同一个条带内时)以及共享与环路滤波相关的重建样本和元数据。当条带中包括多个分块时,除条带中的第一入口点(entrypoint)偏移之外,可以在条带头中指示每个分块的入口点字节偏移。对于每个条带和分块,需要满足以下条件中的至少一个:(1)条带中的所有编码树块都属于同一个分块;(2)分块中的所有编码树块都属于同一个条带。
在WPP中,图像被分割成单行CTB。熵解码和预测机制可以使用其它行中的CTB的数据。并行处理可以通过CTB行的并行解码实现。例如,当前行可以与前一行并行解码。但是,当前行的解码会比前几行的解码过程延迟两个CTB。这种延迟确保了在解码当前CTB之前,与位于当前行中的当前CTB上方和右侧的CTB相关的数据可用。当用图形表示时,该方法看起来像波面(wavefront)。这种交错式开始解码可以使用与图像内包括的CTB行一样多的处理器/核来实现并行化。由于支持在图像内的相邻树块行之间进行帧内预测,所以可能需要大量处理器间/核间通信来实现帧内预测。WPP分割不考虑NAL单元大小。因此,WPP不支持MTU大小匹配。但是,常规条带可以与WPP结合使用,产生一定的编码开销,从而根据需要实现MTU大小匹配。
分块还可以包括运动约束分块集。运动约束分块集(motion constrained tileset,MCTS)是一种分块集,使得相关的运动矢量被限制为指向MCTS内部的整像素位置以及指向仅需要MCTS内部的整像素位置进行插值的分数像素位置。此外,不允许使用根据MCTS之外的块推导的用于时间运动矢量预测的运动矢量候选。这样,每个MCTS可以独立解码,不需要MCTS中包括的分块。时间MCTS补充增强信息(supplemental enhancementinformation,SEI)消息可以用于指示MCTS存在于码流中并指示(signal)该MCTS。MCTS SEI消息提供补充信息(详述为SEI消息语义的一部分),该补充信息可以用于提取MCTS子码流,以生成MCTS集的一致性码流。该信息包括提取信息集的数量,每个提取信息集定义多个MCTS集并且包括要在MCTS子码流提取过程使用的替换视频参数集(video parameter set,VPS)、序列参数集(sequence parameter set,SPS)和图像参数集(picture parameterset,PPS)的原始字节序列载荷(raw bytes sequence payload,RBSP)字节。因为一个或所有条带地址相关的语法元素(包括first_slice_segment_in_pic_flag和slice_segment_address)可以在提取的子码流中采用不同的值,所以在按照MCTS子码流提取过程提取子码流时,可以重写或替换参数集(VPS、SPS和PPS),并更新条带头。
上述方案可能存在一些问题。在一些系统中,当图像内存在多个分块/条带时,可以使用语法元素(例如tile_group_address)将分块组的地址指示为分块组头中的索引。tile_group_address表示分块组中的第一个分块的分块地址。tile_group_address的长度可以确定为Ceil(Log2(NumTilesInPic))个比特,其中,NumTilesInPic包括图像内的分块数量。tile_group_address的取值范围可以为0~NumTilesInPic–1(包括端值),tile_group_address的值可以不等于同一个经编码图像内的任意其它经编码分块组NAL单元的tile_group_address的值。当码流中不存在tile_group_address时,可以推断tile_group_address为0。上文描述的分块地址包括分块索引。然而,使用分块索引作为每个分块组的地址可能会在某种程度上降低编码效率。
例如,在将子码流发送到解码器之前直接在客户端侧或者在某个基于网络的媒体处理实体中,某些情况可能需要在编码和解码之间修改AVC或HEVC条带段头。这种情况的一个示例是基于分块的流传输。在分块流传输中,全景视频使用HEVC分块进行编码,但解码器只解码这些分块的一部分。通过重写HEVC条带段头(slice segment header,SSH)以及SPS/PPS,可以控制码流,以便改变正在解码的分块的子集以及它们在解码视频帧中的空间排列。产生CPU处理开销的一个原因是AVC和HEVC条带段头使用可变长度字段,并在末尾有一个字节对齐字段。即,每当SSH中的某个字段被更改时,就会影响SSH末尾的字节对齐字段,然后还要重写该字节对齐字段。而且,由于所有字段都是进行可变长度编码,所以了解字节对齐字段位置的唯一方法就是解析前面所有的字段。这样产生了大量的处理开销,特别是当使用分块时,每秒的视频可能包括数百个NAL。一些系统支持显式指示分块标识符(identifier,ID)。然而,一些语法元素可能不会被优化,并且在指示时可包括不必要比特和/或冗余比特。此外,没有指定与显式分块ID指示相关的一些约束条件。
例如,上述机制允许对图像进行分割和压缩。例如,可以将图像分割成条带、分块和/或分块组。在一些示例中,分块组可以与条带互换使用。这种条带和/或分块组可以根据一组索引进行寻址。这些索引可以从图像左上角的索引0开始,按照光栅扫描顺序递增,以图像右下角的索引N结束。在这种情况下,N为索引的数量减1。这种系统适用于大多数应用。但是,某些应用,例如虚拟现实(virtual reality,VR),仅显示图像中的子图像。这种子图像在一些上下文中可以称为感兴趣区域。一些系统在流式传输VR内容时只将码流中的子码流发送给解码器,这样可以提高编码效率,其中,所述子码流包括待显示的子图像。在这种情况下,由于解码器接收到的子图像的左上角通常是除0之外的某个索引,所以基于索引的寻址方案可能停止正常运行。为了解决这些问题,可能需要编码器(或相关条带器)重写每个条带头以改变子图像的索引,使得左上角索引从0开始,并且相应地调整其余的子图像条带。动态地重写条带头(例如根据每个用户请求)可能需要处理器做很多计算。
本文公开了各种机制,以在从包括图像的经编码码流中提取包括子图像的子码流时,提高编码效率并减少处理开销。所公开的系统采用一种寻址方案,该寻址方案可以在无需重写条带头的情况下提取包括子图像的子码流。每个条带/分块组根据除索引之外的ID进行寻址。例如,条带可以通过一个值进行寻址,该值可以映射到索引并存储在条带头中。这样,解码器从条带头读取条带地址,并将地址从基于图像的位置映射到基于子图像的位置。由于条带地址不是预定义的索引,因此将条带地址编码在可变长度字段中。相应地,还指示条带地址长度。同样还指示与子图像相关的ID。可以在PPS中指示子图像ID和长度。还可以在PPS中指示一个标志,以表示采用了显式寻址方案。在读取该标志之后,解码器可以获取长度和子图像ID。长度用于从条带头中解析条带地址。子图像ID用于将条带地址从基于图像的位置映射到基于子图像的位置。这样,无论接收到哪个子图像以及无论接收到的子图像相对于完整图像的左上角所处的位置,解码器都能够一致地确定所有相关地址。此外,这种机制可以在不重写条带头来改变条带地址值和/或不改变与条带地址相关的字节对齐字段的情况下做出这些决定。通过采用上述机制,可以改进编码器、解码器和/或相关条带器(slicer)。例如,可以提取和发送子码流,而不是提取和发送整个码流,这样可以降低网络资源、内存资源和/或处理资源的使用。此外,这样提取子码流可以不用根据每个用户请求重写每个条带头,这进一步降低了网络资源、内存资源和/或处理资源的使用。
图1为对视频信号进行编码的示例性操作方法100的流程图。具体地,编码器对视频信号进行编码。在所述编码过程中,采用各种机制来压缩所述视频信号,以减小视频文件。文件较小,压缩视频文件可以发送给用户,同时降低相关带宽开销。然后,解码器对压缩视频文件进行解码,以重建原始视频信号,从而向终端用户显示。所述解码过程通常是所述编码过程的逆过程,使得所述解码器重建的视频信号与编码器侧的视频信号保持一致。
在步骤101中,将视频信号输入到编码器中。例如,所述视频信号可以是存储在存储器中的未压缩视频文件。又例如,视频文件可以由视频捕获设备(例如摄像机)捕获,并且进行编码以支持视频的直播流传输。所述视频文件可以包括音频分量和视频分量。所述视频分量包括一系列图像帧。按顺序观看这些图像帧时,给人以运动的视觉效果。这些帧包括以光线表示的像素,在本文中称为亮度分量(或亮度样本),还包括以颜色表示的像素,称为色度分量(或颜色样本)。在一些示例中,这些帧还可以包括深度值以支持三维观看。
在步骤103中,将视频分割成块。分割包括将每一帧中的像素细分成方块和/或矩形块,以进行压缩。例如,在高效视频编码(High Efficiency Video Coding,HEVC)(还称为H.265和MPEG-H第2部分)中,可以先将帧分成编码树单元(coding tree unit,CTU),这些CTU是预定义大小(例如,64个像素×64个像素)的块。这些CTU包括亮度样本和色度样本。可以使用编码树将CTU分成块,然后重复地对这些块进行细分,直到获得支持进一步编码的配置。例如,可以对帧的亮度分量进行细分,直到各个块包括相对均匀的亮度值。此外,可以对帧的色度分量进行细分,直到各个块包括相对均匀的色值。因此,分割机制根据视频帧的内容而不同。
在步骤105中,采用各种压缩机制对在步骤103中分割的图像块进行压缩。例如,可以采用帧间预测和/或帧内预测。帧间预测利用了这样一个事实:常见场景下的对象往往出现在连续帧中。因此,表示参考帧中的对象的块不需要在相邻帧中进行重复表示。具体地,一个对象(例如一张桌子)可能在多个帧中保持固定位置。因此,该桌子表示一次,而且相邻帧可以重新参考该参考帧。可以采用模式匹配机制来匹配多个帧中的对象。此外,由于对象移动或摄像机移动等原因,可以在多个帧中表示移动对象。在一个特别的示例中,视频可以显示汽车跨屏幕在多个帧中移动。运动矢量可以用来表示这种移动。运动矢量是一个二维矢量,提供对象在一个帧中的坐标与该对象在参考帧中的坐标之间的偏移。因此,帧间预测可以将当前帧中的图像块编码为运动矢量集,这些运动矢量指示当前帧中的图像块与参考帧中的对应块之间的偏移。
帧内预测用于对公共帧中的块进行编码。帧内预测利用了这样一个事实:亮度分量和色度分量往往聚集在一个帧中。例如,一棵树某个部分的一片绿色往往与类似的几片绿色相邻。帧内预测采用多种方向性预测模式(例如,HEVC中有33种)、平面模式和直流(direct current,DC)模式。这些方向性模式表示当前块的样本与对应方向上的相邻块的样本相似/相同。平面模式表示一行/列(例如平面)上的一系列块可以根据该行的边缘处的相邻块进行插值。平面模式实际上表示光线/颜色通过使用有数值变化的相对恒定的斜率在行/列之间进行平滑过渡。DC模式用于边界平滑,表示块与所有相邻块的样本的平均值相似/相同,这些相邻块与方向性预测模式的角度方向相关。因此,帧内预测块可以将图像块表示为各种关系预测模式值而不是实际值。此外,帧间预测块可以将图像块表示为运动矢量值而不是实际值。在任一种情况下,预测块在一些情况下可能无法准确表示图像块。所有差值都存储在残差块中。可以对残差块进行变换以进一步压缩文件。
在步骤107中,可以使用各种滤波技术。在HEVC中,根据环内滤波方案使用滤波器。上文描述的基于块的预测可能会在解码器侧产生块状图像。此外,基于块的预测方案可以对块进行编码,然后重建经编码块,以后续用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和样本自适应偏移(sample adaptive offset,SAO)滤波器应用于块/帧。这些滤波器减少了块伪影,这样可以准确地重建经编码文件。此外,这些滤波器减少了重建参考块中的伪影,使得伪影不太可能在后续根据重建参考块进行编码的块中产生其它伪影。
一旦视频信号完成分割、压缩和滤波,则在步骤109中,将所得数据编码在码流中。所述码流包括上文描述的数据以及支持在解码器侧进行适当的视频信号重建所需要的任何指示数据。例如,这些数据可以包括分割部分数据、预测数据、残差块和提供编码指令给解码器的各种标志。所述码流可以存储在存储器中,以便在请求时发送给解码器。所述码流还可以广播和/或组播到多个解码器。所述码流的产生是一个迭代过程。因此,步骤101、步骤103、步骤105、步骤107和步骤109可以在多个帧和块中连续和/或同时执行。图1所示的顺序是为了清楚和便于论述的目的,并非旨在将视频译码过程限于特定顺序。
在步骤111中,所述解码器接收所述码流,开始解码过程。具体地,所述解码器采用熵解码方案将所述码流转换为对应的语法数据和视频数据。在步骤111中,所述解码器使用所述码流中的语法数据来确定帧的分割部分。分割应该与步骤103中的块分割的结果匹配。下面描述在步骤111中采用的熵编码/解码。编码器在压缩过程中做出许多选择,例如根据一个或多个输入图像中的值的空间位置从若干个可能选择中选择块分割方案。指示确切的选择可能会使用大量的二元符号(bin)。本文所使用的“二元符号”是一个作为变量的二进制值(例如根据上下文可能变化的比特值)。熵编码使得编码器丢弃任何明显不适合特定情况的选项,从而留下一组可用选项。然后,为每个可用选项分配一个码字。码字的长度取决于可用选项的数量(例如,一个二元符号对应两个选项,两个二元符号对应三到四个选项,以此类推)。然后,编码器对所选选项的码字进行编码。该方案减小了码字,这是因为码字与预期的一样大,从而唯一地指示从可用选项的小子集中进行选择,而不是唯一地指示从所有可能选项的可能大集合中进行选择。然后,解码器通过以与编码器类似的方式确定该组可用选项对所述选项进行解码。通过确定该组可用选项,解码器可以读取码字,并确定编码器做出的选择。
在步骤113中,所述解码器执行块解码。具体地,所述解码器进行逆变换,生成残差块。然后,所述解码器使用残差块和对应的预测块,根据分割来重建图像块。所述预测块可以包括编码器在步骤105中生成的帧内预测块和帧间预测块。然后,根据在步骤111中确定的分割数据将重建图像块放置在重建视频信号的帧中。还可以通过上文描述的熵编码在码流中指示用于步骤113的语法。
在步骤115中,以类似于编码器侧的步骤107的方式对重建视频信号的帧执行滤波。例如,可以将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和SAO滤波器应用于帧,以去除块伪影。一旦对帧进行了滤波,则在步骤117中,可以将视频信号输出到显示器,以供终端用户观看。
图2为用于视频译码的示例性编码和解码(编解码)系统200的示意图。具体地,编解码系统200的功能能够实现操作方法100。编解码系统200普遍适用于描述编码器和解码器中都使用的组件。编解码系统200接收视频信号并对视频信号进行分割,如结合操作方法100中的步骤101和步骤103所述,得到分割视频信号201。在充当编码器时,编解码系统200则将分割视频信号201压缩到经编码码流中,如结合方法100中的步骤105、步骤107和步骤109所述。在充当解码器时,编解码系统200从码流中生成输出视频信号,如结合操作方法100中的步骤111、步骤113、步骤115和步骤117所述。编解码系统200包括总体译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、帧内预测组件217、运动补偿组件219、运动估计组件221、缩放和逆变换组件229、滤波器控制分析组件227、环内滤波器组件225、解码图像缓冲区组件223以及标头格式和上下文自适应二进制算术编码(contextadaptive binary arithmetic coding,CABAC)组件231。这些组件如图所示进行耦合。在图2中,黑线表示待编码/待解码数据的运动,而虚线表示控制其它组件操作的控制数据的运动。编解码系统200中的组件都可以存在于编码器中。解码器可以包括编解码系统200中的组件的子集。例如,解码器可以包括帧内预测组件217、运动补偿组件219、缩放和逆变换组件229、环内滤波器组件225和解码图像缓冲区组件223。下面对这些组件进行描述。
分割视频信号201为一个捕获到的视频序列,该视频序列已通过编码树分割成像素块。编码树采用各种划分模式将像素块细分成较小的像素块。然后,可以将这些块进一步细分成较小的块。这些块可以称为编码树上的节点。较大的父节点被划分成较小的子节点。节点进行细分的次数称为节点/编码树的深度。在一些情况下,划分得到的块可以包括在编码单元(coding unit,CU)中。例如,CU可以是CTU的子部分,包括亮度块、一个或多个红色差色度(Cr)块和一个或多个蓝色差色度(Cb)块以及与CU对应的语法指令。划分模式可以包括用于将节点分割成不同形状(取决于所使用的划分模式)的两个、三个或四个子节点的二叉树(binary tree,BT)、三叉树(triple tree,TT)和四叉树(quad tree,QT)。将分割视频信号201发送给总体编码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227和运动估计组件221,以进行压缩。
总体译码器控制组件211用于根据应用约束条件决定将视频序列中的图像编码在码流中。例如,总体译码器控制组件211管理对码率/码流大小与重建质量的优化。可以根据存储空间/带宽可用性和图像分辨率请求做出这些决定。总体译码器控制组件211还根据传输速度来管理缓冲区利用率,以减轻缓存欠载和超载。为了解决这些问题,总体译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,总体译码器控制组件211可以动态增加压缩复杂度以提高分辨率和带宽利用率,或者降低压缩复杂度以降低分辨率和带宽利用率。因此,总体译码器控制组件211控制编解码系统200中的其它组件,平衡视频信号重建质量与码率。总体译码器控制组件211生成控制数据,这些控制数据用于控制其它组件的操作。还将控制数据发送给标头格式和CABAC组件231,以编码在码流中,从而指示解码器进行解码使用的参数。
还将分割视频信号201发送给运动估计组件221和运动补偿组件219,以进行帧间预测。可以将分割视频信号201中的帧或条带划分成多个视频块。运动估计组件221和运动补偿组件219相对于一个或多个参考帧中的一个或多个块对所接收到的视频块进行帧间预测编码,以提供时间预测。编解码系统200可以执行多个译码回合,以便为视频数据中的每个块选择合适的编码模式,等等。
运动估计组件221和运动补偿组件219可以高度集成,但是出于概念目的,单独说明。由运动估计组件221执行的运动估计是生成运动矢量的过程,其中,这些运动矢量用于估计视频块的运动。例如,运动矢量可以表示编码对象相对于预测块的位移。预测块是在像素差方面,与待编码块高度匹配的块。预测块还可以称为参考块。这种像素差可以通过绝对差异和(sum of absolute difference,SAD)、平方差异和(sum of square difference,SSD)或其它差异度量来确定。HEVC采用若干个编码对象,包括CTU、编码树块(coding treeblock,CTB)和CU。例如,可以将CTU分成CTB,然后将CTB分成CB,以包含在CU中。可以将CU编码为包括预测数据的预测单元(prediction unit,PU)和/或包括CU的变换残差数据的变换单元(transform unit,TU)。运动估计组件221进行作为率失真优化过程一部分的率失真分析,生成运动矢量、PU和TU。例如,运动估计组件221可以为当前块/帧确定多个参考块、多个运动矢量等,并且可以选择率失真特性最佳的参考块、运动矢量等。最佳率失真特性能够保持视频重建的质量(例如压缩造成的数据丢失量)和编码效率(例如最终编码的大小)之间的平衡。
在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置进行插值。因此,运动估计组件221可以相对于整像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221将PU的位置与参考图像中的预测块的位置进行比较,为帧间编码条带中的视频块的PU计算运动矢量。运动估计组件221将计算得到的运动矢量作为运动数据输出到标头格式和CABAC组件231以进行编码,并作为运动数据输出到运动补偿组件219。
由运动补偿组件219执行的运动补偿可以包括根据运动估计组件221所确定的运动矢量,获取或生成预测块。同样,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收到当前视频块的PU的运动矢量之后,运动补偿组件219可以定位运动矢量指向的预测块。然后,将预测块的像素值从正在编码的当前视频块的像素值中减去,得到像素差,从而形成残差视频块。一般而言,运动估计组件221相对于亮度分量执行运动估计,运动补偿组件219将根据亮度分量计算得到的运动矢量用于色度分量和亮度分量。将预测块和残差块发送给变换缩放和量化组件213。
还将分割视频信号201发送给帧内估计组件215和帧内预测组件217。与运动估计组件221和运动补偿组件219一样,帧内估计组件215和帧内预测组件217可以高度集成,但是出于概念目的,单独说明。帧内估计组件215和帧内预测组件217相对于当前帧中的各块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择合适的帧内预测模式对当前块进行编码。然后,将选定的帧内预测模式发送给标头格式和CABAC组件231,以进行编码。
例如,帧内估计组件215对各种测试的帧内预测模式进行率失真分析,计算率失真值,并在测试的模式中选择率失真特性最佳的帧内预测模式。率失真分析一般用于确定经编码块与为了产生经编码块而进行编码的原始未编码块之间的失真(或误差)量,以及确定产生经编码块所用的码率(例如比特数)。帧内估计组件215根据各种经编码块的失真和速率计算比率,以确定得到块的最佳率失真值的帧内预测模式。另外,帧内估计组件215可以用于根据率失真优化(rate-distortion optimization,RDO),使用深度建模模式(depthmodeling mode,DMM)对深度图像中的深度块进行编码。
在编码器上实现时,帧内预测组件217可以根据由帧内估计组件215确定的帧内预测模式,根据预测块生成残差块,或者在解码器上实现时,从码流中读取残差块。残差块包括预测块与原始块之间的差值,表示为矩阵。然后,将残差块发送给变换缩放和量化组件213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量进行操作。
变换缩放和量化组件213用于对残差块进一步压缩。变换缩放和量化组件213对残差块进行离散余弦变换(discrete cosine transform,DCT)、离散正弦变换(discretesine transform,DST)等变换或者进行概念上类似的变换,从而产生包括残差变换系数值的视频块。还可以进行小波变换、整数变换、子带变换或其它类型的变换。变换可以将残差信息从像素值域转换到变换域,例如频域。变换缩放和量化组件213还用于根据频率等对变换残差信息进行缩放。这种缩放涉及对残差信息应用缩放因子,以便在不同的粒度下对不同的频率信息进行量化,这可能会影响重建视频的最终视觉质量。变换缩放和量化组件213还用于对变换系数进行量化以进一步降低码率。量化过程可以减小与部分或全部系数相关的位深度。可以通过调整量化参数来改变量化程度。在一些示例中,变换缩放和量化组件213随后可以对包括量化变换系数的矩阵执行扫描。将量化变换系数发送给标头格式和CABAC组件231,以编码在码流中。
缩放和逆变换组件229进行与变换缩放和量化组件213相反的操作以支持运动估计。缩放和逆变换组件229进行逆缩放、逆变换和/或反量化以重建像素域中的残差块,例如后续用作参考块。该参考块可会变为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以将残差块添加回对应的预测块来计算参考块,以用于对后续块/帧进行运动估计。将滤波器应用于重建参考块,以减少在缩放、量化和变换期间产生的伪影。当预测后续块时,这些伪影可能会使预测不准确(并产生额外的伪影)。
滤波器控制分析组件227和环内滤波器组件225将滤波器应用于残差块和/或重建图像块。例如,可以将来自缩放和逆变换组件229的变换残差块与来自帧内预测组件217和/或运动补偿组件219的对应预测块组合以重建原始图像块。然后,可以将滤波器应用于重建图像块。在一些示例中,可以将滤波器应用于残差块。与图2中的其它组件一样,滤波器控制分析组件227和环内滤波组件225高度集成,可以一起实现,但是出于概念目的,单独说明。将应用于重建参考块的滤波器应用于特定空间区域,这些滤波器包括多个参数以调整使用这些滤波器的方式。滤波器控制分析组件227对重建参考块进行分析,以确定需要使用这些滤波器的位置并设置对应的参数。将这些数据发送给标头格式和CABAC组件231,作为滤波器控制数据进行编码。环内滤波器组件225根据滤波器控制数据使用这些滤波器。这些滤波器可以包括去块效应滤波器、噪声抑制滤波器、SAO滤波器和自适应环路滤波器。这些滤波器可以根据示例应用于空域/像素域(例如重建像素块)或频域中。
当作为编码器操作时,将经过滤波的重建图像块、残差块和/或预测块存储在解码图像缓冲区组件223中,后续用于如上所述的运动估计。当作为解码器操作时,解码图像缓冲区组件223存储经过滤波的重建块并将其发送给显示器,作为输出视频信号的一部分。解码图像缓冲区组件223可以是任何能够存储预测块、残差块和/或重建图像块的存储设备。
标头格式和CABAC组件231从编解码系统200中的各种组件接收数据,并将这些数据编码在经编码码流中,以发送给解码器。具体地,标头格式和CABAC组件231生成各种标头以对控制数据(例如总体控制数据和滤波器控制数据)进行编码。此外,将预测数据(包括帧内预测和运动数据)以及以量化变换系数数据为形式的残差数据都编码在码流中。最终的码流包括解码器重建原始分割视频信号201所需要的所有信息。这些信息还可以包括帧内预测模式索引表(还称为码字映射表)、各种块的编码上下文的定义、最可能帧内预测模式的指示、分割信息的指示等。这些数据可以采用熵编码进行编码。例如,可以采用上下文自适应可变长度编码(context adaptive variable length coding,CAVLC)、CABAC、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binaryarithmetic coding,SBAC)、概率区间分割熵(probability interval partitioningentropy,PIPE)编码或其它熵编码技术对上述信息进行编码。在经过熵编码之后,可以将经编码码流发送给另一设备(例如视频解码器)或存档,以供后续发送或检索。
图3为示例性视频编码器300的框图。视频编码器300可以用于实现编解码系统200的编码功能和/或执行操作方法100中的步骤101、步骤103、步骤105、步骤107和/或步骤109。编码器300对输入视频信号进行分割,得到基本上类似于分割视频信号201的分割视频信号301。然后,编码器300中的组件将分割视频信号301进行压缩并编码在码流中。
具体地,将分割视频信号301发送给帧内预测组件317,以进行帧内预测。帧内预测组件317可以基本上类似于帧内估计组件215和帧内预测组件217。还将分割视频信号301发送给运动补偿组件321,以根据解码图像缓冲区组件323中的参考块进行帧间预测。运动补偿组件321可以基本上类似于运动估计组件221和运动补偿组件219。将来自帧内预测组件317和运动补偿组件321的预测块和残差块发送给变换和量化组件313,以对残差块进行变换和量化。变换和量化组件313可以基本上类似于变换缩放和量化组件213。将变换量化残差块和对应的预测块(连同相关的控制数据)发送给熵编码组件331,以编码在码流中。熵编码组件331可以基本上类似于标头格式和CABAC组件231。
还将变换量化残差块和/或对应的预测块从变换和量化组件313发送给逆变换和量化组件329,以重建为参考块供运动补偿组件321使用。逆变换和量化组件329可以基本上类似于缩放和逆变换组件229。根据示例,还将环内滤波器组件325中的环内滤波器应用于残差块和/或重建参考块。环内滤波器组件325可以基本上类似于滤波器控制分析组件227和环内滤波器组件225。环内滤波器组件325可以包括多个滤波器,如结合环内滤波器组件225所述。然后,将经过滤波的块存储在解码图像缓冲区组件323中,以作为参考块供运动补偿组件321使用。解码图像缓冲区组件323可以基本上类似于解码图像缓冲区组件223。
图4为示例性视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或执行操作方法100中的步骤111、步骤113、步骤115和/或步骤117。解码器400从编码器300等接收码流,并根据所述码流生成重建输出视频信号,以向终端用户显示。
所述码流由熵解码组件433接收。熵解码组件433用于执行熵解码方案,例如CAVLC、CABAC、SBAC、PIPE编码或其它熵编码技术。例如,熵解码组件433可以使用标头信息来提供上下文以解析编码在所述码流中作为码字的其它数据。上述解码信息包括对所述视频信号进行解码所需的任何信息,例如总体控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。将所述量化变换系数发送给逆变换和量化组件429,以重建为残差块。逆变换和量化组件429可以类似于逆变换和量化组件329。
将所述重建残差块和/或预测块发送给帧内预测组件417,以根据帧内预测操作重建为图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417使用预测模式来定位帧中的参考块,并将残差块应用于上述结果以重建帧内预测图像块。上述重建帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425发送给解码图像缓冲区组件423。解码图像缓冲区组件423和环内滤波器组件425可以基本上分别类似于解码图像缓冲区组件223和环内滤波器组件225。环内滤波器组件425对上述重建图像块、残差块和/或预测块进行滤波。这些信息存储在解码图像缓冲区组件423中。将来自解码图像缓冲区组件423的重建图像块发送给运动补偿组件421,以进行帧间预测。运动补偿组件421可以基本上类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块应用于上述结果以重建图像块。所得到的重建块还可以通过环内滤波器组件425发送给解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块。这些重建图像块可以通过分割信息重建为帧。这些帧还可以放置在一个序列中。所述序列作为重建输出视频信号输出到显示器。
图5为包括经编码视频序列的示例性码流500的示意图。例如,码流500可以由编解码系统200和/或编码器300生成,由编解码系统200和/或解码器400进行解码。又例如,码流500可以由编码器在方法100的步骤109中生成,由解码器在步骤111中使用。
码流500包括序列参数集(sequence parameter set,SPS)510、多个图像参数集(picture parameter sets,PPS)512、多个条带头514和图像数据520。SPS 510包括码流500中包括的视频序列中的所有图像共用的序列数据。这些数据可以包括图像大小、位深度、编码工具参数、码率限制条件等。PPS 512包括一个或多个对应图像特定的参数。因此,视频序列中的每个图像可以参考一个PPS 512。PPS 512可以表示对应图像中的分块可使用的编码工具、量化参数、偏移、图像专用编码工具参数(例如滤波器控制参数)等。条带头514包括图像中的一个或多个相应条带专用的参数。因此,视频序列中的每个条带可以参考条带头514。条带头514可以包括条带类型信息、图像顺序编号(picture order count,POC)、参考图像列表、预测权重、分块入口点、去块效应滤波器参数等。在一些示例中,条带可以称为分块组。在这种情况下,条带头514可以称为分块组头。
图像数据520包括根据帧间预测和/或帧内预测进行编码的视频数据以及对应的变换和量化残差数据。这些图像数据520根据编码之前对图像进行分割的分割模式进行排序。例如,视频序列被划分成图像521,图像521被划分成条带523,条带523可以进一步被划分成分块和/或CTU,CTU根据编码树进一步被划分成编码块,然后,编码块可以根据预测机制进行编码/解码。例如,图像521可以包括一个或多个条带523。图像521参考PPS 512,条带523参考条带头514。每个条带523可以包括一个或多个分块。每个条带523和/或图像521则可以包括多个CTU。
每个图像521可以包括与对应时刻的视频序列相关的整个视觉数据集。VR系统可以显示用户在图像521中选择的区域。这样,产生一种置身于图像521描绘的场景中的感觉。在码流500进行编码时,用户可能希望观看的区域是未知的。因此,图像521可以包括用户很有可能观看的每个可能区域。然而,在VR场景中,对应的编解码器可以根据用户只观看在图像521中选择的区域并丢弃图像521的其余部分这一假设进行设计。
每个条带523可以是由左上角CTU和右下角CTU定义的矩形。在一些示例中,条带523包括一系列分块和/或CTU,这些分块和/或CTU按照从左到右、从上到下的顺序进行光栅扫描。在其它示例中,条带523为矩形条带。矩形条带可能不会按照光栅扫描顺序遍历图像的整个宽度。相反,矩形条带可以包括图像521中根据CTU和/或分块行以及CTU和/或分块列定义的矩形和/或方形区域。条带523为解码器可以单独显示的最小单元。因此,图像521中的条带523可以分配给不同的子图像522以分别描绘图像521的期望区域。例如,在VR场景中,图像521可以包括整个可视数据范围,但是用户只能在头戴式显示器上观看包括一个或多个条带523的子图像522。
如上所述,视频编解码器可以假设要在解码器侧丢弃图像521的非选定区域。因此,可以从码流500中提取子码流501。提取到的子码流501可以包括选定的子图像522和相关语法。图像521的非选定区域可以以较低的分辨率发送或忽略,以提高编码效率。子图像522为图像521的选定区域,并且可以包括一个或多个相关条带524。条带524为条带523的子集,描绘图像521的与子图像522相关的选定区域。子码流501还包括SPS 510、PPS 512、条带头514和/或其中与子图522和条带524相关的子部分。
可以从码流500中提取子码流501。例如,使用解码器的用户可以观看一段视频。用户可以选择图像521的相应区域。解码器可以请求与用户当前正在观看的区域相关的后续子图像522。然后,编码器可以以较高的分辨率发送与选定区域相关的子图像522,并且以较低的分辨率发送图像521的其余区域。为了实现这种功能,解码器可以从码流500中提取529一个或多个子码流501。提取529包括将子图像522(包括子图像522中的条带524)存放在子码流501中。提取529还包括根据需要将相关SPS 510、PPS 512和条带头514存放在子码流中,以支持解码子图像522和条带524。
子码流501提取529存在的一个问题是,相对于图像521的寻址可能不同于相对于子图像522的寻址。下文详细描述寻址问题。在一些系统中,条带头514可能会被重写,以针对这些寻址差异进行调整。然而,子码流501可以包括许多条带头514(例如,每个图像521存在一个或两个数量级),而且这些条带头514针对每个用户进行动态重写。因此,以这种方式重写条带头514可能需要处理器做很多计算。本发明包括可以在不重写条带头514的情况下将条带头514提取529到子码流501中的机制。
在重写条带头514的系统中,条带523和条带524根据条带索引、分块索引、CTU索引等索引值进行寻址。这些索引的值按照光栅扫描顺序递增。为了解决寻址不匹配问题,所公开的实施例使用针对每个条带、分块和/或CTU定义的ID值。这些定义的ID可以是默认值和/或可以由编码器选择。所定义的ID可以统一按照光栅扫描顺序递增,但是这些定义的ID可以不是单调递增。因此,所定义的ID可以存在取值空隙,以便实现地址管理。例如,索引可以单调递增(例如0、1、2、3等),而定义的ID可以递增某个定义的倍数(例如0、10、20、30等)。编码器可以将映射关系535携带在码流500和子码流501中,这样解码器可以将所定义的ID映射到解码器能够解析的索引。
SPS 510和/或PPS 512等参数集可以包括ID标志531。ID标志531可以设置为指示映射关系535可用于将条带地址从基于图像521的位置映射到基于子图像522的位置。相应地,ID标志531可以设置为向解码器指示在码流500和子码流501中使用的公开机制。例如,ID标志531可以编码为显式分块ID标志、sps_subpic_id_present_flag或其它语法元素。ID标志531可以编码在码流500中,并提取529到子码流501中。
SPS 510和/或PPS 512等参数集还可以包括语法元素ID 532。ID 532可以指示图像521中的子图像522。例如,一些ID 532可以包括在码流500的PPS 512中。当提取529子码流501时,与要发送给解码器的一个或多个子图像522相关的一个或多个ID 532可以包括在子码流501的PPS 512中。在其它示例中,指向相关ID 532的标志(point)可以插入到子码流501的PPS 512中,使得解码器可以确定正确的ID 532。例如,ID 532可以编码为SubPicIdx、Tile_id_val[i]或指示子图像522边界的其它语法元素。
SPS 510和/或PPS 512等参数集还可以包括语法元素条带地址长度533。另外,条带头514可以包括条带523的条带地址534。条带地址534作为定义的ID值包括在内。条带地址534可以直接提取529到子码流501的条带头514中,无需修改以避免重写条带头514。例如,条带地址534可以编码为slice_address、tile_group_address或指示条带523边界和条带524边界的其它语法元素。条带地址长度533则可以用于解析条带地址534。例如,条带地址534包括编码器定义的值,因此编码为字节对齐字段之前的可变长度值。条带地址长度533可以指示对应条带地址534中包括的比特数,因此可以向解码器指示条带地址534的边界。因此,解码器可以使用条带地址长度533(例如来自PPS 512)来解析条带地址534。因此,条带头514不需要重写来调整条带地址534之后的字节对齐字段。例如,条带地址长度533可以编码为subpic_id_len_minus1、tile_id_len_minus1或指示条带地址长度533的其它语法元素。条带地址长度533可以包括在码流500的PPS 512中,然后提取529到子码流501的PPS 512中。
映射关系535还可以通过SPS 510、PPS 512等参数集和/或条带头514发送。映射关系535表示一种机制将条带地址从基于图像521的位置映射到基于子图像522的位置。映射关系535可以编码在码流500中,并提取529到子码流501的对应参数集中。例如,映射关系535可以编码为语法元素SliceSubpicToPicIdx[SubPicIdx][slice_address]、语法元素tileIdToIdx[Tile_group_address]或表示一种将条带地址从基于图像521的位置映射到基于子图像522的位置的机制的其它语法元素。
相应地,解码器可以读取子码流501,并获取ID标志531来确定条带524通过定义的地址而不是索引进行寻址。解码器可以获取ID 532来确定子码流501中包括的子图像522。解码器还可以获取一个或多个条带地址534以及条带地址长度533来解析一个或多个条带地址534。然后,解码器可以获取映射关系53来将一个或多个条带地址534映射到解码器能够解析的格式。最后,解码器可以在解码和显示子图像522和相应条带524时使用一个或多个条带地址534。
图6为分割用于编码的示例性图像600的示意图。例如,图像600可以由编解码系统200、编码器300和/或解码器400等编码在码流500中以及从码流500中解码。此外,图像600可以被分割成和/或包括在子码流501的子图像中,以实现方法100中的编码和解码。
图像600可以被分割成条带623,条带623可以基本上类似于条带523。条带623可以进一步被分割成分块625和CTU 627。在图6中,条带623用粗线表示,通过交替的白色背景和散列以图形的方式区分各条带623。分块625用虚线表示。位于条带623边界上的分块625边界显示为粗虚线,而不位于条带623边界上的分块625边界显示为细虚线。CTU 627边界显示为细实线,除由分块625边界或条带623边界覆盖的CTU 627边界之外。在该示例中,图像600包括9个条带623、24个分块625和216个CTU 627。
如图所示,条带623是具有边界的矩形,这些边界可以由包含在内的分块625和/或CTU 627限定。条带623可以不跨越图像600的整个宽度。分块625可以根据行和列在条带623中生成。CTU 627可以从分块625和/或条带623中分割出来,产生图像600的分割部分,这些分割部分可以细分成编码块,从而根据帧间预测和/或帧内预测进行编码。图像600可以编码在码流500等码流中。图像600的区域可以包括在子图像中并提取到子图像522和子码流501等子码流中。
图7为从图像700中提取的示例性子图像722的示意图。例如,图像700可以基本上类似于图像600。此外,图像700可以由编解码系统200和/或编码器300等编码在码流500中。子图像722可以由编解码系统200、编码器300、和/或解码器400等提取到子码流501中以及从子码流501中解码。此外,图像700可以用于实现方法100中的编码和解码。
如图所示,图像700包括左上角702和右下角704。子图像722包括图像700中的一个或多个条带723。当使用索引时,左上角702和右下角704分别与第一个索引和最后一个索引相关。然而,解码器只可以显示子图像722,而不能显示整个图像700。此外,第一条带723a的条带地址734可以不与左上角702对齐,第三条带723c的条带地址734可以不与右下角704对齐。因此,相对于子图像722的条带地址734与相对于图像700的条带地址734不对齐。本发明使用针对条带地址734定义的ID而不使用索引。解码器可以使用映射关系将条带地址734从基于图像700的位置映射到基于子图像722的位置。然后,解码器可以使用所映射的条带地址734将第一条带723a放置在解码器显示器的左上角702、将第三条带723c放置在解码器显示器的左下角704以及将第二条带723b放置在第一条带723a和第三条带723c之间。
如本文所述,本发明描述了对视频译码中的显式分块ID指示的改进,其中使用分块进行图像分割。上述技术说明以ITU-T和ISO/IEC的JVET开发的VVC为基础。然而,这些技术也适用于其它视频编解码规范。下面是本文描述的示例性实施例。
分块索引和分块ID的概念可以区分。分块的分块ID可以等于或不等于该分块的分块索引。当分块ID与分块索引不同时,分块ID和分块索引之间的映射关系可以在PPS中指示。分块ID可以用于指示分块组头中的分块组地址,而不是使用分块索引。这样,分块ID的值可以在从原始码流中提取分块组时保持相同。这一点可以通过更新分块组参考的PPS中的分块ID和分块索引之间的映射关系来实现。这种方法解决了分块索引的值可能会根据要提取的子图发生变化的问题。需要说明的是,在执行基于MCTS的子码流提取时,可能仍然需要重写其它参数集(例如除条带头之外的参数集)。
上述内容可以通过在指示分块信息的参数集中使用标志来实现。例如,PPS可以用作参数集。例如,explicit_tile_id_flag可以用于此目的。无论图像中的分块有多少,都可以指示explicit_tile_id_flag,而且explicit_tile_id_flag可以表示使用了显式分块指示。语法元素也可以用于表示分块ID值指示所使用的比特数量(例如分块索引和分块ID之间的映射关系)。这种语法元素还可以用于在分块组头中指示分块ID/地址。例如,语法元素tile_id_len_minus1可以用于此目的。当explicit_tile_id_flag等于0时(例如,当分块ID设置为分块索引时),tile_id_len_minus1可能不存在。当tile_id_len_minus1不存在时,可以推断tile_id_len_minus1的值等于Ceil(Log2(NumTilesInPic))的值。另一约束条件会要求作为MCTS子码流提取结果的码流可以包括针对激活PPS设置为1的explicit_tile_id_flag,除非子码流包括原始码流中的左上角分块。
在一个示例性实施例中,视频编码语法可以如下所述进行修改以实现本文描述的功能。示例性CTB光栅和分块扫描过程可以描述如下。列表TileId[ctbAddrTs](ctbAddrTs的取值范围为0~PicSizeInCtbsY–1,包括端值)表示分块扫描下的CTB地址到分块ID的转换,列表NumCtusInTile[tileIdx](tileIdx的取值范围为0~PicSizeInCtbsY–1,包括端值)表示分块索引到分块中的CTU数量的转换,两者推导如下:
列表NumCtusInTile[tileIdx](tileIdx的取值范围为0~PicSizeInCtbsY–1,包括端值)表示从分块索引到分块中的CTU数量的转换,可以推导如下:
用于一组NumTilesInPic个tileId值的集合TileIdToIdx[tileId]表示从分块ID到分块索引的转换,可以推导如下:
示例性图像参数集RBSP语法可以描述如下。
示例性分块组头语法可以描述如下。
示例性分块组数据语法可以描述如下。
示例性图像参数集RBSP语义可以描述如下。explicit_tile_id_flag设置为1,表示每个分块的分块ID为显式指示。explicit_tile_id_flag设置为0,表示分块ID不是显式指示。对于作为MCTS子码流提取结果的码流,explicit_tile_id_flag的值对于激活PPS可以设置为1,除非所得到的码流包括原始码流中的左上角分块。Tile_id_len_minus1+1表示用于表示参考PPS的分块组头中的语法元素tile_id_val[i]和语法元素tile_group_address的比特数。tile_id_len_minus1的取值范围可以为Ceil(Log2(NumTilesInPic)~15(包括端值)。当tile_id_len_minus1不存在时,可以推断tile_id_len_minus1的值等于Ceil(Log2(NumTilesInPic)。需要说明的是,在一些情况下,tile_id_len_minus1的值可以大于Ceil(Log2(NumTilesInPic)。这是因为当前码流可能是MCTS子码流提取的结果。此时,分块ID可以是原始码流中的分块索引,可以使用Ceil(Log2(OrgNumTilesInPic)个比特表示,其中,OrgNumTilesInPic为原始码流的NumTilesInPic,其大于当前码流的NumTilesInPic。tile_id_val[i]表示参考PPS的图像中的第i个分块的分块ID。tile_id_val[i]的长度为(tile_id_len_minus1+1)个比特。对于范围0~NumTilesInPic–1(包括端值)内的任意整数m和n,当m不等于n时,tile_id_val[m]可以不等于tile_id_val[n],当m小于n时,tile_id_val[m]可以小于tile_id_val[n]。
以下变量可以通过调用CTB光栅和分块扫描转换进行推导:列表ColWidth[i](i的取值范围为0~num_tile_columns_minus1,包括端值)表示第i个分块列的宽度,以CTB为单位;列表RowHeight[j](j的取值范围为0~num_tile_rows_minus1,包括端值)表示第j个分块行的高度,以CTB为单位;列表ColBd[i](i的取值范围为0~num_tile_columns_minus1+1,包括端值)表示第i个分块列边界的位置,以CTB为单位;列表RowBd[j](j的取值范围为0~num_tile_rows_minus1+1,包括端值)表示第j个分块行边界的位置,以CTB为单位;列表CtbAddrRsToTs[ctbAddrRs](ctbAddrRs的取值范围为0~PicSizeInCtbsY–1,包括端值)表示图像的CTB光栅扫描下的CTB地址到分块扫描下的CTB地址的转换;列表CtbAddrTsToRs[ctbAddrTs](ctbAddrTs的取值范围为0~PicSizeInCtbsY–1,包括端值)表示分块扫描下的CTB地址到图像的CTB光栅扫描下的CTB地址的转换;列表TileId[ctbAddrTs](ctbAddrTs的取值范围为0~PicSizeInCtbsY–1,包括端值)表示分块扫描下的CTB地址到分块ID的转换;列表NumCtusInTile[tileIdx](tileIdx的取值范围为0~PicSizeInCtbsY–1,包括端值)表示分块索引到分块中的CTU数量的转换;列表FirstCtbAddrTs[tileIdx](tileIdx的取值范围为0~NumTilesInPic–1,包括端值)表示分块ID到分块扫描下的分块中的第一个CTB的CTB地址的转换;用于一组NumTilesInPic个tileId值的集合TileIdToIdx[tileId]表示分块ID到分块索引的转换,列表FirstCtbAddrTs[tileIdx](tileIdx的取值范围为0~NumTilesInPic–1,包括端值)表示分块ID到分块扫描下的分块中的第一个CTB的CTB地址的转换;列表ColumnWidthInLumaSamples[i](i的取值范围为0~num_tile_columns_minus1,包括端值)表示第i个分块列的宽度,以亮度样本为单位;列表RowHeightInLumaSamples[j](j的取值范围为0~num_tile_rows_minus1,包括端值)表示第j个分块行的高度,以亮度样本为单位。
tile_group_address表示分块组中的第一个分块的分块ID。tile_group_address的长度为(tile_id_len_minus1+1)个比特。tile_group_address的取值范围可以为0~2tile_id_len_minus1+1–1(包括端值),tile_group_address的值可以不等于同一个编码图像内的任意其它编码分块组NAL单元的tile_group_address的值。
图8为示例性视频译码设备800的示意图。视频译码设备800适合于实现本文描述的公开示例/实施例。视频译码设备800包括下行端口820、上行端口850和/或收发单元(Tx/Rx)810。收发单元810包括发送器和/或接收器,用于通过网络在上行和/或下行进行数据通信。视频译码设备800还包括处理器830和存储器832。处理器830包括逻辑单元和/或中央处理器(central processing unit,CPU),以处理数据。存储器832用于存储所述数据。视频译码设备800还可以包括与上行端口850和/或下行端口820耦合的电组件、光电(optical-to-electrical,OE)组件、电光(electrical-to-optical,EO)组件,和/或无线通信组件,用于通过电通信网络、光通信网络或无线通信网络进行数据通信。视频译码设备800还可以包括输入和/或输出(input/output,I/O)设备860,用于与用户进行数据通信。I/O设备860可以包括输出设备,例如显示视频数据的显示器、输出音频数据的扬声器等。I/O设备860还可以包括键盘、鼠标、轨迹球等输入设备和/或与上述输出设备进行交互的对应接口。
处理器830通过硬件和软件实现。处理器830可以实现为一个或多个CPU芯片、一个或多个核(例如实现为多核处理器)、一个或多个现场可编程门阵列(field-programmablegate array,FPGA)、一个或多个专用集成电路(application specific integratedcircuit,ASIC)以及一个或多个数字信号处理器(digital signal processor,DSP)。处理器830与下行端口820、收发单元810、上行端口850和存储器832通信。处理器830包括译码模块814。译码模块814实现本文描述的公开实施例,例如方法100、方法900和/或方法1000,它们可以采用码流500、图像600和/或图像700。译码模块814还可以实现本文描述的任何其它方法/机制。此外,译码模块814可以实现编解码系统200、编码器300和/或解码器400。例如,当充当编码器时,译码模块814可以在PPS中指示标志、子图像ID和长度。译码模块814还可以对条带头中的条带地址进行编码。然后,译码模块814可以在不重写条带头的情况下从图像的码流中提取包括子图像的子码流。当充当解码器时,译码模块814可以读取标志来判断是否使用显式条带地址而不使用索引。译码模块814还可以从PPS中读取长度和子图像ID,从条带头中读取条带地址。然后,译码模块814可以使用长度来解析条带地址,使用子图像ID将条带地址从基于图像的地址映射到基于子图像的地址。因此,译码模块814可以确定条带的期望位置,不考虑选择的子图像,而且无需重写条带头来适应基于子图像的地址变化。因此,在对视频数据进行分割和编码时,译码模块814使视频译码设备800提供其它功能、避免某些处理来减少处理开销和/或提高编码效率。相应地,译码模块814改进了视频译码设备800的功能,同时解决了视频编码领域特有的问题。此外,译码模块814影响了视频译码设备800到不同状态的转换。或者,编码模块814可以实现为存储在存储器832中并由处理器830执行的指令(例如实现为存储在非瞬时性介质中的计算机程序产品)。
存储器832包括一种或多种存储器类型,例如磁盘、磁带机、固态硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、闪存、三态内容寻址存储器(ternary content-addressable memory,TCAM)、静态随机存取存储器(staticrandom-access memory,SRAM)等。存储器832可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。
图9为对图像(例如图像600)的码流(例如码流500)进行编码的示例性方法900的流程图,从而支持提取包括子图像(例如子图像522)的子码流(例如子码流501),无需通过显式地址指示重写条带头。方法900可以由编解码系统200、编码器300和/或视频译码设备800等编码器在执行方法100时执行。
方法900可以开始于:编码器接收包括多个图像的视频序列,并根据用户输入等确定将所述视频序列编码在码流中。所述视频序列在编码之前被分割成图像(picture/image)/帧以进一步分割。在步骤901中,将所述视频序列中的图像编码在码流中。所述图像可以包括多个条带,所述多个条带包括第一条带。所述第一条带可以是所述图像中的任意条带,但为了清楚论述,描述为第一条带。例如,所述第一条带的左上角可以不与所述图像的左上角对齐。
在步骤903中,将与所述条带相关的条带头编码在所述码流中。所述条带头包括所述第一条带的条带地址。所述条带地址可以包括定义值,例如由所述编码器选择的数值。这种值可以是任意值,但是可以按光栅扫描顺序(例如从左到右和从上到下)递增,以便支持一致的编码功能。所述条带地址可以不包括索引。在一些示例中,所述条带地址可以为语法元素slice_address。
在步骤905中,将PPS编码在所述码流中。可以将标识符和所述第一条带的条带地址长度编码在所述码流的PPS中。所述标识符可以为子图像标识符。所述条带地址长度可以表示所述条带地址中包括的比特数。例如,所述PPS中的条带地址长度可以包括足以从所述条带头(在步骤903中编码)中解析所述条带地址的数据。在一些示例中,所述长度可以为语法元素subpic_id_len_minus1。此外,所述标识符可以包括足以将所述条带地址从基于图像的位置映射到基于子图像的位置的数据。在一些示例中,所述标识符可以为语法元素subPicIdx。例如,多个基于子图像的标识符可以包括在所述PPS中。当提取子图像时,可以通过使用标志(flag)/指针(pointer)和/或去除未用的子图像ID等方式将对应的子图像ID指示在所述PPS中。在一些示例中,显式ID标志也可以编码在参数集中。所述标志可以向解码器指示映射关系可用于将所述条带地址从所述基于图像的位置映射到所述基于子图像的位置。在一些示例中,所述映射关系可以为语法元素SliceSubpicToPicIdx[SubPicIdx][slice_address]。相应地,所述标志可以表示所述条带地址不是索引。在一些示例中,所述标志可以为sps_subpic_id_present_flag。
在步骤907中,提取所述码流中的子码流。例如,提取所述码流中的子码流可以包括:根据所述第一条带的条带地址、所述条带地址长度和所述标识符,在不重写所述条带头的情况下提取所述第一条带。在特定的示例中,这种提取还可以包括提取所述图像中的子图像。此时,所述子图像包括所述第一条带。所述参数集也可以包括在所述子码流中。例如,所述子码流可以包括所述子图像、所述条带头、所述PPS、SPS等。
在步骤909中,存储所述子码流,以发送给解码器。所述子码流随后可以根据需要发送给所述解码器。
图10为对包括子图像(例如子图像522)的子码流(例如子码流501)进行解码的示例性方法1000的流程图,所述包括子图像的子码流是通过显式地址指示从图像(例如图像600)的码流(例如码流500)中提取出来的。方法1000可以由编解码系统200、解码器400和/或视频译码设备800等解码器在执行方法100时执行。
方法1000可以开始于:解码器开始接收从码流中提取的子码流,例如方法900的结果。在步骤1001中,接收所述子码流。所述子码流包括图像中的子图像。例如,在编码器侧编码的码流可以包括图像,所述编码器和/或条带器从所述码流中提取所述子码流,所述子码流包括子图像,所述子图像包括所述码流中的图像的一个或多个区域。接收到的子图像可以分割成多个条带。所述多个条带可以包括指定为第一条带的条带。所述第一条带可以是所述图像中的任意条带,但为了清楚论述,描述为第一条带。例如,所述第一条带的左上角可以不与所述图像的左上角对齐。所述子码流还包括PPS,其描述与所述图像相关的语法,因此也描述与所述子图像相关的语法。所述子码流还包括条带头,其描述与所述第一条带相关的语法。
在步骤1003中,解析PPS和/或SPS等参数集,得到显式ID标志。所述ID标志可以表示映射关系可用于将条带地址从基于图像的位置映射到基于子图像的位置。相应地,所述标志可以表示对应的条带地址包括定义值且不包括索引。在一些示例中,所述标志可以为sps_subpic_id_present_flag。根据ID标志的值,可以解析所述PPS,得到标识符和所述第一条带的条带地址长度。所述标识符可以为子图像标识符。所述条带地址长度可以表示对应条带地址中包括的比特数。例如,所述PPS中的条带地址长度可以包括足以从所述条带头解析条带地址的数据。在一些示例中,所述长度可以为语法元素subpic_id_len_minus1。此外,所述标识符可以包括足以将所述条带地址从基于图像的位置映射到基于子图像的位置的数据。在一些示例中,所述标识符可以为语法元素subPicIdx。例如,多个基于子图像的标识符可以包括在所述PPS中。当提取子图像时,可以通过使用标志(flag)/指针(pointer)和/或去除未用的子图像ID等方式将对应的子图像ID指示在所述PPS中。
在步骤1005中,根据所述标识符和所述条带地址长度,从所述条带头中确定所述第一条带的条带地址。例如,所述PPS中的长度可以用于确定比特边界,以从所述条带头中解析所述条带地址。所述标识符和所述条带地址则可以用于将所述条带地址从基于图像的位置映射到基于子图像的位置。例如,所述基于图像的位置和所述基于子图像的位置之间的所述映射关系可以用于将所述条带头与所述子图像对齐。这样,所述解码器可以解决由于编码器和/或条带器在不需要重写所述条带头的情况下进行子码流提取而导致的条带头与图像寻址方案之间的地址不匹配问题。在一些示例中,所述映射关系可以为语法元素SliceSubpicToPicIdx[SubPicIdx][slice_address]。
在步骤1007中,解码所述子码流,产生子图像的视频序列。所述子图像可以包括所述第一条带。相应地,还解码所述第一条带。然后,可以发送包括所述子图像(包括所述解码的第一条带)的视频序列,以通过头戴式显示器或其它显示设备进行显示。
图11为发送包括子图像(例如子图像522)的子码流(例如子码流501)的示例性系统1100的示意图。所述包括子图像的子码流是通过显式地址指示从图像(例如图像600)的码流(例如码流500)中提取出来的。系统1100可以由编解码系统200、编码器300、解码器400和/或视频译码设备800等编码器和解码器实现。此外,系统1100可以用于实现方法100、方法900和/或方法1000。
系统1100包括视频编码器1102。视频编码器1102包括编码模块1101,用于:将图像编码在码流中,其中,所述图像包括多个条带,所述多个条带包括第一条带;将条带头编码在所述码流中,其中,所述条带头包括所述第一条带的条带地址;将PPS编码在所述码流中,其中,所述PPS包括标识符和所述第一条带的条带地址长度。视频编码器1102还包括提取模块1103,用于根据所述第一条带的条带地址、所述条带地址长度和所述标识符,在不重写所述条带头的情况下提取所述码流中的子码流。视频编码器1102还包括存储模块1105,用于存储所述码流,以发送给解码器。视频编码器1102还包括发送模块1107,用于将所述子码流发送给所述解码器,其中,所述子码流包括所述条带头、所述PPS、所述第一条带和/或对应的子图像。视频编码器1102还可以用于执行方法900的任一步骤。
系统1100还包括视频解码器1110。视频解码器1110包括接收模块1111,用于接收子码流,其中,所述子码流包括图像中的子图像,其中,所述图像被分割成包括第一一条带的多个条带,与所述图像和所述子图像相关的PPS以及与所述第一条带相关的条带头。所述视频解码器1110还包括解析模块1113,用于解析所述PPS,得到标识符和所述第一条带的条带地址长度。视频解码器1110还包括确定模块1115,用于根据所述标识符和所述条带地址长度,从所述条带头中确定所述第一条带的条带地址。视频解码器1110还包括解码模块1117,用于解码所述子码流,产生包括所述第一条带的子图像的视频序列。视频解码器1110还包括发送模块1119,用于发送包括所述第一条带的子图像的视频序列用于显示。视频解码器1110还可以用于执行方法1000的任一步骤。
当第一组件与第二组件之间除了线、迹线或其它介质之外不存在中间组件时,第一组件与第二组件直接耦合。当第一组件与第二组件之间除了线、迹线或其它介质之外还存在中间组件时,第一组件与第二组件间接耦合。术语“耦合”及其变型包括直接耦合和间接耦合。除非另有说明,否则使用术语“约”意指包括后续数字±10%的范围。
还应理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应理解为仅仅是示例性的。同样地,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或组合。
虽然本发明提供了若干个实施例,但应理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明示例应被视为说明性而非限制性的,且本发明并不限于本文所给出的细节。例如,可以在另一系统中结合或集成各种元件或组件,或者可以省略或不实现某些特征。
此外,在不脱离本发明范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法进行组合或集成。变化、替换和变更的其它实例能够由本领域技术人员确定,并可在不脱离本文公开的精神和范围的情况下给出。

Claims (11)

1.一种在解码器中实现的方法,其特征在于,所述方法包括:
所述解码器的接收器接收码流,其中,所述码流包括图像中的子图像,其中,所述图像被分割成包括第一条带(slice)的多个条带,与所述图像和所述子图像相关的参数集,以及与所述第一条带相关的条带头;
所述解码器的处理器解析所述码流,以得到所述参数集中的第一参数,所述第一参数用于推导所述第一条带的条带地址长度,其中当所述第一参数不存在,所述条带地址长度被推断为等于Ceil(Log2(NumTilesInPic);
所述处理器根据所述条带地址长度,从所述条带头中确定所述第一条带的条带地址;
所述处理器根据所述条带地址,解码包含所述第一条带的所述子图像。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述处理器发送包括所述子图像的视频序列用于显示。
3.根据权利要求1或2所述的方法,其特征在于,所述条带地址长度表示所述条带地址中包括的比特数。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
所述解码器的处理器解析所述参数集,以得到标识符。
5.根据权利要求4所述的方法,其特征在于,所述确定所述第一条带的条带地址包括:
所述处理器使用所述参数集中的长度来确定比特边界,以从所述条带头中解析所述条带地址;
所述处理器使用所述标识符和所述条带地址将所述条带地址从基于图像的位置映射到基于子图像的位置。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:所述处理器解析参数集,得到标识符(identifier,ID)标志,其中,所述ID标志表示映射关系可用于将所述条带地址从所述基于图像的位置映射到所述基于子图像的位置。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述基于图像的位置和所述基于子图像的位置之间的所述映射关系使所述条带头与所述子图像对齐,不需要重写所述条带头。
8.根据权利要求1至6中任一项所述的方法,其特征在于,所述条带地址包括定义值但不包括索引。
9.一种视频译码设备,其特征在于,所述视频译码设备包括:
处理器、存储器、与所述处理器耦合的接收器以及与所述处理器耦合的发送器,其中,所述处理器、存储器、接收器和发送器用于执行根据权利要求1至8中任一项所述的方法。
10.一种非瞬时性计算机可读介质,其特征在于,所述非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品;所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令;在处理器执行所述计算机可执行指令时,使得所述视频译码设备执行根据权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有由一个或多个处理器执行的如权利要求1至8中任一项所述方法得到的视频码流。
CN202311864367.3A 2018-12-31 2019-12-31 视频译码中的显式地址指示 Pending CN117956190A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201862787110P 2018-12-31 2018-12-31
US62/787,110 2018-12-31
US201962883537P 2019-08-06 2019-08-06
US62/883,537 2019-08-06
CN201980087375.7A CN113243110A (zh) 2018-12-31 2019-12-31 视频译码中的显式地址指示
PCT/US2019/069052 WO2020142483A1 (en) 2018-12-31 2019-12-31 Explicit address signaling in video coding

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201980087375.7A Division CN113243110A (zh) 2018-12-31 2019-12-31 视频译码中的显式地址指示

Publications (1)

Publication Number Publication Date
CN117956190A true CN117956190A (zh) 2024-04-30

Family

ID=71407425

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311864367.3A Pending CN117956190A (zh) 2018-12-31 2019-12-31 视频译码中的显式地址指示
CN201980087375.7A Pending CN113243110A (zh) 2018-12-31 2019-12-31 视频译码中的显式地址指示

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201980087375.7A Pending CN113243110A (zh) 2018-12-31 2019-12-31 视频译码中的显式地址指示

Country Status (7)

Country Link
US (2) US11729384B2 (zh)
EP (2) EP4344204A3 (zh)
JP (2) JP7275284B2 (zh)
KR (2) KR20240042149A (zh)
CN (2) CN117956190A (zh)
MX (1) MX2021008000A (zh)
WO (1) WO2020142483A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240042149A (ko) * 2018-12-31 2024-04-01 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 인코더, 비디오 디코더 및 상응하는 방법들
CN111931587B (zh) * 2020-07-15 2022-10-25 重庆邮电大学 基于可解释时空自编码器的视频异常检测方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101690400B1 (ko) * 2010-07-21 2016-12-27 텔레폰악티에볼라겟엘엠에릭슨(펍) 픽쳐 코딩 및 디코딩
US9351005B2 (en) * 2012-09-24 2016-05-24 Qualcomm Incorporated Bitstream conformance test in video coding
BR112015004140A8 (pt) * 2012-09-26 2023-01-24 Velos Media Int Ltd Método de codificação de imagem, método de decodificação de imagem, aparelho de codificação de imagem, aparelho de decodificação de imagem e aparelho de codificação e decodificação de imagem
WO2016209209A1 (en) * 2015-06-23 2016-12-29 Hewlett-Packard Development Company, L.P. Image histogram compression end point pair selection based on a target color space range
EP3293981A1 (en) * 2016-09-08 2018-03-14 Koninklijke KPN N.V. Partial video decoding method, device and system
US11496761B2 (en) * 2018-06-30 2022-11-08 Sharp Kabushiki Kaisha Systems and methods for signaling picture types of pictures included in coded video
TWI792578B (zh) * 2018-07-09 2023-02-11 弗勞恩霍夫爾協會 用於經編碼圖像多樣化空間劃分之編碼器、解碼器、編碼方法及解碼方法
KR20240042149A (ko) * 2018-12-31 2024-04-01 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 인코더, 비디오 디코더 및 상응하는 방법들
JP7368477B2 (ja) * 2018-12-31 2023-10-24 華為技術有限公司 ビデオエンコーダ、ビデオデコーダ、及び対応する方法

Also Published As

Publication number Publication date
EP4344204A2 (en) 2024-03-27
US20210329236A1 (en) 2021-10-21
CN113243110A (zh) 2021-08-10
MX2021008000A (es) 2021-10-22
JP2023095946A (ja) 2023-07-06
EP4344204A3 (en) 2024-04-10
EP3903499A4 (en) 2022-03-23
JP2022516531A (ja) 2022-02-28
KR20240042149A (ko) 2024-04-01
EP3903499A1 (en) 2021-11-03
US20230344999A1 (en) 2023-10-26
KR102650289B1 (ko) 2024-03-21
WO2020142483A1 (en) 2020-07-09
JP7275284B2 (ja) 2023-05-17
US11729384B2 (en) 2023-08-15
KR20210104900A (ko) 2021-08-25

Similar Documents

Publication Publication Date Title
CN115550647B (zh) 视频译码中的子图像标识符指示
CN112703736B (zh) 视频译码方法,视频译码设备以及非瞬时性计算机可读介质
CN115442595B (zh) 一种码流解码的方法、解码器及存储码流的设备
CN114073073B (zh) 一种支持混合nal单元的编解码方法和编解码器
US11425377B2 (en) Arbitrary and wrap-around tile grouping
CN114650428B (zh) 使用标识符指示的视频译码码流提取的方法、设备和介质
US20230344999A1 (en) Explicit Address Signaling In Video Coding
KR20210105980A (ko) 비디오 인코더, 비디오 디코더 및 상응하는 방법들
CN114430908A (zh) 基于子图像的视频译码中每子图像单一条带的指示
CN115567713B (zh) 基于子图像的解码方法、解码设备和存储码流的设备
RU2792176C2 (ru) Кодер видео, декодер видео и соответствующие способы
CN114175638A (zh) 视频译码中的alf aps约束

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