视频编码方法和视频编码装置
技术领域
本发明涉及视频编码技术领域,具体涉及一种视频编码方法和视频编码装置。
背景技术
随着视频应用在很多领域的广泛普及,人们对视频分辨率的追求越来越高。对于视频压缩技术而言,如何能高效的实现更高分辨率的视频编码成为技术革新的方向之一。一般而言,视频图像的编码结构对象由大到小可分为:序列(Sequence)、图像组(GroupofPictures,GOP)、单帧图像(Picture)和条带(Slice)/分片(Tile)。当对以上编码结构对象进行视频编码时,要将该编码结构对象分成大小不等的编码单元,然后以编码单元为单位使用编码工具进行编码。
现有的方案如H.265、AVS2等视频编码标准限定了最大编码单元(MCU)的尺寸为64x64,同时也支持比64x64更小的编码单元,如32x32和16x16。然而,这对于1080p以下的视频图像是合理的,但对高分辨率视频图像编码存在一定的局限性。原因在于,对于超高清UHD,甚至4K图像中的大面积均匀纹理内容来说,限定64x64大小的编码单元并不能最大限度地涵盖同一视频对象,即纹理内容均匀统一的一个视频对象可能被分在了太多不同的编码单元中进行编码,这带来了一定的信息冗余,降低了编码效率。同时,由于高分辨率视频图像在编码时也不一定总是需要很大的编码单元,最大编码单元的尺寸大小应根据实际需求而定。为此,急需一种可自定义最大编码单元尺寸的方式,以提高高分辨率视频图像的编码效率及灵活性。
发明内容
有鉴于此,本发明实施例提供了一种视频编码方法和视频编码装置,解决了现有技术无法自定义最大编码单元尺寸的问题。
本发明一实施例提供的一种视频编码方法包括:
在编码结构对象的头信息中预设最大编码单元尺寸变量,其中,所述最大编码单元尺寸变量的不同预设值对应在所述编码结构对象中编码时的最大编码单元的不同尺寸。
进一步地,所述编码结构对象包括:单帧图像、多帧图像或图像序列;其中,在编码结构对象的头信息中预设最大编码单元尺寸变量包括:
在所述单帧图像、多帧图像或图像序列的头信息中预设最大编码单元尺寸变量。
进一步地,当所述最大编码单元尺寸变量取值为0时,则在所述单帧图像、多帧图像或图像序列中编码时最大编码单元的尺寸为64×64;以及
当所述最大编码单元尺寸变量取值为1时,则对应在所述单帧图像、多帧图像或图像序列中编码时的最大编码单元的尺寸为128×128。
进一步地,当在所述单帧、多帧图像或图像序列中编码时的当前编码单元的尺寸为N×N,且所述当前编码单元的尺寸等于所述最大编码单元尺寸时,帧间预测的最大块尺寸为N×N,帧内预测的最大块尺寸为(N/2)×(N/2),离散余弦变换的计算单元尺寸为(N/2)×(N/2),基于降噪去块效应的滤波方案的计算单元尺寸为N×N,其中N取2的整数次幂;以及
当在所述单帧、多帧图像或图像序列中编码时的当前编码单元的尺寸为N×N,且所述当前编码单元的尺寸小于所述最大编码单元尺寸时,帧间预测的最大块尺寸为N×N,帧内预测的最大块尺寸小于等于N×N,离散余弦变换的计算单元尺寸小于等于N×N,基于降噪去块效应的滤波方案的计算单元尺寸为N×N,其中N取2的整数次幂。
进一步地,所述视频编码方法支持感兴趣区域编码和/或可伸缩视频编码;其中,所述视频编码方法进一步包括:
在所述单帧、多帧图像或图像序列的头信息中预设在一感兴趣区域中编码时和/或在一可伸缩视频编码空域层中编码时的最大编码单元尺寸变量。
进一步地,所述可伸缩视频编码空域层为可伸缩视频编码空域增强层或基本层。
进一步地,所述编码结构对象包括:条带和/或分片;其中,在编码结构对象的头信息中预设最大编码单元尺寸变量包括:
在所述条带和/或分片的头信息中预设最大编码单元尺寸变量。
进一步地,进一步包括:根据所执行的编码标准和/或编码图像内容确定当前编码单元的尺寸,其中所述当前编码单元的尺寸小于等于所述最大编码单元的尺寸。
进一步地,所述所执行的编码标准为以下几项中的一种:SVAC、H.265、AVS2、H.264和H.263。
本发明一实施例还提供一种视频编码装置,包括:
预设单元,用于在编码结构对象的头信息中预设最大编码单元尺寸变量,其中,所述最大编码单元尺寸变量的不同预设值对应在所述编码结构对象中编码时的最大编码单元的不同尺寸。
本发明实施例提供的一种视频编码方法和视频编码装置,通过在编码结构对象的头信息中预设最大编码单元尺寸变量,可自定义编码结构对象在编码时最大编码单元的大小,从而使得高分辨率视频图像的最大编码单元不再局限于64×64;同时,随着视频图像分辨率的不断提高,还可以设置最大编码单元尺寸变量的更多预设值,以更好的适应高分辨率视频图像的编码需求,提高编码效率。
附图说明
图1所示为本发明一实施例提供的SVAC标准中的一个单帧图像的头信息内容示意图。
图2所示为本发明另一实施例提供的SVAC标准中的一个单帧图像的头信息内容示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种视频编码方法,在编码结构对象的头信息中预设最大编码单元尺寸变量,其中,最大编码单元尺寸变量的不同预设值对应在编码结构对象中编码时的最大编码单元的不同尺寸。例如,该最大编码单元尺寸变量可为头信息编码码流中的一段二进制数字,不同的变量预设值对应不同的二进制数值。但应当理解,在不同的编码标准中,编码结构对象的头信息具有不同的默认格式,因而在头信息中增设该最大编码单元尺寸变量的具体位置和形式需根据头信息的默认格式而定,本发明对该最大编码单元尺寸变量的具体设置位置和形式并不做限定。
这样当要对该编码结构对象进行编码时,便可将最大编码单元尺寸变量的预设值写入编码结构对象的头信息,在解码时便可从该编码结构对象的头信息中获取最大编码单元尺寸变量的预设值,并由此确定对应的最大编码单元的尺寸,从而实现了对最大编码单元尺寸的自定义,使得高分辨率视频图像的最大编码单元不再局限于64×64;同时,随着视频图像分辨率的不断提高,还可以设置最大编码单元尺寸变量的更多预设值,以更好的适应高分辨率视频图像的编码需求,提高编码效率。
应当理解,由于视频图像的编码结构对象由大到小可分为:图像序列、图像组(后面的描述中也可称为“多帧图像”)、单帧图像和条带/分片。最大编码单元尺寸所指的可以是对其中任一个编码结构对象进行编码时的编码单元的最大尺寸。
在本发明一实施例中,编码结构对象为单帧图像、多帧图像或图像序列,此时最大编码单元尺寸变量便预设在该单帧图像、多帧图像或图像序列的头信息中,最大编码单元尺寸变量的不同预设值对应在该单帧图像、多帧图像或图像序列中编码时的最大编码单元的不同尺寸。例如,当在单帧图像中最大编码单元尺寸变量取值为0时,则在单帧图像中编码时最大编码单元的尺寸为64×64;当最大编码单元尺寸变量取值为1时,则对应在单帧图像中编码时的最大编码单元的尺寸为128×128。应当理解,随着视频图像分辨率的不断提高,最大编码单元尺寸变量还可有更多预设值。例如,还可以预设最大编码单元尺寸变量取值为3,此时对应在编码结构对象中编码时的最大编码单元的尺寸为256×256。本发明对最大编码单元尺寸变量的取值范围不做限定。
在本发明一实施例中,当在单帧图像、多帧图像或图像序列中编码时的当前编码单元的尺寸为N×N时(N取2的整数次幂),且该当前编码单元的尺寸等于最大编码单元尺寸时,由于帧间预测是采用前一帧图像和/或后一帧图像中的块作为参考块进行预测编码,因而帧间预测的最大块尺寸可为N×N。而由于帧内预测是采用当前块的周边已知块作为参考块,为了保证当前帧图像中的所有块都能够利用参考块进行帧内预测,帧内预测的最大块尺寸可为(N/2)×(N/2)。相应地,离散余弦变换的计算单元尺寸可为(N/2)×(N/2),基于降噪去块效应的滤波方案的计算单元尺寸可为N×N。例如,当当前编码单元的尺寸为64×64,而MCU的默认尺寸也为64×64时,帧内预测的最大块尺寸则需要限制为32×32,离散余弦变换的计算单元尺寸也需要限制为32×32。
当在单帧、多帧图像或图像序列中编码时的当前编码单元的尺寸为N×N(N取2的整数次幂),且当前编码单元的尺寸小于最大编码单元尺寸时,帧间预测的最大块尺寸仍可为N×N,帧内预测的最大块尺寸小于等于N×N即可,相应地离散余弦变换的计算单元尺寸小于等于N×N即可,基于降噪去块效应的滤波方案的计算单元尺寸为N×N。
图1所示为本发明一实施例提供的SVAC标准中的一个单帧图像的头信息内容示意图。如图1所示,通过在该单帧图像的头信息中增加extended_sb_size_flag变量,实现了对该单帧图像中最大编码单元尺寸的自定义。当extended_sb_size_flag为0时,则sb(SVAC标准中最大编码单元的表示形式)大小为64x64;当extended_sb_size_flag为1时,则sb大小为128x128。
在本发明一实施例中,该视频编码方法支持感兴趣区域编码和可伸缩视频编码(SVC),为了实现对一个感兴趣区域内编码时最大编码单元尺寸的自定义,以及对一个SVC空域层内编码时最大编码单元尺寸的自定义,该视频编码方法进一步包括:在单帧图像、多帧图像或图像序列的头信息中预设在一感兴趣区域中编码时和/或在一可伸缩视频编码空域层中编码时的最大编码单元尺寸变量。
图2所示为本发明另一实施例提供的SVAC标准中的一个单帧图像的头信息内容示意图。如图2所示,在该单帧图像的头信息中增加了extended_roi_sb_size_flag,以及extended_svc_sb_size_flag。当要对一个感兴趣区域进行编码时,根据extended_roi_sb_size_flag的预设值便可获取在一个感兴趣区域内编码时最大编码单元的尺寸;当要对一个SVC空域层进行编码时,根据extended_svc_sb_size_flag的预设值便可获取在一个SVC空域层内编码时最大编码单元的尺寸。在进一步实施例中,考虑到svc编码情况下,不同空域层图像大小有可能完全不在一个量级,为了提高灵活性,预设了最大编码单元尺寸的可伸缩视频编码空域层可为可伸缩视频编码空域基本层或增强层。
在本发明一实施例中,编码结构对象还可以是条带和/或分片,此时最大编码单元尺寸变量预设在条带和/或分片的头信息中,最大编码单元尺寸变量的不同预设值对应在该条带和/或分片中编码时的最大编码单元的不同尺寸,从而实现对某一特定条带和/或分片进行编码时最大编码单元的自定义。
应当理解,对于一个视频图像序列而言,可以是对其中一个或同时对其中几个不同层级的编码结构对象预设最大编码单元变量,以实现更灵活的编码控制。例如,可以预设单帧图像的最大编码单元为128×128,同时设置该单帧图像中某个条带的最大编码单元为4×4;还可以不在单帧图像的头信息中预设最大编码单元尺寸变量,而仅在某些条带的头信息中预设最大编码单元尺寸为8×8。由此可见,通过在不同层次的编码结构对象的头信息中各自预设最大编码单元尺寸变量,可实现更为灵活的编码控制,并可根据视频编码的内容视频编码的效率。
还应当理解,上述最大编码单元尺寸指的是在一编码结构对象中进行编码时编码单元尺寸的最大值。在实际的编码过程中,当前编码单元的尺寸大小可根据所执行的编码标准和/或编码图像内容确定,但该当前编码单元的尺寸是小于等于最大编码单元的尺寸的。由此可见,预设最大编码单元尺寸仅是预设了编码单元尺寸的极限值,在实际的编码过程中可基于该最大编码单元尺寸进一步细分成当前编码单元的大小,具体细分的方式和策略与所执行的编码标准和/或编码图像内容有关,本发明对此同样不做限定。在本发明一实施例中,所执行的编码标准可为以下几项中的一种:SVAC、H.265、AVS2、H.264和H.263。
本发明一实施例还提供一种视频编码装置,包括:预设单元,用于在编码结构对象的头信息中预设最大编码单元尺寸变量,其中,最大编码单元尺寸变量的不同预设值对应在编码结构对象中编码时的最大编码单元的不同尺寸。
本发明的教导还可以实现为一种计算机可读存储介质的计算机程序产品,包括计算机程序代码,当计算机程序代码由处理器执行时,其使得处理器能够按照本发明实施方式的方法来实现如本文实施方式所述的视频编码方法。计算机存储介质可以为任何有形媒介,例如软盘、CD-ROM、DVD、硬盘驱动器、甚至网络介质等。
应当理解,虽然以上描述了本发明实施方式的一种实现形式可以是计算机程序产品,但是本发明的实施方式的方法或装置可以被依软件、硬件、或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的方法和设备可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的方法和装置可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
还应当理解,为了不模糊本发明的实施方式,说明书仅对一些关键、未必必要的技术和特征进行了描述,而可能未对一些本领域技术人员能够实现的特征做出说明。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。