视频编码方法和装置与流程

文档序号:12927060阅读:186来源:国知局
视频编码方法和装置与流程
本发明涉及图像处理技术领域,具体涉及视频编码方法和装置。

背景技术:
随着光电采集技术的发展以及不断增长的高清数字视频需求,视频数据量越来越大,有限异构的传输带宽、多样化的视频应用不断地对视频编码效率提出了更高的需求,高性能视频编码(HEVC,HighEfficientVideoCoding)标准的制定工作因需启动。HEVC标准仍然采用混合视频编码框架,主要要求采用编码效率更高的编码工具,例如基于编码单元(CU,CodingUnit)/预测单元(PU,PredictionUnit)/变换单元(TU,TransformUnit)的四分之一编码结构、自适应环路滤波和增强的帧内预测技术和基于率失真优化(RDO,RateDistortionOptimum)的合并(Merge)编码技术等等。研究发现,HEVC标准的码率相比于H.264标准可节约40-50%。然而由于采用复杂技术,HEVC的计算复杂度相比H.264增加了5倍以上。基于HEVC标准的视频编码产业化充满了契机和挑战,降低基于HEVC标准的视频编码复杂度变得非常有意义。

技术实现要素:
本发明实施例提供一种视频编码方法和装置,以期降低基于HEVC标准的视频编码复杂度。本发明实施例第一方面提供一种视频编码方法,包括:确定与第一编码单元相邻的N个编码单元的运动矢量;获得所述N个编码单元的运动矢量分别对应的率失真代价;确定所述第一率失真代价和第二率失真代价的相对关系是否符合预设规则,其中,所述第一率失真代价为所述N个编码单元的运动矢量分别对应的率失真代价中最小的,所述第二率失真代价为所述第一编码单元在参考帧中进行运动估计得到的最小率失真代价;若所述相对关系符合预设规则,则按照合并编码方式对所述第一编码单元进行编码。结合第一方面,在第一种可能的实施方式中,所述确定所述第一率失真代价和第二率失真代价的相对关系是否符合预设规则,包括:将第二率失真代价乘以比较权重得到第三值,其中,所述比较权重随着量化参数的增大而增大;其中,若所述第一简化率失真代价小于所述第三值,确定所述第一率失真代价与第二率失真代价的相对关系满足预设规则;若所述第一率失真代价大于所述第三值,则确定所述第一率失真代价与第二率失真代价的相对关系不满足预设规则;若所述第一率失真代价等于所述第三值,确定所述第一率失真代价与第二率失真代价的相对关系满足或不满足预设规则。结合第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述比较权重和量化参数相关。结合第一方面的第二种可能的实施方式,在第三种可能的实施方式中,Weight=1+(QP-25.0)/a;其中,所述a的取值范围为[90,120],所述QP表示量化参数,所述Weight表示所述比较权重。结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式,在第四种可能的实施方式中,所述按照合并编码方式对所述第一编码单元进行编码,包括:若所述第一率失真代价小于第一阈值,按照无残差合并编码方式对所述第一编码单元进行编码;若所述第一率失真代价大于或等于所述第一阈值,按照残差合并编码方式对所述第一编码单元进行编码。结合第一方面的第四种可能的实施方式,在第五种可能的实施方式中,所述方法还包括:若按照残差合并编码方式对所述第一编码单元进行编码后发现所述第一编码单元的残差为零,则按照无残差合并编码方式对所述第一编码单元进行编码。结合第一方面的第四种可能的实施方式或第一方面的第五种可能的实施方式,在第六种可能的实施方式中,所述第一阈值与编码块尺寸和量化参数相关。结合第一方面的第六种可能的实施方式,在第七种可能的实施方式中,ThresholdSkip=a0*QP2+a1*QP+a2;其中,所述QP表示量化参数,所述a0、a1和a2通过训练学习得到,所述ThresholdSkip表示所述第一阈值。结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式或第一方面的第四种可能的实施方式或第一方面的第五种可能的实施方式或第一方面的第六种可能的实施方式或第一方面的第七种可能的实施方式,在第八种可能的实施方式中,所述获得所述N个编码单元的运动矢量分别对应的率失真代价,包括:获得所述第一编码单元与第一运动矢量所指向的预测单元的残差单元,其中所述第一运动矢量为所述N个编码单元的运动矢量中的任意一个;将所述残差单元进行哈德曼变换以得到绝对变换系数和;通过如下方式计算所述第一运动矢量的率失真代价:SRDO_Cost=SATD+λ*B,其中,所述λ表示率失真参数,所述SATD表示所述绝对变换系数和,所述B表示对所述第一运动矢量的标识进行熵编码后的码流比特数,所述SRDO_Cost表示所述第一运动矢量对应的率失真代价。结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式或第一方面的第四种可能的实施方式或第一方面的第五种可能的实施方式或第一方面的第六种可能的实施方式或第一方面的第七种可能的实施方式或第一方面的第八种可能的实施方式,在第九种可能的实施方式中,所述确定与第一编码单元相邻的N个编码单元的运动矢量,包括:选择与第一编码单元相邻的M个编码单元的运动矢量,从所述M个预测单元的运动矢量中选择各不相同的N个运动矢量,其中,所述N小于或等于3。本发明第二方面提供一种视频编码设备,包括:第一确定单元,用于确定与第一编码单元相邻的N个编码单元的运动矢量;获取单元,用于获得所述N个编码单元的运动矢量分别对应的率失真代价;第二确定单元,用于确定所述第一率失真代价和第二率失真代价的相对关系是否符合预设规则,其中,所述第一率失真代价为所述N个编码单元的运动矢量分别对应的率失真代价中最小的,所述第二率失真代价为所述第一编码单元在参考帧中进行运动估计得到的最小率失真代价;编码单元,用于若所述相对关系符合预设规则,则按照合并编码方式对所述第一编码单元进行编码。结合第二方面,在第一种可能的实施方式中,所述第二确定单元具体用于,将第二率失真代价乘以比较权重得到第三值,其中,所述比较权重随着量化参数的增大而增大;其中,若所述第一简化率失真代价小于所述第三值,确定所述第一率失真代价与第二率失真代价的相对关系满足预设规则;若所述第一率失真代价大于所述第三值,则确定所述第一率失真代价与第二率失真代价的相对关系不满足预设规则;若所述第一率失真代价等于所述第三值,确定所述第一率失真代价与第二率失真代价的相对关系满足或不满足预设规则。结合第二方面的第一种可能的实施方式,在第二种可能的实施方式中,,所述比较权重和量化参数相关。结合第二方面的第二种可能的实施方式,在第三种可能的实施方式中,Weight=1+(QP-25.0)/a;其中,所述a的取值范围为[90,120],所述QP表示量化参数,所述Weight表示所述比较权重。结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式,在第四种可能的实施方式中,所述编码单元,具体用于若所述相对关系符合预设规则,且所述第一率失真代价小于第一阈值,按照无残差合并编码方式对所述第一编码单元进行编码;若所述第一率失真代价大于或等于所述第一阈值,按照残差合并编码方式对所述第一编码单元进行编码。结合第二方面的第四种可能的实施方式,在第五种可能的实施方式中,所述编码单元还用于,若按照残差合并编码方式对所述第一编码单元进行编码后发现所述第一编码单元的残差为零,则按照无残差合并编码方式对所述第一编码单元进行编码。结合第二方面的第四种可能的实施方式或第二方面的第五种可能的实施方式,在第六种可能的实施方式中,所述第一阈值与编码块尺寸和量化参数相关。结合第二方面的第六种可能的实施方式,在第七种可能的实施方式中,ThresholdSkip=a0*QP2+a1*QP+a2;其中,所述QP表示量化参数,所述a0、a1和a2通过训练学习得到,所述ThresholdSkip表示所述第一阈值。结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式或第二方面的第四种可能的实施方式或第二方面的第五种可能的实施方式或第二方面的第六种可能的实施方式或第二方面的第七种可能的实施方式,在第八种可能的实施方式中,所述获取单元具体用于,获得所述第一编码单元与第一运动矢量所指向的预测单元的残差单元,其中所述第一运动矢量为所述N个编码单元的运动矢量中的任意一个;将所述残差单元进行哈德曼变换以得到绝对变换系数和;通过如下方式计算所述第一运动矢量的率失真代价:SRDO_Cost=SATD+λ*B,其中,所述λ表示率失真参数,所述SATD表示所述绝对变换系数和,所述B表示对所述第一运动矢量的标识进行熵编码后的码流比特数,所述SRDO_Cost表示所述第一运动矢量对应的率失真代价。结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式或第二方面的第四种可能的实施方式或第二方面的第五种可能的实施方式或第二方面的第六种可能的实施方式或第二方面的第七种可能的实施方式或第二方面的第八种可能的实施方式,在第九种可能的实施方式中,所述第一确定单元具体用于,选择与第一编码单元相邻的M个编码单元的运动矢量,从所述M个预测单元的运动矢量中选择各不相同的N个运动矢量,其中,所述N小于或等于3。本发明第三方面提供一种视频编码设备,包括:处理器、存储器、输入装置和输出装置,其中,所述处理器执行如下步骤:确定与第一编码单元相邻的N个编码单元的运动矢量;获得所述N个编码单元的运动矢量分别对应的率失真代价;确定所述第一率失真代价和第二率失真代价的相对关系是否符合预设规则;若所述相对关系符合预设规则,则按照合并编码方式对所述第一编码单元进行编码,其中,所述第一率失真代价为所述N个编码单元的运动矢量分别对应的率失真代价中最小的,所述第二率失真代价为所述第一编码单元在参考帧中进行运动估计得到的最小率失真代价。结合第三方面,在第一种可能的实施方式中,所述处理器确定所述第一率失真代价和第二率失真代价的相对关系是否符合预设规则,包括:将第二率失真代价乘以比较权重得到第三值,其中,所述比较权重随着量化参数的增大而增大;其中,若所述第一简化率失真代价小于所述第三值,确定所述第一率失真代价与第二率失真代价的相对关系满足预设规则;若所述第一率失真代价大于所述第三值,则确定所述第一率失真代价与第二率失真代价的相对关系不满足预设规则;若所述第一率失真代价等于所述第三值,确定所述第一率失真代价与第二率失真代价的相对关系满足或不满足预设规则。结合第三方面的第一种可能的实施方式,在第二种可能的实施方式中,所述比较权重和量化参数相关。结合第三方面的第二种可能的实施方式,在第三种可能的实施方式中,Weight=1+(QP-25.0)/a;其中,所述a的取值范围为[90,120],所述QP表示量化参数,所述Weight表示所述比较权重。结合第三方面或第三方面的第一种可能的实施方式或第三方面的第二种可能的实施方式或第三方面的第三种可能的实施方式,在第四种可能的实施方式中,所述处理器按照合并编码方式对所述第一编码单元进行编码,包括:若所述第一率失真代价小于第一阈值,按照无残差合并编码方式对所述第一编码单元进行编码;若所述第一率失真代价大于或等于所述第一阈值,按照残差合并编码方式对所述第一编码单元进行编码。结合第三方面的第四种可能的实施方式,在第五种可能的实施方式中,所述处理器还执行如下步骤:若按照残差合并编码方式对所述第一编码单元进行编码后发现所述第一编码单元的残差为零,则按照无残差合并编码方式对所述第一编码单元进行编码。结合第三方面的第四种可能的实施方式或第三方面的第五种可能的实施方式,在第六种可能的实施方式中,所述第一阈值与编码块尺寸和量化参数相关。结合第三方面的第六种可能的实施方式,在第七种可能的实施方式中,ThresholdSkip=a0*QP2+a1*QP+a2;其中,所述QP表示量化参数,所述a0、a1和a2通过训练学习得到,所述ThresholdSkip表示所述第一阈值。结合第三方面或第三方面的第一种可能的实施方式或第三方面的第二种可能的实施方式或第三方面的第三种可能的实施方式或第三方面的第四种可能的实施方式或第三方面的第五种可能的实施方式或第三方面的第六种可能的实施方式或第三方面的第七种可能的实施方式,在第八种可能的实施方式中,所述处理器获得所述N个编码单元的运动矢量分别对应的率失真代价,包括:获得所述第一编码单元与第一运动矢量所指向的预测单元的残差单元,其中所述第一运动矢量为所述N个编码单元的运动矢量中的任意一个;将所述残差单元进行哈德曼变换以得到绝对变换系数和;通过如下方式计算所述第一运动矢量的率失真代价:SRDO_Cost=SATD+λ*B,其中,所述λ表示率失真参数,所述SATD表示所述绝对变换系数和,所述B表示对所述第一运动矢量的标识进行熵编码后的码流比特数,所述SRDO_Cost表示所述第一运动矢量对应的率失真代价。结合第三方面或第三方面的第一种可能的实施方式或第三方面的第二种可能的实施方式或第三方面的第三种可能的实施方式或第三方面的第四种可能的实施方式或第三方面的第五种可能的实施方式或第三方面的第六种可能的实施方式或第三方面的第七种可能的实施方式或第三方面的第八种可能的实施方式,在第九种可能的实施方式中,所述处理器确定与第一编码单元相邻的N个编码单元的运动矢量,包括:选择与第一编码单元相邻的M个编码单元的运动矢量,从所述M个预测单元的运动矢量中选择各不相同的N个运动矢量,其中,所述N小于或等于3。本发明实施例第四方面还提供一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括如上述方法实施例所述视频编码方法的部分或全部步骤。由上可见,本发明实施例提供的技术方案中,先确定与第一编码单元相邻的N个编码单元的运动矢量;获得上述N个编码单元的运动矢量分别对应的率失真代价;确定第一率失真代价和第二率失真代价的相对关系是否符合预设规则;若上述相对关系符合预设规则,则按照Merge编码方式对第一编码单元进行编码,其中,第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。由于是先进行了性能预估,而后再确定是否使用Merge编码方式对第一编码单元进行编码,如此,有利于编码过程与运动估计过程共享一套计算资源,有利于流水作业,并且减少了进行无效计算的几率,进而有利于降低基于HEVC标准的视频编码复杂度。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种视频编码方法的示意图;图2是本发明实施例提供的另一种视频编码方法的流程示意图;图3是本发明实施例提供的一种视频编码设备的示意图;图4是本发明实施例提供的另一种视频编码设备的示意图。具体实施方式本发明实施例提供一种视频编码方法和装置,以期降低基于HEVC标准的视频编码复杂度。下面通过具体实施例,分别进行详细的说明。为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。本发明视频编码方法的一个实施例,可包括:确定与第一编码单元相邻的N个编码单元的运动矢量;获得上述N个编码单元的运动矢量分别对应的率失真代价;确定第一率失真代价和第二率失真代价的相对关系是否符合预设规则;若上述相对关系符合预设规则,则按照Merge编码方式对第一编码单元进行编码,其中第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。请参见图1,图1为本发明实施例一种视频编码方法的流程示意图。本发明实施例提供的一种视频编码方法可包括以下内容:101、确定与第一编码单元相邻的N个编码单元的运动矢量。在本发明的一些实施例中,确定与第一编码单元相邻的N个编码单元的运动矢量可包括:确定与第一编码单元相邻的M个编码单元的运动矢量,从该M个预测单元的运动矢量中选择各不相同的N个运动矢量,其中,上述M大于或等于N,例如M小于或等于8或6,例如上述M个编码单元可为与第一编码单元相关性最强的M个编码单元,而上述N个编码单元可为上述M个编码单元中与第一编码单元相关性最强的且运动矢量各不相同的N个编码单元,或者,上述N个编码单元也可为上述M个编码单元中对应运动矢量各不相同的任意N个编码单元,例如N小于或等于3或4或5。举例来说,若上述M等于1,则与第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元。又例如,若上述M等于2,则与第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元和上边相邻的编码单元。又例如,若上述M等于3,则第一编码单元相邻的M个编码单元为第一编码单元左边相邻的编码单元、上边相邻的编码单元和右上角相邻的编码单元。又例如,若上述M等于4,则第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元、上边相邻的编码单元、右上角相邻的编码单元和左下角相邻的编码单元。又举例来说,若上述M等于5,则第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元、上边相邻的编码单元、右上角相邻的编码单元、左下角相邻的编码单元、左上角相邻的编码单元。又例如若M等于5,则第一编码单元相邻的M个编码单元为第一编码单元左边相邻的编码单元、上边相邻的编码单元、右上角相邻的编码单元、左下角相邻的编码单元、左上角相邻的编码单元、第一编码单元所在帧的之前一帧中与第一编码单元位置相同的编码单元的右下角相邻的编码单元。又例如若M等于6,则第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元、上边相邻的编码单元、右上角相邻的编码单元、左下角相邻的编码单元、左上角相邻的编码单元、第一编码单元所在帧的之前一帧中与第一编码单元位置相同的编码单元的右下角相邻的编码单元、第一编码单元所在帧的之前一帧中与第一编码单元位置相同的编码单元,以此类推。102、获得上述N个编码单元的运动矢量分别对应的率失真代价。在本发明的一些实施例中,可通过多种方式来获得上述N个编码单元的运动矢量分别对应的率失真代价。例如,可获得第一编码单元与第一运动矢量所指向的预测单元的第一残差单元,其中,第一运动矢量为N个编码单元的运动矢量中的任意一个;将第一残差单元进行哈德曼变换以得到绝对变换系数和;通过如下方式计算所述第一运动矢量的率失真代价:SRDO_Cost=SATD+λ*B(公式1)其中,公式1中的λ表示率失真参数,公式1中的SATD表示将第一残差单元进行哈德曼变换以得到绝对变换系数和,公式1中的B表示对第一运动矢量的标识(如第一运动矢量编号或其它标识)进行熵编码后的码流比特数,公式1中的SRDO_Cost表示第一运动矢量对应的率失真代价。当然,在实际应用中,亦可按照现有机制来获得上述N个编码单元的运动矢量分别对应的率失真代价。103、确定第一率失真代价和第二率失真代价的相对关系是否符合预设规则。其中,第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。其中,第一率失真代价和第二率失真代价的相对关系可能是第一率失真代价和第二率失真代价的大小关系,比例关系或其它能够反映第一率失真代价和第二率失真代价相对值的关系。在本发明一些实施例中,获得第一率失真代价与第二率失真代价的相对关系可包括:将第二率失真代价乘以比较权重得到第三值,其中,该比较权重随着量化参数的增大而增大;其中,若第一简化率失真代价小于第三值,可确定第一率失真代价与第二率失真代价的相对关系满足预设规则;若第一率失真代价大于第三值,可确定第一率失真代价与第二率失真代价的相对关系不满足预设规则;若第一率失真代价等于所述第三值,可确定第一率失真代价与第二率失真代价的相对关系满足或不满足预设规则。其中,上述比较权重可以是一个预设值,或者比较权重也可以是一个与量化参数(QP,QuantizationParameter)相关的值。在本发明的一些实施例中,Weight=1+(QP-25.0)/a;其中,上述公式中的a的取值范围例如为[90,120],公式中的QP表示量化参数,公式中的Weight表示比较权重。该公式是通过拟合得出的,公式中的参数还可能根据不同拟合情况进行适度调整。104、若上述相对关系符合预设规则,则按照Merge编码方式对第一编码单元进行编码。在本发明的一些实施例中,若第一率失真代价和第二率失真代价的相对关系不符合预设规则,则可按照Inter编码方式或Intra编码方式或其它编码方式对第一编码单元进行编码。在本发明的一些实施例中,按照Merge编码方式对第一编码单元进行编码可包括:若第一率失真代价小于第一阈值,可按照无残差Merge编码方式对第一编码单元进行编码;若第一率失真代价大于或等于第一阈值,可按照残差Merge编码方式对第一编码单元进行编码。当然,在实际应用中也可不考虑第一率失真代价和第一阈值的关系,而直接按照无残差Merge编码方式或残差Merge编码方式对第一编码单元进行编码。其中,第一阈值可以是一个预设值,或者第一阈值也可以是一个与QP相关的值。在本发明一些实施例中,ThresholdSkip=a0*QP2+a1*QP+a2;其中,公式中的QP表示量化参数,a0、a1和a2可通过训练学习得到,公式中的ThresholdSkip表示第一阈值。该公式是通过拟合得出的,公式中的参数还可能根据不同拟合情况进行适度调整。举例来说,若第一编码单元大小为64×64,则a0、a1和a2的取值可如下:a0=16.4879;a1=130.1778;a2=191.1332;若第一编码单元大小为32×32,则a0、a1和a2的取值可如下:a0=3.6334;a1=62.9270;a2=-356.0753;若第一编码单元大小为16×16,则a0、a1和a2的取值可如下:a0=1.6573;a1=-40.0142;a2=844.3463;若第一编码单元大小为8×8,则a0、a1和a2的取值可如下:a0=0.5411;a1=-15.7408;a2=295.4036;在实际应用中,上述系数a0、a1和a2的取值允许有正负10%~%15%的误差。可以理解,上述举例主要以第一编码单元大小为64×64、32×32、16×16和8×8为例,来列举系数a0、a1和a2可能的取值,在第一编码单元大小为其它分配率的情况下,可通过拟合得出的相应的系数a0、a1和a2取值,此处不再进行列举。在本发明一些实施例中,若按照残差Merge编码方式对第一编码单元进行编码后发现第一编码单元的残差为零,则还可按照无残差Merge编码方式重新对第一编码单元进行编码。当然,在实际应用中,也可直接使用按照残差Merge编码方式对第一编码单元进行编码的结果,而不再考虑重新按照无残差Merge编码方式对残差为零的第一编码单元进行编码。可以理解,本发明实施例方案可应用于数码相机、手机、电视机、电脑或可采用HEVC标准的其它能够进行视频播放和/或视频录制的设备。由上可见,本实施例技术方案先确定与第一编码单元相邻的N个编码单元的运动矢量;获得上述N个编码单元的运动矢量分别对应的率失真代价;确定第一率失真代价和第二率失真代价的相对关系是否符合预设规则;若上述相对关系符合预设规则,则按照Merge编码方式对第一编码单元进行编码,其中第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。由于是先进行了性能预估,而后再确定是否使用Merge编码方式对第一编码单元进行编码,如此,有利于编码过程与运动估计过程共享一套计算资源,有利于流水作业,并且减少了进行无效计算的几率,进而有利于降低基于HEVC标准的视频编码复杂度。为便于更好的理解和实施本发明实施例的上述技术方案,下面举例几个应用场景进行说明。请参见图2,图2为本发明实施例另一种视频编码方法的流程示意图。本发明实施例提供的另一种视频编码方法可包括以下内容:201、确定与第一编码单元相邻的N个编码单元的运动矢量。在本发明一些实施例中,上述N小于或等于3或4或5,其中,N个编码单元的运动矢量各不相同。其中,确定运动矢量各不相同的N个编码单元的优先级可如下:第一编码单元左边(Left)相邻的编码单元、第一编码单元上边(Top)相邻的编码单元、第一编码单元右上角(AboveRight)相邻的编码单元、第一编码单元左下角(LeftBottom)相邻的编码单元、第一编码单元左上角(AboveLeft)相邻的编码单元、第一编码单元所在帧的之前一帧中与第一编码单元位置相同的编码单元的右下角相邻的编码单元(RightBottom_Collocated)、第一编码单元所在帧的之前一帧中与第一编码单元位置相同的编码单元(Center_Collocated)。其中,上述N个编码单元可为上述7个编码单元中与第一编码单元相关性最强的且运动矢量各不相同的N个编码单元。例如假设N=3,并且第一编码单元左边相邻的编码单元的运动矢量、第一编码单元上边相邻的编码单元的运动矢量、第一编码单元右上角相邻的编码单元的运动矢量都各不相同,则确定出的与第一编码单元相邻的N个编码单元的运动矢量可为:第一编码单元左边相邻的编码单元的运动矢量、第一编码单元上边相邻的编码单元的运动矢量、第一编码单元右上角相邻的编码单元的运动矢量,以此类推。例如假设N=3,且第一编码单元左边相邻的编码单元的运动矢量和第一编码单元上边相邻的编码单元的运动矢量相同,第一编码单元右上角相邻的编码单元的运动矢量和第一编码单元左下角相邻的编码单元的运动矢量不同,且第一编码单元右上角相邻的编码单元的运动矢量和第一编码单元上边相邻的编码单元的运动矢量不同,则确定出的与第一编码单元相邻的N个编码单元的运动矢量可为:第一编码单元左边相邻的编码单元的运动矢量、第一编码单元右上角相邻的编码单元的运动矢量、第一编码单元左下角相邻的编码单元的运动矢量,以此类推。202、获得上述N个编码单元的运动矢量分别对应的率失真代价。在本发明一些实施例中,可获得第一编码单元与第一运动矢量所指向的预测单元的第一残差单元,其中,第一运动矢量为N个编码单元的运动矢量中的任意一个;将第一残差单元进行哈德曼变换以得到绝对变换系数和;通过如下方式计算第一运动矢量的率失真代价:SRDO_Cost=SATD+λ*B(公式1)其中,公式1中的λ表示率失真参数,公式1中的SATD表示将第一残差单元进行哈德曼变换以得到绝对变换系数和,公式1中的B表示对第一运动矢量的编号(index)进行熵编码后的码流比特数,公式1中的SRDO_Cost表示第一运动矢量对应的率失真代价。其中,公式1给出了一种计算率失真代价的简化方式,有利于极大的降低获得上述N个编码单元的运动矢量分别对应的率失真代价的复杂度。N个编码单元中的每个编码单元的运动矢量分别按照上述方式计算得到对应的率失真代价。基于公式1的计算方式,有利于在FPGA硬件逻辑电路上的流水作业,进而提高FPGA硬件资源的吞吐率,可节约三套FPGARDO计算资源,实现并行计算,满足1080P视频实时编码。当然,在实际应用中,亦可按照现有机制来获得上述N个编码单元的运动矢量分别对应的率失真代价。203、从N个编码单元的运动矢量分别对应的率失真代价中选出第一率失真代价,其中,第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的;204、将第一编码单元在参考帧中进行运动估计得到第二率失真代价;其中,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。205、判断第一率失真代价是否小于第二率失真代价乘比较权重Weight。若是,则执行步骤207;若否,则执行步骤206;其中,第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。其中,上述比较权重Weight可以是一个预设值,或者比较权重也可以是一个与量化参数(QP)相关的值。在本发明的一些实施例中,Weight=1+(QP-25.0)/a;其中,上述公式中的a的取值范围例如为[90,120],公式中的QP表示量化参数,公式中的Weight表示比较权重。该公式是通过拟合得出的,公式中的参数还可能根据不同拟合情况进行适度调整。206、按照Inter编码方式或Intra编码方式对第一编码单元进行编码。207、判断第一率失真代价是否小于第一阈值;若是,则执行步骤208;若否,则执行步骤209;其中,第一阈值可以是一个预设值,或者第一阈值也可以是一个与量化参数(QP)相关的值。在本发明一些实施例中,ThresholdSkip=a0*QP2+a1*QP+a2;其中,公式中的QP表示量化参数,a0、a1和a2可通过训练学习得到,公式中的ThresholdSkip表示第一阈值。该公式是通过拟合得出的,公式中的参数还可能根据不同拟合情况进行适度调整。举例来说,若第一编码单元大小为64×64,则a0、a1和a2的取值如下:a0=16.4879;a1=130.1778;a2=191.1332;若第一编码单元大小为32×32,则a0、a1和a2的取值如下:a0=3.6334;a1=62.9270;a2=-356.0753;若第一编码单元大小为16×16,则a0、a1和a2的取值如下:a0=1.6573;a1=-40.0142;a2=844.3463;若第一编码单元大小为8×8,则a0、a1和a2的取值如下:a0=0.5411;a1=-15.7408;a2=295.4036;在实际应用中,上述系数a0、a1和a2的取值允许有正负15%的误差。可以理解,上述举例主要以第一编码单元大小为64×64、32×32、16×16和8×8为例,来列举系数a0、a1和a2可能的取值,在第一编码单元大小为其它分配率的情况下,可通过拟合得出的相应的系数a0、a1和a2取值,此处不再进行列举。208、按照无残差Merge编码方式对第一编码单元进行编码;209、按照残差Merge编码方式对第一编码单元进行编码。此外,若按照残差Merge编码方式对第一编码单元进行编码后发现第一编码单元的残差为零,则还跳转至步骤208。可以理解,本发明实施例方案可应用于数码相机、手机、电视机、电脑或可采用HEVC标准的其它能够进行视频播放或视频录制的设备。由上可见,本实施例技术方案先确定与第一编码单元相邻的N个编码单元的运动矢量;获得上述N个编码单元的运动矢量分别对应的率失真代价;确定第一率失真代价是否小于第二率失真代价乘比较权重Weight;若是,则判断第一率失真代价是否小于第一阈值,若是,则按照无残差Merge编码方式对第一编码单元进行编码,第一率失真代价是否大于或等于第一阈值,按照残差Merge编码方式对第一编码单元进行编码,其中第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。由于是先进行了编码性能的预估,而后再确定使用Merge编码方式或Inter编码方式或Intra编码方式对第一编码单元进行编码,如此,有利于实现编码过程与运动估计过程共享一套计算资源,有利于流水作业,并且减少了进行无效计算的几率,进而有利于降低基于HEVC标准的视频编码复杂度。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤也可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。为便于更好的实施本发明实施例的上述方案,本发明实施例还提供用于实施上述方案的相关装置。参见图3,本发明实施例提供的视频编码设备300,可包括:第一确定单元310、获取单元320、第二确定单元330和编码单元340。其中,第一确定单元310,用于确定与第一编码单元相邻的N个编码单元的运动矢量。获取单元320,用于获得所述N个编码单元的运动矢量分别对应的率失真代价。第二确定单元330,用于确定所述第一率失真代价和第二率失真代价的相对关系是否符合预设规则,其中,所述第一率失真代价为所述N个编码单元的运动矢量分别对应的率失真代价中最小的,所述第二率失真代价为所述第一编码单元在参考帧中进行运动估计得到的最小率失真代价;编码单元340,用于若第二确定单元330确定出所述相对关系符合预设规则,则按照Merge编码方式对所述第一编码单元进行编码。在本发明的一些实施例中,第二确定单元330具体用于,将第二率失真代价乘以比较权重得到第三值,其中,所述比较权重随着量化参数的增大而增大;其中,若所述第一简化率失真代价小于所述第三值,确定所述第一率失真代价与第二率失真代价的相对关系满足预设规则;若所述第一率失真代价大于所述第三值,则确定所述第一率失真代价与第二率失真代价的相对关系不满足预设规则;若所述第一率失真代价等于所述第三值,确定所述第一率失真代价与第二率失真代价的相对关系满足或不满足预设规则。在本发明的一些实施例中,比较权重与量化参数相关。在本发明的一些实施例中,Weight=1+(QP-25.0)/a;其中,所述a的取值范围为[90,120],所述QP表示量化参数,所述Weight表示所述比较权重。在本发明的一些实施例中,编码单元340可具体用于,若所述相对关系符合预设规则,且所述第一率失真代价小于第一阈值,按照无残差合并编码方式对所述第一编码单元进行编码;若所述第一率失真代价大于或等于所述第一阈值,按照残差合并编码方式对所述第一编码单元进行编码。在本发明的一些实施例中,编码单元340还用于,若按照残差合并编码方式对所述第一编码单元进行编码后发现所述第一编码单元的残差为零,则按照无残差合并编码方式对所述第一编码单元进行编码。在本发明的一些实施例中,第一阈值与编码块尺寸和量化参数相关。在本发明的一些实施例中,ThresholdSkip=a0*QP2+a1*QP+a2;其中,所述QP表示量化参数,所述a0、a1和a2通过训练学习得到,所述ThresholdSkip表示所述第一阈值。在本发明的一些实施例中,所述获取单元具体用于,获得所述第一编码单元与第一运动矢量所指向的预测单元的残差单元,其中所述第一运动矢量为所述N个编码单元的运动矢量中的任意一个;将所述残差单元进行哈德曼变换以得到绝对变换系数和;通过如下方式计算所述第一运动矢量的率失真代价:SRDO_Cost=SATD+λ*B,其中,所述λ表示率失真参数,所述SATD表示所述绝对变换系数和,所述B表示对所述第一运动矢量的标识进行熵编码后的码流比特数,所述SRDO_Cost表示所述第一运动矢量对应的率失真代价。在本发明的一些实施例中,第一确定单元310具体用于,选择与第一编码单元相邻的M个编码单元的运动矢量,从所述M个预测单元的运动矢量中选择各不相同的N个运动矢量,其中,所述N小于或等于3。可以理解的是,本发明视频编码设备300例如可以是数码相机、手机、电视机、电脑或者可采用HEVC标准的其它能够进行视频播放和/或视频录制的设备。可以理解的是,本实施例的视频编码设备300的各个功能模块的功能可根据上述方法实施例介绍的方法具体实现,其具体实现过程可以参见上述实施例中的相关描述,在此不再赘述。由上可见,本实施例视频编码设备300先确定与第一编码单元相邻的N个编码单元的运动矢量;获得上述N个编码单元的运动矢量分别对应的率失真代价;确定第一率失真代价和第二率失真代价的相对关系是否符合预设规则;若上述相对关系符合预设规则,则按照Merge编码方式对第一编码单元进行编码,其中第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。由于是先进行了性能预估,而后再确定是否使用Merge编码方式对第一编码单元进行编码,如此,有利于编码过程与运动估计过程共享一套计算资源,有利于流水作业,并且减少了进行无效计算的几率,进而有利于降低基于HEVC标准的视频编码复杂度。参见图4,本发明实施例还提供一种视频编码设备400,可包括:输入装置410、输出装置420、存储器430和处理器440(网络设备中的处理器440的数量可以一个或多个,图4中以一个处理器为例)。在本发明的一些实施例中,输入装置410、输出装置420、存储器430和处理器440可通过总线或其它方式连接,其中,图4中以通过总线连接为例。其中,处理器440执行如下步骤:确定与第一编码单元相邻的N个编码单元的运动矢量;获得上述N个编码单元的运动矢量分别对应的率失真代价;确定第一率失真代价和第二率失真代价的相对关系是否符合预设规则;若上述相对关系符合预设规则,则按照Merge编码方式对第一编码单元进行编码,其中第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。在本发明的一些实施例中,处理器440确定与第一编码单元相邻的N个编码单元的运动矢量可包括:确定与第一编码单元相邻的M个编码单元的运动矢量,从该M个预测单元的运动矢量中选择各不相同的N个运动矢量,其中上述M大于或等于N,例如M小于或等于8或6,例如上述M个编码单元可为与第一编码单元相关性最强的M个编码单元,而上述N个编码单元可为上述M个编码单元中与第一编码单元相关性最强的且运动矢量各不相同的N个编码单元。或者上述N个编码单元也可为上述M个编码单元中对应运动矢量各不相同的任意N个编码单元,例如N小于或等于3或4或5。举例来说,若上述M等于1,则与第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元。又例如,若上述M等于2,则与第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元和上边相邻的编码单元。又例如,若上述M等于3,则第一编码单元相邻的M个编码单元为第一编码单元左边相邻的编码单元、上边相邻的编码单元和右上角相邻的编码单元。又例如,若上述M等于4,则第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元、上边相邻的编码单元、右上角相邻的编码单元和左下角相邻的编码单元。又举例来说,若上述M等于5,则第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元、上边相邻的编码单元、右上角相邻的编码单元、左下角相邻的编码单元、左上角相邻的编码单元。又例如若M等于5,则第一编码单元相邻的M个编码单元为第一编码单元左边相邻的编码单元、上边相邻的编码单元、右上角相邻的编码单元、左下角相邻的编码单元、左上角相邻的编码单元、第一编码单元所在帧的之前一帧中与第一编码单元位置相同的编码单元的右下角相邻的编码单元。又例如若M等于6,则第一编码单元相邻的M个编码单元可为第一编码单元左边相邻的编码单元、上边相邻的编码单元、右上角相邻的编码单元、左下角相邻的编码单元、左上角相邻的编码单元、第一编码单元所在帧的之前一帧中与第一编码单元位置相同的编码单元的右下角相邻的编码单元、第一编码单元所在帧的之前一帧中与第一编码单元位置相同的编码单元,以此类推。在本发明的一些实施例中,处理器440可通过多种方式来获得上述N个编码单元的运动矢量分别对应的率失真代价。例如,处理器440可获得第一编码单元与第一运动矢量所指向的预测单元的第一残差单元,其中,第一运动矢量为N个编码单元的运动矢量中的任意一个;将第一残差单元进行哈德曼变换以得到绝对变换系数和;通过如下方式计算所述第一运动矢量的率失真代价:SRDO_Cost=SATD+λ*B(公式1)其中,公式1中的λ表示率失真参数,公式1中的SATD表示将第一残差单元进行哈德曼变换以得到绝对变换系数和,公式1中的B表示对第一运动矢量的标识(如第一运动矢量编号或其它标识)进行熵编码后的码流比特数,公式1中的SRDO_Cost表示第一运动矢量对应的率失真代价。当然,在实际应用中,处理器440亦可按照现有机制来获得上述N个编码单元的运动矢量分别对应的率失真代价。其中,第一率失真代价和第二率失真代价的相对关系可能是第一率失真代价和第二率失真代价的大小关系,比例关系或其它能够反映第一率失真代价和第二率失真代价相对值的关系。在本发明一些实施例中,处理器440获得第一率失真代价与第二率失真代价的相对关系可包括:将第二率失真代价乘以比较权重得到第三值,其中,该比较权重随着量化参数的增大而增大;其中,若第一简化率失真代价小于第三值,可确定第一率失真代价与第二率失真代价的相对关系满足预设规则;若第一率失真代价大于第三值,可确定第一率失真代价与第二率失真代价的相对关系不满足预设规则;若第一率失真代价等于所述第三值,可确定第一率失真代价与第二率失真代价的相对关系满足或不满足预设规则。其中,上述比较权重可以是一个预设值,或者比较权重也可以是一个与量化参数(QP,QuantizationParameter)相关的值。在本发明的一些实施例中,Weight=1+(QP-25.0)/a;其中,上述公式中的a的取值范围例如为[90,120],公式中的QP表示量化参数,公式中的Weight表示比较权重。该公式是通过拟合得出的,公式中的参数还可能根据不同拟合情况进行适度调整。在本发明的一些实施例中,若第一率失真代价和第二率失真代价的相对关系不符合预设规则,处理器440可按照Inter编码方式或Intra编码方式或其它编码方式对第一编码单元进行编码。在本发明的一些实施例中,处理器440按照Merge编码方式对第一编码单元进行编码可包括:若第一率失真代价小于第一阈值,可按照无残差Merge编码方式对第一编码单元进行编码;若第一率失真代价大于或等于第一阈值,可按照残差Merge编码方式对第一编码单元进行编码。当然,在实际应用中也可不考虑第一率失真代价和第一阈值的关系,而直接按照无残差Merge编码方式或残差Merge编码方式对第一编码单元进行编码。其中,第一阈值可以是一个预设值,或者第一阈值也可以是一个与QP相关的值。在本发明一些实施例中,ThresholdSkip=a0*QP2+a1*QP+a2;其中,公式中的QP表示量化参数,a0、a1和a2可通过训练学习得到,公式中的ThresholdSkip表示第一阈值。该公式是通过拟合得出的,公式中的参数还可能根据不同拟合情况进行适度调整。举例来说,若第一编码单元大小为64×64,则a0、a1和a2的取值可如下:a0=16.4879;a1=130.1778;a2=191.1332;若第一编码单元大小为32×32,则a0、a1和a2的取值可如下:a0=3.6334;a1=62.9270;a2=-356.0753;若第一编码单元大小为16×16,则a0、a1和a2的取值可如下:a0=1.6573;a1=-40.0142;a2=844.3463;若第一编码单元大小为8×8,则a0、a1和a2的取值可如下:a0=0.5411;a1=-15.7408;a2=295.4036;在实际应用中,上述系数a0、a1和a2的取值允许有正负10%~%15%的误差。可以理解,上述举例主要以第一编码单元大小为64×64、32×32、16×16和8×8为例,来列举系数a0、a1和a2可能的取值,在第一编码单元大小为其它分配率的情况下,可通过拟合得出的相应的系数a0、a1和a2取值,此处不再进行列举。在本发明一些实施例中,处理器440若按照残差Merge编码方式对第一编码单元进行编码后发现第一编码单元的残差为零,则还可按照无残差Merge编码方式重新对第一编码单元进行编码。当然,在实际应用中,也可直接使用按照残差Merge编码方式对第一编码单元进行编码的结果,而不再考虑重新按照无残差Merge编码方式对残差为零的第一编码单元进行编码。可以理解的是,本发明视频编码设备400例如可以是数码相机、手机、电视机、电脑或者可采用HEVC标准的其它能够进行视频播放和/或视频录制的设备。可以理解的是,本实施例的视频编码设备400各个器件的功能可根据上述方法实施例介绍的方法具体实现,其具体实现过程可以参见上述实施例中的相关描述,在此不再赘述。由上可见,本实施例技术方案中,处理器440先确定与第一编码单元相邻的N个编码单元的运动矢量;获得上述N个编码单元的运动矢量分别对应的率失真代价;确定第一率失真代价和第二率失真代价的相对关系是否符合预设规则;若上述相对关系符合预设规则,则按照Merge编码方式对第一编码单元进行编码,其中第一率失真代价为上述N个编码单元的运动矢量分别对应的率失真代价中最小的,第二率失真代价为第一编码单元在参考帧中进行运动估计得到的最小率失真代价。由于是先进行了性能预估,而后再确定是否使用Merge编码方式对第一编码单元进行编码,如此,有利于编码过程与运动估计过程共享一套计算资源,有利于流水作业,并且减少了进行无效计算的几率,进而有利于降低基于HEVC标准的视频编码复杂度。本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的视频编码方法的部分或全部步骤。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上上述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1