CN110603811A - 视频编码***和方法中的残差变换和逆向变换 - Google Patents
视频编码***和方法中的残差变换和逆向变换 Download PDFInfo
- Publication number
- CN110603811A CN110603811A CN201780089945.7A CN201780089945A CN110603811A CN 110603811 A CN110603811 A CN 110603811A CN 201780089945 A CN201780089945 A CN 201780089945A CN 110603811 A CN110603811 A CN 110603811A
- Authority
- CN
- China
- Prior art keywords
- transform
- block size
- block
- horizontal
- vertical
- 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
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/12—Selection 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/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding 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/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/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- 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/176—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 block, e.g. a macroblock
-
- 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/96—Tree coding, e.g. quad-tree coding
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)
Abstract
确定未编码视频帧的最大编码块大小和最大变换块大小的变换块处理程序。所述未编码视频帧被划分成多个编码块,所述多个编码块包括第一编码块,所述第一编码块被划分成至少一个预测块和多个变换变换块。所述变换块的大小至少部分地取决于所述编码块和相应的预测块的大小。然后所述变换块被编码,由此生成编码位流的视频数据载荷。生成所述编码位流的帧头,所述帧头包含最大编码块大小标志和最大变换块大小标志。
Description
相关申请的交叉引用
本申请是先前于2015年3月31日提交的题为“Residual Transformation andInverse Transformation in Video Coding Systems and Methods(视频编码***和方法中的残差变换和逆向变换)”(代理人案卷号REAL-2015697)的第PCT/CN2015/075597号PCT申请的部分继续申请,该申请的全部公开内容在此并入本文用于所有目的。
技术领域
本公开涉及视频信号的编码和解码,更具体地,涉及用于损坏补偿的自适应滤波器的基于码本的编码和解码。
背景技术
诸如数字图像、语音/音频、图形和视频等的数字多媒体的出现大大改善了各种应用并且开放了全新的应用,因为它能相对容易地实现可靠的存储、通信、传输和搜索及访问内容。总体而言,数字多媒体的应用很多,包括娱乐、信息、医药、安全等的广泛应用,并以多种方式使社会受益。由诸如相机和麦克风的传感器捕获的多媒体通常是模拟的,并且脉冲编码调制(PCM)形式的数字化过程使其成为数字的。然而,在数字化之后,由于必须重新创建扬声器和/或TV显示器所需的模拟表示,因而所产生的数据量可能非常大。因此,大量数字多媒体内容的高效传送、存储或传输需要将其从原始PCM形式压缩成压缩表示。因此,已经发明了许多用于压缩多媒体的技术。多年来,视频压缩技术已经变得非常复杂,它们经常可以实现10到100之间的高压缩因子,同时保持通常类似于未压缩的数字视频的高度的心理视觉质量。
虽然迄今为止,视频压缩技术和科学方面取得了巨大的进步(表现为大量标准团体驱动的视频编码标准,诸如MPEG-1、MPEG-2、H.263、MPEG-4第2部分、MPEG-4AVC/H.264、MPEG-4SVC和MVC、以及业界驱动的专有标准,诸如Windows Media Video,RealVideo,On2VP等),但是消费者对更高品质、更高清晰度越来越渴望且现在的3D(立体声)视频(无论何时何地都能访问)必须通过诸如DVD/BD等的各种手段通过空中广播、线缆/卫星、有线和移动网络传送到一系列客户端装置,例如PC/笔记本电脑、TV、机顶盒、游戏机、便携式媒体播放器/装置、智能手机和可佩带式计算装置,从而更加需要更高级别的视频压缩。在标准团体驱动的标准中,最近由ISO MPEG在高效率视频编码(HVEC)开始的努力证明了这一点,其预计将结合ITU-T标准委员会多年在H.265视频压缩方面的探索性工作得到的新技术贡献和技术。
所有上述标准采用一般的帧间预测编码框架,其涉及通过补偿视频帧之间的运动来减少时间冗余。基本概念是通过使用块匹配方法去除相邻图片之间的时间依赖性。在编码过程开始时,未编码视频序列的每一帧被分组成下列三种类型之一:I型帧、P型帧和B型帧。I型帧被帧内编码。也就是说,仅使用来自帧本身的信息来对图片进行编码,并且不使用帧间运动补偿技术(尽管可以应用帧内运动补偿技术)。
使用帧间运动补偿技术对其它两种类型即P型和B型的帧进行编码。P图片与B图片之间的差异是用于运动补偿的参考图片的时间方向。P型图片利用来自先前图片(按显示顺序)的信息,而B型图片可以利用来自先前和未来图片(按显示顺序)的信息。
对于P型帧和B型帧,每个帧被划分成由每个像素的亮度和色度分量的系数表示的像素块,并且为每个块获得一个或多个运动矢量(因为B型图片可以利用来自未来和过去编码帧的信息,所以可以为每个块编码2个运动矢量)。运动矢量(MV)表示从当前块的位置到另一先前编码的帧(其可以是按显示顺序的过去帧或未来帧)中的相似块(分别被称为参考块和参考帧)的位置的空间位移。确定参考块与当前块之间的差异(如果有的话),并且获得残差(也称为“残差信号”)。因此,对于帧间编码帧的每个块,仅需要对残差和运动矢量进行编码,而不是对块的整体内容进行编码。通过去除视频序列的帧之间的这种时间冗余,可以压缩视频序列。
为了进一步压缩视频数据,在应用帧间或帧内预测技术之后,经常将残差信号的系数从空间域变换到频域(例如使用离散余弦变换(“DCT”)或离散正弦变换(“DST”))。对于自然发生的图像,例如通常构成人类可感知的视频序列的图像的类型,低频能量总是比高频能量强。因此,残差信号在频域中比在空间域中得到更好的能量压缩。在正向变换之后,系数和运动矢量可以在包化或以其它方式处理例如用于通过诸如因特网等的网络传输之前被量化和熵编码。
在解码器侧,应用逆向量化和逆向变换来恢复空间残差信号。这些是许多视频压缩标准中的典型变换/量化过程。然后可以执行反向预测过程以生成原始未编码视频序列的重新创建的版本。
在过去的标准中,编码中使用的块通常是16×16像素(在许多视频编码标准中称为宏块)。然而,由于这些标准的发展,帧大小越来越大,并且许多装置已经获得了比“高清”(或“HD”)帧大小更高的显示能力,例如2048×1530像素。因此,可能需要更大的块来高效地编码这些帧大小(例如,64×64像素)的运动矢量。因此,也希望增加从空间域变换到频域的残差信号块的大小。
附图说明
图1示出了根据一个实施方式的示例性视频编码/解码***。
图2示出了根据一个实施方式的示例性编码装置的若干组件。
图3示出了根据一个实施方式的示例性解码装置的若干组件。
图4示出了根据至少一个实施方式的示例性视频编码器的框图。
图5示出了根据至少一个实施方式的示例性视频解码器的框图。
图6示出了根据至少一个实施方式的变换块处理例程。
图7示出了根据至少一个实施方式的变换块大小选择子例程。
图8示出了根据至少一个实施方式的正向整数变换子例程。
图9示出了根据至少一个实施方式的二次变换子例程。
图10示出了根据至少一个实施方式的变换块恢复例程。
图11示出了根据至少一个实施方式的逆向整数变换子例程。
图12示出了根据至少一个实施方式的示例性递归编码块划分方案的示意图。
图13示出了根据至少一个实施方式的示例性编码块标引例程。
图14示出了根据至少一个实施方式的示例性编码块划分子例程。
图15a至图15c示出了根据至少一个实施方式的图11中示出的示例性递归编码块划分方案的应用的示意图。
图16示出了根据至少一个实施方式的替代的变换块处理例程。
图17示出了根据至少一个实施方式的替代的正向整数变换子例程。
具体实施方式
下面的详细描述主要在常规计算机组件的操作的过程和符号表示方面表示,常规计算机组件包括处理器、用于处理器的存储器存储装置、连接的显示装置和输入装置。此外,这些过程和操作可以利用异构分布式计算环境中的常规计算机组件,包括远程文件服务器、计算机服务器和存储器存储装置。这些常规分布式计算组件中的每个可由处理器经由通信网络访问。
短语“在一个实施方式中”、“在至少一个实施方式中”、“在各种实施方式中”、“在一些实施方式中”等在本文中可以重复使用。这样的短语不一定指代同一实施方式。术语“包括”、“具有”和“包含”是同义的,除非上下文另有规定。在上文总体上描述的典型“混合”视频编码方法的上下文中描述各种实施方式,因为它使用图片间/图片内预测和变换编码。
现在详细参考附图中所示的实施方式的描述。虽然结合附图和相关描述描述了实施方式,但是本领域普通技术人员将理解,在不偏离本公开的范围的情况下,替代和/或等效的实现可以代替所显示和所描述的特定实施方式,包含所有替代、修改和等同,不管是否明确地说明和/或描述。在各种替代的实施方式中,附加装置或所示装置的组合可以被添加或组合而不会限制本文公开的实施方式的范围。
示例性视频编码/解码***
图1示出了根据至少一个实施方式的示例性编码/解码***100。编码装置200(在图2中示出并在下面描述)和解码装置300(在图3中示出并在下面描述)与网络104进行数据通信。解码装置200可以通过直接数据连接(例如存储区域网络(“SAN”))、高速串行总线和/或经由其它合适的通信技术或经由网络104(如图1中的虚线所示)与未编码视频源108进行数据通信。类似地,编码装置300可以通过直接数据连接(例如,存储区域网络(“SAN”))、高速串行总线和/或经由其它合适的通信技术或经由网络104(如图1中的虚线所示)与任选的编码视频源112进行数据通信。在一些实施方式中,编码装置200、解码装置300、编码视频源112和/或未编码视频源108可以包括一个或多个复制的和/或分布式的物理或逻辑装置。在许多实施方式中,可以存在比所示出的更多的编码装置200、解码装置300、未编码视频源108和/或编码视频源112。
在各种实施方式中,编码装置200可以是通常能够通过网络104接受例如来自解码装置300的请求并相应地提供响应的联网计算装置。在各种实施方式中,解码装置300可以是诸如移动手机、手表、平视显示器或其它可佩带计算装置的具有形状因子的联网计算装置、专用媒体播放器、计算平板电脑、机动车辆音响主机、音频-视频点播(AVOD)***、专用媒体控制台、游戏装置、“机顶盒”、数字录像机、电视、或通用计算机。在各种实施方式中,网络104可以包括因特网、一个或多个局域网(“LAN”)、一个或多个广域网(“WAN”)、蜂窝数据网络和/或其它数据网络。在各个点,网络104可以是有线和/或无线网络。
示例性编码装置
参考图2,示出了示例性编码装置200的若干组件。在一些实施方式中,编码装置可以包括比图2所示更多的组件。然而,为了公开说明性的实施方式,不一定示出所有这些一般常规的组件。如图2所示,示例性编码装置200包括用于连接到网络(例如,网络104)的网络接口204。示例性编码装置200还包括处理单元208、存储器212、任选的用户输入214(例如,字母数字键盘、小键盘、鼠标或其它指示装置、触摸屏和/或麦克风)和任选的显示器216,全部通过总线220与网络接口204互连在一起。存储器212通常包括RAM、ROM和诸如盘驱动器、闪存等的永久大容量存储装置。
示例性编码装置200的存储器212存储操作***224以及用于多个软件服务的程序代码,例如软件实现的帧间视频编码器400(下面参考图4描述),其具有用于执行变换块处理例程600(下面参考图6描述)的指令。存储器212还可以存储视频数据文件(未示出),其可以表示音频/视频媒体作品(例如,电影和/或电视剧集)的未编码副本。这些和其它软件组件可以通过使用与诸如软盘、磁带、DVD/CD-ROM驱动器、USB驱动器、存储卡等非暂时计算机可读介质232相关联的驱动机构(未示出)被加载到编码装置200的存储器212中。
在操作中,操作***224管理编码装置200的硬件和其它软件资源,并且为诸如软件实现的帧间视频编码器400的软件应用提供常用服务。对于诸如经由网络接口204的网络通信、经由输入214接收数据、经由任选的显示器216输出数据以及为诸如软件实现的帧间视频编码器400的各种软件应用的分配存储器212的硬件功能,操作***224充当在编码装置上执行的软件与硬件之间的中介。
在一些实施方式中,编码装置200还可以包括用于与诸如高速串行总线等未编码视频源108通信的专用未编码视频接口236。在一些实施方式中,编码装置200可以经由网络接口204与未编码视频源108通信。在其它实施方式中,未编码视频源108可以驻留在存储器212或计算机可读介质232中。
虽然已经描述了总体上符合常规通用计算装置的示例性编码装置200,但是编码装置200可以是能够执行用于根据各种实施方式编码视频的指令(例如,示例性软件实现的视频编码器400、变换块处理例程600)的大量装置中的任一种,例如,视频记录装置、视频协处理器和/或加速器、个人计算机、游戏机、机顶盒、手持或可佩带式计算装置、智能手机或任何其它合适的装置。
作为示例,编码装置200可以进一步在点播媒体服务(未示出)中操作。在至少一个示例性实施方式中,点播媒体服务可以进一步是在线点播媒体商店中的操作的编码装置200,其在每个作品和/或每项订阅的基础上向用户提供诸如视频内容的媒体作品的数字副本。点播媒体服务可以从未编码视频源108获得这种媒体作品的数字副本。
示例性解码装置
参考图3,示出了示例性解码装置300的若干组件。在一些实施方式中,解码装置可以包括比图3所示更多的组件。然而,为了公开说明性的实施方式,不一定示出所有这些一般常规的组件。如图3所示,示例性解码装置300包括用于连接到网络(例如,网络104)的网络接口304。示例性解码装置300还包括处理单元308、存储器312、任选的用户输入314(例如,字母数字键盘、小键盘、鼠标或其它指示装置、触摸屏和/或麦克风)、任选的显示器316和任选的扬声器318,全部通过总线320与网络接口304互连在一起。存储器312通常包括RAM、ROM和诸如盘驱动器、闪存等的永久大容量存储装置。
示例性解码装置300的存储器312可以存储操作***324以及用于多个软件服务的程序代码,例如软件实现的视频解码器500(下面参考图5描述),其具有用于执行变换块恢复例程1000(下面参考图10描述)的指令。存储器312还可以存储视频数据文件(未示出),其可以表示音频/视频媒体作品(例如,电影和/或电视剧集)的编码副本。这些和其它软件组件可以使用与诸如软盘、磁带、DVD/CD-ROM驱动器、存储卡等非暂时计算机可读介质332相关联的驱动机构(未示出)被加载到解码装置300的存储器312中。
在操作中,操作***324管理解码装置300的硬件和其它软件资源,并且为诸如软件实现的视频解码器500的软件应用提供常用服务。对于诸如经由网络接口304的网络通信、经由输入314接收数据、经由任选的显示器316和/或任选的扬声器318输出数据以及分配存储器312的硬件功能,操作***324充当在编码装置上执行的软件与硬件之间的中介。
在一些实施方式中,解码装置300还可以包括任选的编码视频接口336,例如用于与诸如高速串行总线等的编码视频源116通信。在一些实施方式中,解码装置300可以经由网络接口304与编码视频源(例如,编码视频源116)通信。在其它实施方式中,编码视频源116可以驻留在存储器312或计算机可读介质332中。
虽然已经描述了总体上符合常规通用计算装置的示例性解码装置300,但是解码装置300可以是能够执行用于根据各种实施方式解码视频的指令(例如,示例性软件实现的视频解码器500、变换块恢复例程1000)的大量装置中的任一种,例如视频记录装置、视频协处理器和/或加速器、个人计算机、游戏机、机顶盒、手持或可佩带式计算装置、智能手机、或任何其它合适的装置。
作为示例,解码装置300可以与点播媒体服务协同操作。在至少一个示例性实施方式中,点播媒体服务可以在每个作品和/或每项订阅的基础上向用户操作的解码装置300提供诸如视频内容的媒体作品的数字副本。解码装置可以经由网络104经由例如解码装置200从未编码视频源108获得这种媒体作品的数字副本。
软件实现的帧间视频编码器
图4示出了根据至少一个实施方式的采用残差变换技术的软件实现的帧间视频编码器400(下文称为“编码器400”)的总体功能框图。按显示顺序的视频序列的一个或多个未编码视频帧(vidfrms)可以被提供给定序器404。
定序器404可以将预测编码图片类型(例如,I、P或B)指派给每个未编码视频帧,并且将帧序列或来自帧序列的帧组重新排序成用于运动预测目的的编码顺序(例如,I型帧后跟着P型帧、P型帧后跟着B型帧)。然后将有序的未编码视频帧(seqfrms)按编码顺序输入到块索引器408。
对于每个有序的未编码视频帧(seqfrms),块索引器408可以确定当前帧的最大编码块(“LCB”)大小(例如,64×64像素),并将未编码帧划分成编码块阵列(blks)。给定帧内的各个编码块的大小可以变化,例如从4×4像素到当前帧的LCB大小。
然后,每个编码块可以一次一个地输入到差分器412,并且可以与从先前编码的编码块生成的对应的预测信号块(pred)进行差分运算。为了生成预测块(pred),将编码块(cblk)也被提供给运动估计器416。在差分器412处的差分运算之后,变换器420(如下讨论的)可以将得到的残差块(res)正向变换为频域表示,从而得到变换系数块(tcof)。然后可以将变换系数块(tcof)发送给量化器424,得到量化系数块(qcf),然后可以将量化系数块(qcf)发送到熵编码器428和本地解码环路430。
在本地解码环路430的开始,逆向量化器432可以对变换系数块(tcof')进行去量化并将其传递给逆向变换器436以生成去量化的残差块(res')。在加法器440处,可以将来自运动补偿预测器442的预测块(pred)添加到去量化的残差块(res')以生成本地解码块(res)。然后可以将本地解码快(rec)发送到帧组装器和去块滤波处理器444,其减少块效应并组装恢复的帧(recd),恢复的帧(recd)可以用作运动估计器416和运动补偿预测器442的参考帧。
熵编码器428对量化的变换系数(qcf)、差分运动矢量(dmv)和其它数据进行编码,从而生成编码的视频位流448。对于未编码视频序列的每一帧,编码的视频位流448可以包括编码的图片数据(例如,编码的量化变换系数(qcf)和差分运动矢量(dmv))和编码的帧头(例如,语法信息,例如当前帧的LCB大小)。
正向整数变换程序
参考变换器420的功能,变换器接收每个编码块的亮度和色度值的残差值块,并将残差值块划分成一个或多个亮度和色度变换块。
在至少一个实施方式中,编码块被划分成根据当前编码块大小以及用于编码块的运动估计的预测块的大小来确定大小的变换块。例如,可以根据下面的表1所示的组合来指派变换块大小。变换器420还可以在当前帧的图片头中设置最大变换块大小标志。
表1
在编码块被划分成变换块之后,例如经由正向DCT变换操作,将变换块中的残差值从空间域转换为频域。在至少一个实施方式中,为了提高编码效率,获得变换块的残差值的整数等效并且可以执行正向整数DCT变换操作。为了进一步提高编码效率,在视频编码过程中使用单指令多数据(SIMD)指令架构可能是有利的。然而,SIMD指令架构的最常见实现需要16位的位宽。因此,在至少一个实施方式中,可以在一些正向变换操作之后对残差值执行位移操作(并且在解码器侧,在一些逆向变换操作之后对变换系数执行位移操作),以确保残差值和变换系数可以由16位整数表示。
在至少一个实施方式中,对于4×4变换块,变换器420可以根据下面的等式执行正向整数DCT变换操作:
其中是当前变换块的输入残差值矢量,是变换操作的输出矢量,并且T4×4是由下式给出的4×4正向整数变换矩阵:
在至少一个实施方式中,在8×8变换块的情况下,变换器420可以根据下面的等式执行正向整数DCT变换操作:
其中是当前变换块的输入残差矢量,是变换操作的输出矢量,并且T8×8是由下式给出的8×8正向整数变换矩阵:
在8×8正向整数DCT变换操作之后,为了保证16位操作,变换器420可以将变换系数的值向右位移2位。
在至少一个实施方式中,在16×16变换块的情况下,变换器420可以根据下面的等式执行正向整数DCT变换操作:
其中是当前变换块的输入残差矢量,是变换操作的输出矢量,并且T16×16是由下式给出的16×16正向整数变换矩阵:
其中t0、t1、t2...t14、t15在下面的表2中定义。
在16×16正向整数DCT变换操作之后,为了保证16位操作,变换器420可以将变换系数的值向右位移2位。
根据每个编码块的变换块的数量,可以通过对每个变换块的DC系数执行附加变换操作来进一步提高编码效率。DC系数被收集到DC整数变换块中,并且例如根据上述的正向整数DCT变换操作之一再次变换。这个过程称为二次变换。
软件实现的帧间解码器
图5示出了根据至少一个实施方式的且适用于诸如解码装置300的解码装置的相应的软件实现的帧间视频解码器500(下文称为“解码器500”)逆向残差变换技术的总体功能框图。解码器500可以与编码器400处的本地解码环路455类似地工作。
具体地,可以将待解码的编码的视频位流504提供给熵解码器508,熵解码器508可以解码出量化系数(qcf)、差分运动矢量(dmv)、伴随的消息数据包(msg数据)以及其它数据的块。量化系数块(qcf)然后可以由逆向量化器512逆向量化,从而得到去量化系数(tcof')。去量化系数(tcof')然后可以由逆向变换器516(如下所述)从频域中逆向变换,从而得到解码的残差块(res')。加法器520可以将通过使用相应的运动矢量(mv)获得的运动补偿预测块(pred)相加。所得到的解码视频(dv)可以在帧组装器和去块滤波处理器524中被去块滤波。在帧组装器和去块滤波处理器528的输出处的块(recd)形成视频序列的重建帧,其可以从解码器500输出并且还可以用作用于解码后续编码块的运动补偿预测器530的参考帧。
逆向整数变换程序
参考逆向变换器516的功能,逆向变换器从逆向量化器512获得去量化的16位整数变换系数块。逆向变换器516对从逆向量化器512获得的变换系数执行逆向整数DCT变换操作,以反转如上所述的由变换器420执行的正向整数DCT变换操作,并且恢复残差值。
如果当前编码块的变换系数已被二次变换,则逆向变换器执行逆二次变换程序,如下所述。在DC变换系数被逆向变换并插回其对应的变换块之后,逆向变换器执行逆向整数DCT变换操作。
例如,在至少一个实施方式中,对于与4×4变换块对应的16位整数变换系数的块,逆向变换器516可以根据下面的等式执行逆向整数DCT变换操作:
其中是量化变换系数矢量,是恢复的残差值矢量,并且是由下式给出的4×4逆向整数变换矩阵:
在4×4逆向整数DCT变换操作之后,为了保证16位操作,逆向变换器可以将所得的残差值的值向右位移5位。
在至少一个实施方式中,对于与8×8变换块对应的16位整数变换系数的块,逆向变换器516可以根据下面的等式执行逆向整数DCT变换操作:
其中是量化变换系数矢量,是恢复的残差值矢量,并且是8×8逆向整数变换矩阵,例如上述8×8正向整数变换矩阵T8x8的逆。
在8×8逆向整数DCT变换操作之后,为了保证16位操作,逆向变换器可以将所得到的残差值的值向右位移7位。
在至少一个实施方式中,对于与16×16变换块对应的16位整数变换系数的块,逆向变换器516可以根据下面的等式执行逆向整数DCT变换操作:其中是量化变换系数矢量,是恢复的残差值矢量,并且是16×16逆向整数变换矩阵,例如上述16×16正向整数变换矩阵T16x16的逆。
在16×16逆向整数DCT变换操作之后,为了保证16位操作,逆向变换器可以将所得到的残差值的值向右位移7位。
变换块处理例程
图6示出了适用于至少一个实施方式(例如,编码器400)的变换块处理例程600。本领域普通技术人员将认识到,并非编码过程中的所有事件都在图6中示出。相反,为了清楚起见,仅示出了与描述所示实施方式合理相关的那些步骤。
在执行框604处,变换块处理例程600获得正被编码的当前帧的整数残差值的编码块。然后变换块处理例程600将当前编码块的大小和在运动估计中使用的对应预测块的大小提供给变换块大小选择子例程700(下面参考图7描述),变换块大小选择子例程700返回当前编码块大小和预测块大小的当前组合的适当的色度和亮度变换块大小。
然后在执行框608处,变换框处理例程600根据上面由变换块大小选择子例程700返回的色度和亮度变换块大小,将当前编码块分离成一个或多个16位整数残差值变换块。
在开始环路框612处,依次处理当前编码块的每个变换块。
在判定框616处,如果当前变换块的每个残差值都具有零值,则在执行框620处,变换块处理例程600在当前变换块的变换块头中设置对应的变换块模式标志。
否则,在判定框616处,如果当前变换块的残差值中的一个或多个具有非零值,则变换块处理例程600调用正向整数变换子例程800(下面参考图8描述),正向整数变换子例程800返回16位整数变换系数的相应块。
在结束环路框624处,变换块处理例程600迭代回到开始环路框612以处理当前编码块的下一变换块(如果有的话)。
在判定框628处,如果当前编码块的变换块可以被二次变换,例如在当前编码块中存在16或64个变换块,则变换块处理例程600可以调用对当前编码块的变换块的DC整数变换系数执行附加变换操作的二次变换子例程900(下面参考图9进行描述),二次变换子例程900返回16位整数变换系数的相应的二次变换块。
在二次变换子例程900返回16位整数变换系数的二次变换块之后,或者再次参考判定框628,如果当前编码块不适合于二次变换,则变换块处理例程600在终止框699处结束当前编码块。
变换块大小选择子例程
图7示出了适用于至少一个实施方式(例如,变换块处理例程600)的变换块大小选择子例程700。
在执行框704处,变换块大小确定子例程700获得编码块大小和用于当前编码块的运动估计过程的预测块大小。
在判定框712处,如果当前编码块的编码块大小是8×8像素,则变换块大小确定子例程700进行到判定框716。
在判定框716处,如果当前编码块的预测块大小是8×8像素,则在执行框720处,变换块大小确定子例程700将当前编码块的亮度变换块大小设置为8×8亮度变换系数,并且在执行框724处,变换块大小确定子例程将当前编码块的色度变换块大小设置为4×4色度变换系数。然后,变换块大小确定子例程在返回框799处返回当前编码块的亮度变换块大小和色度变换块大小。
再次参考判定框716,如果当前编码块的预测块大小不是8×8像素,则在执行框728处,变换块大小确定子例程700将当前编码块的亮度变换块大小设置成4×4亮度变换系数。然后,变换块大小确定子例程700进行到执行框724。如上所述,在执行框724处,变换块大小确定子例程700将当前编码块的色度变换块大小设置为4×4色度变换系数。然后,变换块大小确定子例程在返回框799处返回当前编码块的亮度变换块大小和色度变换块大小。
再次参考判定框712,如果当前编码块的编码块大小不是8×8像素,则变换块大小确定子例程700进行到判定框736。
在判定框736处,如果当前编码块的编码块大小是16×16像素,则变换块大小确定子例程700进行到判定框740。
在判定框740处,如果当前编码块的预测块大小为16×16像素,则在执行框744处,变换块大小确定子例程700将当前编码块的亮度变换块大小设置为16×16亮度变换系数,然后在执行框748处,变换块大小确定子例程700将当前编码块的色度变换块大小设置为8×8色度变换系数。然后,变换块大小确定子例程700在返回框799处返回当前编码块的亮度变换块大小和色度变换块大小。
再次参考判定框740,如果当前编码块的预测块大小不是16×16像素,则变换块大小确定子例程700进行到执行框728。如上所述,在执行框728处,变换块大小确定子例程700将当前编码块的亮度变换块大小设置为4×4亮度变换系数。然后变换块大小确定子例程700执行到执行框724。如上所述,在执行框724处,变换块大小确定子例程700将当前编码块的色度变换块大小设置为4×4色度变换系数。然后变换块大小确定子例程在返回框799处返回当前编码块的亮度变换块大小和色度变换块大小。
再次参考判定框736,如果当前编码块的编码块大小不是16×16像素,则变换块大小确定子例程700进行到执行框744。如上所述,在执行框744处,变换块大小确定子例程700将当前编码块的亮度变换块大小设置为16×16亮度变换系数,然后在执行框748处,变换块大小确定子例程将当前编码块的色度变换大小设置为8×8色度变换系数。然后,变换块大小确定子例程在返回框799处返回当前编码块的亮度变换块大小和色度变换块大小。
正向整数变换子例程
图8示出了适用于至少一个实施方式(例如,下面参考图9描述的变换块处理例程600或二次变换子例程900)的正向整数变换子例程800。
在执行框804处,正向整数变换子例程例如从变换块处理例程600获得变换块。
在判定框808处,如果当前变换块是4×4整数变换系数块,则在执行框812处,正向整数变换子例程800执行4×4正向变换,例如上述的4×4正向整数变换操作。然后,正向整数变换子例程800在返回框899处返回经由4×4整数变换获得的变换系数。
再次参考判定框808,如果当前变换块不是4×4整数变换系数块,例如是8×8、16×16、32×32或64×64的整数变换系数块,则正向整数变换子例程800进行到判定框816。
在判定框816处,如果当前变换块是8×8整数变换系数块,则在执行框820处,正向整数变换子例程800执行8×8正向变换,例如上述的8×8正向整数变换操作。在执行框824处,正向整数变换子例程800对在执行框820处经由8×8整数变换得到的变换系数进行操作,将变换系数向右位移2次,以确保变换系数可以由不超过16位表示。正向整数变换子例程800在返回框899处返回位移变换系数。
再次参考判定框816,如果当前变换块不是8×8整数变换系数块(例如,如果它是16×16、32×32或64×64的整数变换系数块),则正向整数变换子例程800进行到判定框826。
在判定框826处,如果当前变换块是16×16整数变换系数块,则在执行框828处,正向整数变换子例程800执行16×16正向变换,例如上述的16×16正向整数变换操作。然后,正向整数变换子例程800进行到执行框824。如上所述,在执行框824处,正向整数变换变换子例程800对在执行框820处经由8×8整数变换得到的变换系数进行操作,将变换系数向右位移2次,以确保变换系数可以由不超过16位表示。然后正向整数变换子例程800在返回框899处返回位移变换系数。
再次参考判定框826,如果当前变换块大于16×16整数变换系数块,例如是32×32或64×64的整数变换系数块,则在执行框832处,正向整数变换子例程800执行大变换程序。正向整数变换子例程800在返回框899处返回大整数变换程序的结果。
二次变换子例程
图9示出了适用于至少一个实施方式(例如,变换块处理例程600)的二次变换子例程900。
在执行框904处,二次变换子例程900获得当前编码块的中间整数变换系数的变换块。
在执行框908处,二次变换子例程900从中间整数变换系数的每个块提取中间DC系数。
在执行框912处,二次变换子例程900生成中间DC系数的变换块。
然后二次变换子例程900将中间DC系数传递给正向变换子例程800,正向变换子例程800返回16位整数变换系数的(现在是二次变换的)块。
二次变换子例程900在返回框999处返回二次变换的变换块。
变换块恢复例程
图10示出了适用于至少一个实施方式(例如,解码器500)的变换块恢复例程1000。本领域普通技术人员将认识到,并非解码过程中的所有事件都在图10中示出。相反,为了清楚起见,仅示出了与描述变换块恢复例程1000合理相关的那些步骤。
在执行框1004处,变换块恢复例程1000例如从逆向量化器512获得去量化的变换系数块。
在执行框1005处,变换块恢复例程1000确定当前编码块的大小。
在执行框1006处,变换块恢复例程1000确定用于当前编码块的运动预测的预测块的大小。
在执行框1007处,变换块恢复例程1000查找当前编码块大小和用于当前编码块的运动预测的预测块的大小的相应组合的预测块的大小。
然后在执行框1008处,变换块恢复例程1000根据上面在执行框1007处获得的变换块大小将去量化的变换系数组装成一个或多个16位整数变换系数的变换块。
在判定框1028处,如果当前编码块的变换块未被二次变换,则变换块恢复例程1000进行到下面描述的开始环路框1032。如果当前编码块的变换块已被二次变换(例如,如果它们包括16位整数DC变换系数的二次变换块),则变换块恢复例程1000调用逆向整数变换子例程1100(下面参考图11描述),逆向整数变换子例程1100对当前编码块的变换块的16位整数变换系数的二次变换块执行初始逆向变换操作并返回相应的中间16位整数DC变换系数的块。
在执行框1030处,变换块恢复例程1000将适当的16位整数DC变换系数***相应的16位整数变换系数块中并进行到下面描述的开始环路框1032。
从开始环路框1032开始,变换块恢复例程1000依次处理16位整数变换系数的每个变换块。
在判定框1036处,如果在变换块头中设置了相应变换块的变换块模式标志,则在结束环路框1040处,变换块恢复例程1000迭代回到开始环路框1032以处理当前编码块的16位整数变换系数的下一个块(如果有的话)。
如果在判定框1036处在变换块头中没有设置相应的变换块的变换块模式标志,则变换块恢复例程1000调用逆向变换子例程1100(下面参考图11描述),逆向变换子例程1100返回恢复的残差值的块。
在结束环路框1040处,变换块恢复例程1000迭代回到开始环路框1032以处理当前编码块的下一变换块(如果有的话)。
变换块恢复例程1000在终止框1099处结束。
逆向整数变换子例程
图11示出了适用于至少一个实施方式(例如,变换块恢复例程1000)的逆向整数变换子例程1100。
在执行框1104处,逆向整数变换子例程1100例如从变换块恢复例程1000获得变换块。
在判定框1108处,如果变换块是4×4变换块,则在执行框1110处,逆向整数变换子例程1100执行4×4逆向整数变换,例如上述的4×4逆向整数变换。在执行框1112处,逆向整数变换子例程1100将所得到的整数变换系数向右位移5位。逆向整数变换子例程1100在返回框1199处返回位移的整数变换系数。
再次参考判定框1108,如果变换块不是4×4变换块,则逆向整数变换子例程1100进行到判定框1116。
在判定框1116处,如果变换块是8×8变换块,则在执行框1118处,逆向整数变换子例程1100执行8×8逆向整数变换,例如,上述的8×8逆向整数变换。在执行框1120处,逆向整数变换子例程1100将所得到的整数变换系数向右位移7位。逆向整数变换子例程1100在返回框1199处返回位移的整数变换系数。
再次参考判定框1116,如果变换块不是8×8变换块,则逆向整数变换子例程1100进行到判定框1126。
在判定框1126处,如果变换块是16×16变换块,则在执行框1127处,逆向整数变换子例程1100执行16×16逆向整数变换,例如上述的16×16逆向整数变换。在执行框1128处,逆向整数变换子例程1100将所得到的整数变换系数向右位移7位。逆向整数变换子例程1100在返回框1199处返回位移的整数变换系数。
再次参考判定框1126,如果变换块大于16×16变换块,例如32×32或64×64变换块,则在执行框1132处,逆向整数变换子例程1100执行大逆向变换程序。在返回框1199处,逆向整数变换子例程1100返回大整数变换程序的结果。
递归编码块划分方案
图11示出了根据各种实施方式的可以由编码器400实现的示例性递归编码块划分方案1100。在块索引器408处,在帧被划分成LCB大小的像素区域(下面称为编码块候选项(“CBC”))之后,每个LCB大小的编码块候选项(“LCBC”)可以根据递归编码块划分方案1100被划分成更小的CBC。这个过程可以递归地继续直到块索引器408确定(1)当前CBC适合编码(例如,因为当前CBC仅包含单个值的像素)或者(2)当前CBC是MCB大小的CBC(“MCBC”),不管哪个先发生都一样。然后块索引器408可以将当前CBC标引成适于编码的编码块。
正方形CBC 1102(例如,LCBC)可以沿垂直和水平横轴1104、1106中的一个或两个被划分。沿垂直横轴1104的划分将正方形CBC 1102垂直划分成第一长方形编码块结构1108,如长方形(1:2)CBC 1110和1112所示。沿水平横轴1106的划分将正方形CBC 1102水平划分成第二长方形编码结构1114,如长方形(2:1)CBC 1116和1118合起来所示。沿水平和垂直横轴1104、1106的划分将正方形CV 1102划分成四正方形编码块结构1120,如正方形CBC1122、1124、1126和1128合起来所示。
第一长方形编码块结构1108的长方形(1:2)CBC(例如,CBC 1112)可以沿水平横轴1130被划分成第一个两正方形编码块结构1132,如正方形CBC 1134和1136合起来所示。
第二长方形编码结构1114的长方形(2:1)CBC(例如,CBC 1118)可以被划分成第二个两正方形编码块结构1138,如正方形CBC 1140和1142合起来所示。
四正方形编码块结构1120、第一个两正方形编码块结构1132或第二个两正方形编码块结构1138的正方形CBC可以用与CBC 1102相同的方式沿编码块的垂直和水平横轴中的一个或两个被划分。
例如,64×64位LCBC大小的编码块可以被划分成2个32×64位编码块、2个64×32位编码块、或4个32×32位编码块。
在编码位流中,2位编码块划分标志可以用于指示当前编码块是否被进一步划分:
编码块划分标志值 | 划分类型 |
00 | 当前编码块不被划分 |
01 | 当前编码块被水平划分 |
10 | 当前编码块被垂直划分 |
11 | 当编码块被水平和垂直划分 |
编码块标引例程
图13示出了根据各种实施方式的可以由块索引器408执行的示例性编码块标引例程1300。
编码块标引例程1300可以在执行框1302处获得视频序列的帧。
编码块标引例程1300可以在执行框1304处将帧划分成LCBC。
在开始环路框1306处,编码块标引例程1300可以依次处理每个LCBC,例如从帧左上角的LCBC开始并且从左向右、从上到下进行。
在子例程框1400处,编码块标引例程1300调用编码块划分子例程1400(下面参考图14描述)。
在结束环路框1308处,编码块标引例程1300循环回到开始环路框1306以处理帧的下一LCBC(如果有的话)。
编码块标引例程1300在返回框1399处结束。
编码块划分子例程
图14示出了根据各种实施方式的例如可以由块索引器408执行的示例性编码块划分子例程1400。
子例程1400在执行框1402处获得CBC。编码块候选项可以从例程1400被提供或者递归地被提供,如下所述。
在判定框1404处,如果所获得的CBC是MCBC,则编码块划分子例程1400可以进行到执行框1406;否则编码块划分子例程1400可以进行到执行框1408。
编码块划分子例程1400可以在执行框1406处将所获得的CBC标引成编码块。然后编码块划分子例程1400在返回框1498处终止。
编码块划分子例程1400可以在执行框1408处测试当前CBC的编码适用性。例如,编码块划分子例程1400可以分析当前CBC的像素值并确定当前CBC是否仅包含单个值的像素、或者当前CBC是否与预定义的模式匹配。
在判定框1410处,如果当前CBC适于编码,则编码块划分子例程1400可以进行到执行框1406;否则编码块划分子例程1400可以进行到判定框1412。
在判定框1412处,如果当前CBC是正方形CBC,则编码块划分子例程1400可以进行到执行框1414;否则编码块划分子例程1400可以进行到执行框1416。
编码块划分子例程1400可以在执行框1414处选择当前正方形CBC的编码块划分结构。例如,编码块划分子例程1400可以在递归编码块划分方案1100(上面参考图11描述)的第一长方形编码块结构1108、第二长方形编码结构1114、或四正方形编码块结构1120中选择。
编码块划分子例程1400可以在执行框1416处根据递归编码块划分方案1100将当前CBC划分成2个或4个子CBC。
在开始环路框1418处,编码块划分子例程1400可以依次处理从执行框1416的划分程序得到的每个子CBC。
在子例程框1400处,编码块划分子例程1400可以用目前描述的方式调用自身来处理当前子CBC。
在结束环路框1420处,编码块划分子例程1400循环回到开始环路框1418以处理当前CBC的下一子CBC(如果有的话)。
然后编码块划分子例程1400可以在返回框1499处终止。
编码块树划分程序
图15a至图15c示出了将编码块划分方案1100应用于“根”LCBC 1502的示例性编码块树划分程序1500。图15a示出了由编码块树划分程序1500创建的各个子编码块1504至1554;图15b示出了作为树数据结构的编码块树划分程序,其显示了各个编码块1502至1554之间的父/子关系;图15c示出了图15b的位于根编码块1502的配置内的各自位置的各种“叶节点”子编码块(如虚线所指示的)。
假设64×64LCBC 1502不适于编码,那么它可以被划分成递归编码块划分方案1100(上面参考图11描述)的第一长方形编码块结构1108、第二长方形编码结构1114或四正方形编码块结构1120。对于此示例,假设64×64LCBC 1502被划分成2个32×64位子编码块候选项即32×64CBC 1504和32×64CBC 1506。然后这些子CBC中的每个可以依次被处理。
假设64×64LCBC 1502的第一子32×64CBC 1504不适于编码,则它可以被划分成2个子32×32编码块候选项即32×32CBC 1508和32×32CBC 1510。然后这些子CBC中的每个可以依次被处理。
假设32×64LCBC 1504的第一子32×32CBC 1508不适于编码,则它可以被划分成2个子16×32编码块候选项即16×32CBC 1512和16×32CBC 1514。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定32×32CBC 1508的第一子16×32CBC 1512适于编码;因此编码器400可以将16×32CBC 1512标引为编码块1513并返回父32×32CBC 1508以处理其下一子(如果有的话)。
编码器400可以确定32×32CBC 1508的第二子16×32CBC 1514不适于编码;它可以被划分成2个16×16CBC即16×16CBC 1516和16×16CBC 1518。然后这些子CBC中的每个可以依次被处理。
假设16×32CBC 1514的第一子16×16CBC 1516不适于编码,它可以被划分成2个8×16CBC即8×16CBC 1520和8×16CBC 1522。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定16×16CBC 1516的第一子8×16CBC 1520适于编码;因此编码器400可以将8×16CBC 1520标引为编码块1521并返回父16×16CBC 1516以处理其下一子(如果有的话)。
编码器400可以确定16×16CBC 1516的第二子8×16CBC 1522适于编码;因此编码器400可以将8×16CBC 1522标引为编码块1523并返回父16×16CBC 1516以处理其下一子(如果有的话)。
现在16×16CBC 1516的所有子已被处理,得到8×16编码块1521和1523的标引。因此,编码器400可以返回父16×32CBC 1514以处理其下一子(如果有的话)。
假设16×32CBC 1514的第二子16×16CBC 1518不适于编码,它可以被划分成2个8×16编码块候选项即8×16CBC 1524和8×16CBC 1526。然后这些子CBC中的每个可以依次被处理。
假设16×16CBC 1518的第一子8×16CBC 1524不适于编码,它可以被划分成2个8×8编码块候选项即8×8CBC 1528和8×8CBC 1530。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定8×16CBC 1524的第一子8×8CBC 1528适于编码;因此编码器400可以将8×8CBC 1528标引为编码块1529然后返回父8×16CBC 1524以处理其下一子(如果有的话)。
编码器400可以确定8×16CBC 1524的第二子8×8CBC 1530适于编码,因此编码器400可以将8×8CBC 1530标引为编码块1531然后返回父8×16CBC 1524以处理其下一子(如果有的话)。
现在8×16CBC 1524的所有子已被处理,得到8×8编码块1529和1531的标引。因此,编码器400返回父16×16CBC 1518以处理其下一子(如果有的话)。
编码器400可以确定16×16CBC 1518的第二子8×16CBC 1526适于编码;因此编码器400可以将8×16CBC 1526标引为编码块1527然后返回父16×16CBC 1518以处理其下一子(如果有的话)。
现在16×16CBC 1518的所有子已被处理,得到8×8编码块1529、1531和8×16编码块1527的标引。因此编码器400可以返回父16×32CBC 1514以处理其下一子(如果有的话)。
现在16×32CBC 1514的所有子已被处理,得到8×8编码块1529、1531、8×16编码块1521、1523、1527的标引。因此编码器400可以返回父32×32CBC 1508以处理其下一子(如果有的话)。
现在32×32CBC 1508的所有子已被处理,得到8×8编码块1529、1531、8×16编码块1521、1523、1527、16×32编码块1513的标引。因此编码器400可以返回父32×64CBC 1504以处理其下一子(如果有的话)。
编码器400可以确定32×64CBC 1504的第二子32×32CBC 1510适于编码;因此编码器400可以将32×32CBC 1510标引为编码块1511然后返回父32×64CBC 1504以处理其下一子(如果有的话)。
现在32×64CBC 1504的所有子已被处理,得到8×8编码块1529、1531、8×16编码块1521、1523、1527、16×32编码块1513和32×32编码块1511的标引。因此编码器400可以返回父、根64×64LCBC 1502以处理其下一子(如果有的话)。
假设64×64LCBC 1502的第二子32×64CBC 1506不适于编码,它可以被划分成2个32×32编码块候选项即32×32CBC 1532和32×32CBC 1534。然后这些子CBC中的每个可以依次被处理。
假设32×64LCBC 1506的第一子32×32CBC 1532不适于编码,它可以被划分成2个32×16编码块候选项即32×16CBC 1536和32×16CBC 1538。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定32×32CBC 1532的第一子32×16CBC 1536适于编码;因此编码器400可以将32×16CBC 1536标引成编码块1537然后返回父32×32CBC 1532以处理其下一子(如果有的话)。
编码器400可以确定32×32CBC 1532的第二子32×16CBC 1538适于编码;因此编码器400可以将32×16CBC 1538标引成编码块1539然后返回父32×32CBC 1532以处理其下一子(如果有的话)。
现在32×32CBC 1532的所有子已被处理,得到32×16编码块1537、1539的标引。因此编码器400可以返回父32×64CBC 1506以处理其下一子(如果有的话)。
假设32×64CBC 1506的第二子32×32CBC 1534不适于编码,它可以被划分成4个16×16编码块候选项即16×16CBC 1540、16×16CBC 1542、16×16CBC 1544和16×16CBC1546。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定32×32CBC 1534的第一子16×16CBC 1540适于编码;因此编码器400可以将16×16CBC 1540标引成编码块1541然后返回父32×32CBC 1534以处理其下一子(如果有的话)。
编码器400可以确定32×32CBC 1534的第二子16×16CBC 1542适于编码;因此编码器400可以将16×16CBC 1542标引成编码块1543然后返回父32×32CBC 1534以处理其下一子(如果有的话)。
假设32×32CB的第三子16×16CBC 1544不适于编码,它可以被划分成4个编码块候选项即8×8CBC 1548、8×8CBC 1550、8×8CBC 1552和8×8CBC 1554。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定16×16CBC 1544的第一子8×8CBC 1548适于编码;因此编码器400可以将8×8CBC 1548标引成编码块1549然后返回父16×16CBC 1544以处理其下一子(如果有的话)。
编码器400可以确定16×16CBC 1544的第二子8×8CBC 1550适于编码;因此编码器400可以将8×8CBC 1550标引成编码块1551然后返回父16×16CBC 1544以处理其下一子(如果有的话)。
编码器400可以确定16×16CBC 1544的第三子8×8CBC 1552适于编码;因此编码器400可以将8×8CBC 1552标引为编码块1553然后返回父16×16CBC 1544以处理其下一子(如果有的话)。
编码器400可以确定16×16CBC 1544的第四子8×8CBC 1554适于编码;因此编码器400可以将8×8CBC 1554标引为编码块1555然后返回父16×16CBC 1544以处理其下一子(如果有的话)。
现在16×16CBC 1544的所有子已被处理,得到8×8编码块1549、1551、1553和1555。因此编码器400可以返回父32×32CBC 1534以处理其下一子(如果有的话)。
编码器400可以确定32×32CBC 1534的第四子16×16CBC 1546适于编码;因此编码器400可以将16×16CBC 1546标引为编码块1547然后返回父32×32CBC 1534以处理其下一子(如果有的话)。
现在32×32CBC 1534的所有子已被处理,得到16×16编码块1541、1543、1547和8×8编码块1549、1551、1553、1555的标引。因此编码器400可以返回父32×64LCBC 1506以处理其下一子(如果有的话)。
现在32×64CBC 1506的所有子已被处理,得到32×16编码块1537、1539;16×16编码块1541、1543、1547和8×8编码块1549、1551、1553和1555。因此编码器400可以返回父、根64×64LCBC 1502以处理其下一子(如果有的话)。
现在64×64LCBC 1502的所有子已被处理,得到8×8编码块1529、1531、1549、1551、1553、1555;8×16编码块1521、1523、1527;16×32编码块1513、32×32编码块1511;32×16编码块1537、1539;以及16×16编码块1541、1543、1547的标引。因此编码器400可以进行到帧的下一LCBC(如果有的话)。
长方形编码块的替代的正向整数变换程序
参考变换器420的功能,变换器接收每个编码块的亮度和色度值的残差值块并将残差值块划分成一个或多个亮度和色度变换块。
在至少一个实施方式中,变换块大小等于预测块大小,其中预测块大小等于编码块大小。
在编码块的预测值被选择之后,得到预测块,预测块中的预测值可以例如经由正向变换操作从空间域转换为频域。在至少一个实施方式中,为了提高编码效率,获得变换块的残差值的整数等效并且可以执行正向整数变换操作。
对于长方形预测块,变换器420可以执行与上述变换类似的2个一维变换序列。然而,不同于正方形编码块,相同的变换矩阵可能不适于两种变换操作。例如,对于预测值的16×16块,在正向整数变换子例程800的执行框828(上面参考图8描述)中,变换器420可以:(1)例如使用T16x16对预测值的16×16块执行16点一维变换以获得中间变换系数的16×16块;(2)转置中间变换系数的16×16块以获得转置的中间变换系数的16×16块;以及(3)例如使用T16x16对转置的中间变换系数的16×16块执行相同的16点一维变换以获得变换系数的16×16块。
在长方形编码块(例如,16×8编码块)的情况下,变换器420可以:(1)使用T16x16对预测值的16×8块执行16点一维变换以获得中间变换系数的16×8块;(2)转置中间变换系数的16×8块以获得转置的中间变换系数的8×16块;以及(3)例如使用T8x8对转置的中间变换系数的8×16块执行8点一维变换以获得变换系数的8×16块。
类似地,对于8×16编码块,变换器420可以:(1)例如使用T8x8对预测值的8×16块执行8点一维变换以获得中间变换系数的8×16块;(2)转置中间变换系数的8×16块以获得转置的中间变换系数的16×8块;以及(2)例如使用T16x16对转置的中间变换系数的16×8块执行16点一维变换以获得变换系数的16×8块。
变换大小S可以根据下面的公式使用标记M在图片头中进行传送:
S=2M。
因此对于16点变换,S=16,标记M具有值4。
替代的变换块处理例程
图16示出了适用于上述的长方形编码块的替代的正向整数变换程序的示例性变换块处理变换块处理例程1600。
在执行框1602处,变换块处理例程1600可以例如从差分器412的输出获得预测值的块。
如上所述,在执行框1604处,变换块处理例程1600可以将预测值归一化为16位整数。
在子例程框1700A处,变换块处理例程1600可以调用正向整数变换子例程1700(下面参考图17描述)以对预测值的块执行2个正向整数变换操作中的第一个操作。子例程框1700A可以返回中间系数的块。
变换块处理例程1600可以在执行框1606处转置中间系数的块。
在子例程框1700B处,变换块处理例程1600可以再次调用正向整数变换子例程1700以对中间系数的块执行2个正向整数变换操作中的第二个操作。子例程框1700B可以返回变换系数的块。
在判定框1608处,如果位移操作(例如上述的位移操作)是必要的,则变换块处理例程1600可以进行到执行框1608;否则变换块处理例程1600可以进行到终止框1699。
变换块处理例程1600可以在执行框1608处对变换系数的块执行任意必要的位移操作。
变换块处理例程1600可以在终止框1699处返回变换系数的块。
替代的正向整数变换子例程
图17示出了适用于上述的变换块处理例程1600的示例性正向整数变换正向整数变换子例程1700。
正向整数变换子例程1700可以在执行框1702处获得16位整数系数的块(“系数块”)。根据当前的实施方式,系数块可以具有尺寸:64×64、64×32、32×64、32×32、32×16、16×32、16×16、16×8、8×16、8×8、8×4、4×8、或4×4。
在判定框1704处,如果系数块的行数大于16(例如,行数是64或32),则正向整数变换子例程1700可以进行到判定框1706;否则(例如,行数是16、8或4)正向整数变换子例程1700可以进行到判定框1708。
在判定框1706处,如果系数块的行数大于32(例如,行数是64),则正向整数变换子例程1700可以进行到执行框1710;否则(例如,行数是32)正向整数变换子例程1700可以进行到执行框1712。
正向整数变换子例程1700可以在执行框1710处对系数块执行64位正向整数变换操作。然后正向整数变换子例程1700可以通过在终止框1795处返回所得到的变换的系数块来结束。
正向整数变换子例程1700可以在执行框1712处对系数块执行32位正向整数变换操作。然后正向整数变换子例程1700可以通过在终止框1796处返回所得到的变换的系数块来结束。
返回判定框1708,如果系数块的行数小于8(例如,行数是4),则正向整数变换子例程1700可以进行到执行框1714;否则(例如,行数是8或16)正向整数变换子例程1700可以进行到判定框1716。
正向整数变换子例程1700可以在执行框1714处对系数块执行4位正向整数变换操作。然后正向整数变换子例程1700可以通过在终止框1797处返回所得到的变换的系数块来结束。
在判定框1716处,如果系数块的行数大于8(例如,行数是16),则正向整数变换子例程1700可以进行到执行框1718;否则(例如,行数是8)正向整数变换子例程1700可以进行到执行框1720。
正向整数变换子例程1700可以在执行框1718处对系数块执行16位正向整数变换操作。然后正向整数变换子例程1700可以通过在终止框1798处返回所得到的变换的系数块来结束。
正向整数变换子例程1700可以在执行框1720处对系数块执行8位正向整数变换操作。然后正向整数变换子例程1700可以通过在终止框1799处返回所得到的变换的系数块来结束。
尽管本文中已经示出和描述了具体的实施方式,但是本领域普通技术人员将理解在不偏离本公开的范围的前提下可以用替代和/或等效的实施方案来取代所示和所描述的具体的实施方式。本申请旨在涵盖本文中讨论的实施方式的任何修改或变化。
Claims (18)
1.一种用于对未编码视频帧编码以生成所述未编码视频帧的编码位流表示的视频编码器装置实现的方法,所述编码位流至少包括帧头和视频数据载荷,所述视频编码器装置实现的方法包括:
确定所述未编码视频帧的最大编码块大小,所述最大编码块大小由最大水平编码块尺寸和最大垂直编码块尺寸限定;
确定所述未编码视频帧的最大变换块大小,所述最大变换块大小由最大水平预测块尺寸和最大垂直预测块尺寸限定;
对所述未编码视频帧进行编码,由此生成所述编码位流的所述视频数据载荷;
生成所述编码位流的所述帧头,所述帧头包括最大编码块大小标志和最大变换块大小标志;以及
其中所述最大编码块大小标志被设置成0除非所述最大水平编码块尺寸和所述最大垂直编码块尺寸均等于64个像素,所述最大变换块大小标志被设置成0除非所述最大水平预测块尺寸和所述最大垂直预测块尺寸均大于16个像素。
2.如权利要求1所述的视频编码器装置实现的方法,还包括:在对所述未编码频帧进行编码之前,
将所述未编码视频帧划分成多个编码块,所述多个编码块包括第一编码块,所述第一编码块具有小于或等于所述最大水平编码块尺寸的水平编码块尺寸并具有小于或等于所述最大垂直编码块尺寸的垂直编码块尺寸;
将所述第一编码块划分成至少一个预测块,所述至少一个预测块中的每个具有水平预测块尺寸和垂直预测块尺寸;
将所述第一编码块划分成多个变换块,所述多个变换块包括第一变换块,所述第一变换块具有小于或等于所述最大水平预测块尺寸的水平变换块尺寸并具有小于或等于所述最大垂直预测块尺寸的垂直变换块尺寸;以及
其中所述水平变换块尺寸和所述垂直变换块尺寸至少部分地取决于所述水平编码块尺寸、所述垂直编码块尺寸、所述水平预测块尺寸和所述垂直预测块尺寸。
3.如权利要求2所述的视频编码器装置实现的方法,所述多个变换块中的每个包括变换系数集,所述视频编码器装置实现的方法还包括:对于所述多个变换块中的每个,在变换块头中设置相应的变换块模式标志,其中如果所述变换系数集包括具有非零值的至少一个变换系数,那么所述相应的变换块模式标志被赋予第一标志值,否则所述相应的变换模式标志被赋予第二标志值。
4.如权利要求3所述的视频编码器装置实现的方法,其中所述多个变换块中的每个变换块的所述相应的变换块模式标志按光栅扫描顺序在所述变换块头中列出。
5.如权利要求2所述的视频编码器装置实现的方法,还包括在所述未编码视频帧的编码期间,确定所述水平变换块尺寸和所述垂直变换块尺寸均等于4个像素,并因此:
经由第一变换从所述第一变换块获得第一变换系数集;
通过将所述第一变换系数集中的每个变换系数向右位移5位,从所述第一变换系数集获得第二变换系数集;以及
经由第二变换从所述第二变换系数集获得第三变换系数集。
6.如权利要求2所述的视频编码器装置实现的方法,还包括在所述未编码视频帧的编码期间确定所述水平变换块尺寸和所述垂直变换块尺寸均等于8个像素,并因此:
经由第一变换从所述第一变换块获得第一变换系数集;
通过将所述第一变换系数集中的每个变换系数向右位移2位,从所述第一变换系数集获得第二变换系数集;
经由第二变换从所述第二变换系数集获得第三变换系数集;以及
通过将所述第三变换系数集中的每个变换系数向右位移2位,从所述第三变换系数集获得第四变换系数集。
7.如权利要求6所述的视频编码器装置实现的方法,其中所述第一变换和所述第二变换由等式y=T_8x8*x表示,T_8×8由下式表示:
8.如权利要求2所述的视频编码器装置实现的方法,还包括在所述未编码视频帧的编码期间确定所述水平变换块尺寸和所述垂直变换块尺寸均等于16个像素,并因此:
经由第一变换从所述第一变换块获得第一变换系数集;
通过将所述第一变换系数集中的每个变换系数向右位移2位,从所述第一变换系数集获得第二变换系数集;
经由第二变换从所述变换系数集获得第三变换系数集;以及
通过将所述第三变换系数集中的每个变换系数向右位移2位,从所述第三变换系数集获得第四变换系数集。
9.如权利要求8所述的视频编码器装置实现的方法,其中所述第一变换和所述第二变换由等式y=T_16x16*x表示,T_16x16是具有系数t0......t15的矩阵:
其中t0......t15被定义为:
。
10.如权利要求2所述的视频编码器装置实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的亮度特性相关,其中当所述水平编码块尺寸、所述垂直编码块尺寸、所述水平预测块尺寸和所述垂直预测块尺寸均等于8个像素时,所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置成等于8个像素。
11.如权利要求2所述的视频编码器装置实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的亮度特性相关,其中当所述水平编码块尺寸和所述垂直编码块尺寸均等于8个像素并且所述水平预测块尺寸和所述垂直预测块尺寸不是均等于8个像素时,所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置为等于4个像素。
12.如权利要求2所述的视频编码器装置实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的亮度特性相关,其中如果所述水平编码块尺寸、所述垂直编码块尺寸、所述水平预测块尺寸和所述垂直预测块尺寸均等于16个像素,则所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置为等于16个像素。
13.如权利要求2所述的视频编码器装置实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的亮度特性相关,其中当所述水平编码块尺寸和所述垂直编码块尺寸均等于16个像素并且所述水平预测块尺寸和所述垂直预测块尺寸不是均等于16个像素时,所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置为4个像素。
14.如权利要求2所述的视频编码器装置实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的亮度特性相关,其中当所述水平编码块尺寸和所述垂直编码块尺寸均大于31个像素时,所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置为等于16个像素。
15.如权利要求2所述的视频编码器装置实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的色度特性相关,其中当所述水平编码块尺寸和所述垂直编码块尺寸均等于8个像素时,所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置为等于4个像素。
16.如权利要求2所述的视频编码器实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的色度特性相关,其中当所述水平编码块尺寸、所述垂直编码块尺寸、所述水平预测块尺寸和所述垂直预测块尺寸均等于16个像素时,所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置为等于8个像素。
17.如权利要求2所述的视频编码器装置实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的色度特性相关,其中当所述水平编码块尺寸和所述垂直编码块尺寸均等于16个像素并且所述水平预测块尺寸和所述垂直预测块尺寸不是均等于16个像素时,所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置为等于4个像素。
18.如权利要求2所述的视频编码器装置实现的方法,所述第一变换块包括变换系数集,每个变换系数与所述未编码视频帧的像素的色度特性相关,其中当所述水平编码块尺寸和所述垂直编码块尺寸均大于31个像素时,所述视频编码器装置实现的方法还包括将所述水平变换块尺寸和所述垂直变换块尺寸均设置为等于8个像素。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/074593 WO2018152750A1 (en) | 2017-02-23 | 2017-02-23 | Residual transformation and inverse transformation in video coding systems and methods |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110603811A true CN110603811A (zh) | 2019-12-20 |
Family
ID=63252881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780089945.7A Pending CN110603811A (zh) | 2017-02-23 | 2017-02-23 | 视频编码***和方法中的残差变换和逆向变换 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190379890A1 (zh) |
EP (1) | EP3586508A4 (zh) |
CN (1) | CN110603811A (zh) |
WO (1) | WO2018152750A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111586416A (zh) * | 2020-06-02 | 2020-08-25 | 浙江大华技术股份有限公司 | 视频编码方法、装置、编码器及存储装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2020203330B2 (en) * | 2020-05-21 | 2022-12-01 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding a block of video samples |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140133768A1 (en) * | 2012-11-13 | 2014-05-15 | Hon Hai Precision Industry Co., Ltd. | Electronic device and method for splitting image |
CN105960803A (zh) * | 2013-12-30 | 2016-09-21 | 谷歌公司 | 递归块分区 |
WO2016154928A1 (en) * | 2015-03-31 | 2016-10-06 | Realnetworks, Inc. | Residual transformation and inverse transformation in video coding systems and methods |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110317762A1 (en) * | 2010-06-29 | 2011-12-29 | Texas Instruments Incorporated | Video encoder and packetizer with improved bandwidth utilization |
US9788019B2 (en) * | 2011-03-09 | 2017-10-10 | Hfi Innovation Inc. | Method and apparatus of transform unit partition with reduced complexity |
US9749645B2 (en) * | 2012-06-22 | 2017-08-29 | Microsoft Technology Licensing, Llc | Coded-block-flag coding and derivation |
EP3278563A4 (en) * | 2015-03-31 | 2018-10-31 | RealNetworks, Inc. | Accompanying message data inclusion in compressed video bitsreams systems and methods |
-
2017
- 2017-02-23 CN CN201780089945.7A patent/CN110603811A/zh active Pending
- 2017-02-23 US US16/488,220 patent/US20190379890A1/en not_active Abandoned
- 2017-02-23 WO PCT/CN2017/074593 patent/WO2018152750A1/en unknown
- 2017-02-23 EP EP17897893.8A patent/EP3586508A4/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140133768A1 (en) * | 2012-11-13 | 2014-05-15 | Hon Hai Precision Industry Co., Ltd. | Electronic device and method for splitting image |
CN105960803A (zh) * | 2013-12-30 | 2016-09-21 | 谷歌公司 | 递归块分区 |
WO2016154928A1 (en) * | 2015-03-31 | 2016-10-06 | Realnetworks, Inc. | Residual transformation and inverse transformation in video coding systems and methods |
Non-Patent Citations (1)
Title |
---|
YANG FU-JHONG: "An Efficient Quadtree-based block truncation coding for digital image compression", 《IEEE》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111586416A (zh) * | 2020-06-02 | 2020-08-25 | 浙江大华技术股份有限公司 | 视频编码方法、装置、编码器及存储装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3586508A1 (en) | 2020-01-01 |
WO2018152750A1 (en) | 2018-08-30 |
EP3586508A4 (en) | 2020-08-12 |
US20190379890A1 (en) | 2019-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107637078B (zh) | 整数变换系数的视频译码***和方法 | |
Bankoski et al. | Technical overview of VP8, an open source video codec for the web | |
US10735729B2 (en) | Residual transformation and inverse transformation in video coding systems and methods | |
US20120263225A1 (en) | Apparatus and method for encoding moving picture | |
US20190268619A1 (en) | Motion vector selection and prediction in video coding systems and methods | |
CN108353192B (zh) | 视频处理***和方法中的分层去块滤波 | |
WO2018152749A1 (en) | Coding block bitstream structure and syntax in video coding systems and methods | |
CN110603811A (zh) | 视频编码***和方法中的残差变换和逆向变换 | |
US10887589B2 (en) | Block size determination for video coding systems and methods | |
US10652569B2 (en) | Motion vector selection and prediction in video coding systems and methods | |
JP6748657B2 (ja) | 圧縮ビデオビットストリームに付属メッセージデータを含めるシステムおよび方法 | |
CN112534811A (zh) | 视频编码中的帧内图片预测***和方法 | |
CN110998661A (zh) | 视频编码***和方法中的压缩编码块头 | |
WO2020248099A1 (en) | Perceptual adaptive quantization and rounding offset with piece-wise mapping function |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20191220 |
|
WD01 | Invention patent application deemed withdrawn after publication |