CN107613305B - 一种hevc中p、b帧快速运动估计方法 - Google Patents

一种hevc中p、b帧快速运动估计方法 Download PDF

Info

Publication number
CN107613305B
CN107613305B CN201710946814.8A CN201710946814A CN107613305B CN 107613305 B CN107613305 B CN 107613305B CN 201710946814 A CN201710946814 A CN 201710946814A CN 107613305 B CN107613305 B CN 107613305B
Authority
CN
China
Prior art keywords
satd
motion vector
sub
coding unit
coding
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.)
Active
Application number
CN201710946814.8A
Other languages
English (en)
Other versions
CN107613305A (zh
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.)
Hangzhou Arcvideo Technology Co ltd
Original Assignee
Hangzhou Arcvideo Technology 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 Hangzhou Arcvideo Technology Co ltd filed Critical Hangzhou Arcvideo Technology Co ltd
Priority to CN201710946814.8A priority Critical patent/CN107613305B/zh
Publication of CN107613305A publication Critical patent/CN107613305A/zh
Application granted granted Critical
Publication of CN107613305B publication Critical patent/CN107613305B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种HEVC中P、B帧快速运动估计方法。它具体包括如下步骤:(1)在当前CU的Merge&Skip_2Nx2N编码过程中,计算该MV的SATD值;(2)为当前CU的每个子CU建立一个已搜MV队列,用于记录下MV及对应的子CU的SATD值;(3)在当前CU的其他帧间预测单元的分像素搜索过程中,对每一个搜索MV,先判断该MV是否存在于当前CU和子CU的已搜MV队列中:如果存在,则利用记录下来的SATD值得到该MV的SATD值;如果不存在,则需要为该MV插值滤波生成预测图像,然后计算MV的SATD值;(4)当前CU编码结束,进行子CU的编码,其他几级子CU的编码方法与子CU的编码方法相同。本发明的有益效果是:降低运动估计的复杂度,保证压缩效率没有损失,编码时间节省10%以上,编码质量没有损失。

Description

一种HEVC中P、B帧快速运动估计方法
技术领域
本发明涉及视频编码相关技术领域,尤其是指一种HEVC中P、B帧快速运动估计方法。
背景技术
HEVC作为目前最新一代的视频编码标准,比H264压缩效率提升了一倍。HEVC提出了编码单元(Coding Unit,CU)和预测单元(Prediction Unit,PU)的编码框架。编码单元CU可从最大的64x64到最小的8x8,而且编码单元CU可以采用四叉树递归划分成四个子编码单元CU,编码单元CU内又可以分割成不同的预测单元(PU)。HEVC的预测单元包括帧间预测单元(Merge&Skip_2Nx2N,Inter_2Nx2N,Inter_2NxN,Inter_Nx2N,Inter_2NxnU,Inter_2NxnD,Inter_nLx2N,Inter_nRx2N等)和帧内预测单(Intra_2Nx2N,Intra_NxN等)。I帧只能采用帧内预测单元,P、B帧则可以采用所有预测单元。可以看到,HEVC的编码块相比H264更灵活,块的种类更多,编码器可以根据实际场景选择压缩效率最高的编码单元和预测单元,提高压缩效率。
HEVC采用率失真优化(RDO)来选择最好的编码单元和预测单元。所谓率失真优化即根据编码失真和编码比特数计算编码代价J,公式表示为J=D+lambda*R,其中D为编码失真,R为编码比特数,lambda是拉格朗日系数,与QP相关(QP指的是编码当中的量化参数)。编码代价越小,压缩率越高。HEVC的参考软件HM中编码单元的选择过程如下:先计算当前CU的编码代价J_UnSplit,然后将当前CU递归划成四个子CU,分别计算四个子CU的最小编码代价,将四个子CU的最小编码代价累加得到当前CU采用划分方式的编码代价J_Split。如果J_UnSplit小于等于J_Split,则当前CU采用非划分方式编码,反之,当前CU采用划分方式编码。在编码单元内部要进行预测单元的选择,其中帧间预测单元的选择过程如下:给定一种帧间预测单元后,首先进行运动估计(Merge&Skip_2Nx2N不需要运动估计)和运动补偿得到预测图像,然后将原始图像与预测图像的差值图像进行变化量化,反量化反变换得到重建图像,计算编码失真和编码比特数及预测单元的编码代价,最后与当前CU的其他预测单元的编码代价进行比较,选择最优的预测单元。
视频编码中的运动估计是对当前块在参考帧中寻找最优匹配块。当前块与参考帧中的匹配块的位移称为运动矢量(Motion Vector,MV)。运动估计过程一般包括整像素搜索和分像素搜索,其中HEVC分像素搜索精度可以达到1/4像素。整像素搜索中,MV的X、Y分量都是相邻整像素点距离的倍数,通过计算预测块与当前块的SADCost判决预测效果,SADCost=SAD+mv_bits*motion_lambda(其中:SAD(Sum of Absolute Difference)是指绝对误差和,mv_bits指的是编码MV的比特数,motion_lambda是拉格朗日系数)。HM中整像素搜索方法包括全局搜索和TZ快速搜索两种方法:全局搜索对搜索范围内所有候选块进行匹配,找到最优块。这种方法搜索效果最好,计算量最大。而TZ快速搜索方法可以大大减少搜索的MV个数,节省计算量;分像素搜索又包含了半像素搜索和四分之一像素搜索,分像素搜索中MV的X、Y分量的精度为两个相邻整像素点距离的1/4,通过计算预测块与当前块的SATDCost来判决预测效果,SATDCost=SATD+mv_bits*motion_lambda(其中:SATD(Sum of AbsoluteTransformed Difference)是指哈达玛变换后的绝对值之和,mv_bits指的是编码MV的比特数,motion_lambda是拉格朗日系数)。需要注意的是分像素搜索中预测图像是对整像素图像采用插值滤波算法计算得到,HEVC中使用8抽头滤波器计算半像素预测图像,7抽头滤波器计算四分之一像素预测图像,由此可见插值滤波算法计算量很大。根据SATD的计算公式可以看到,大块的SATD值是由小块的SATD值累加得到的。
发明内容
本发明是为了克服现有技术中存在上述的不足,提供了一种降低了运动估计的复杂度同时保证压缩效率没有损失的HEVC中P、B帧快速运动估计方法。
为了实现上述目的,本发明采用以下技术方案:
一种HEVC中P、B帧快速运动估计方法,当前的编码单元CU采用四叉树递归划分成四个一级子编码单元CU,一级子编码单元CU同样采用四叉树递归划分成四个二级子编码单元CU,以此类推,具体包括如下步骤:
(1)在当前编码单元CU的Merge&Skip_2Nx2N编码过程中,给定候选运动矢量MV,插值滤波获取预测图像后,计算该运动矢量MV的SATD值;
(2)以此同时,为当前编码单元CU的每个一级子编码单元CU建立一个已搜运动矢量MV队列,用于记录下运动矢量MV及对应的一级子编码单元CU的SATD值;
(3)在当前编码单元CU的其他帧间预测单元的分像素搜索过程中,对每一个搜索运动矢量MV,先判断该运动矢量MV是否存在于当前编码单元CU和一级子编码单元CU的已搜运动矢量MV队列中:如果存在,则利用记录下来的SATD值得到该运动矢量MV的SATD值;如果不存在,则需要为该运动矢量MV插值滤波生成预测图像,然后计算运动矢量MV的SATD值;
(4)当前编码单元CU编码结束,进行一级子编码单元CU的编码,其他几级子编码单元的编码方法与一级子编码单元CU的编码方法相同;一级子编码单元CU的编码方法如下:
(a)在一级子编码单元CU的Merge&Skip_2Nx2N编码过程中,获取候选运动矢量MV后,首先从该一级子编码单元CU的已搜运动矢量MV队列中检索候选运动矢量MV,如果存在,直接获取SATD值;如果不存在,则进行运动补偿得到预测图像,然后计算SATD值;
(b)在一级子编码单元CU的其他帧间预测单元分像素搜索过程中,运动估计方法与步骤(3)相同。
在HEVC参考软件HM中,编码代价的计算是从大编码单元CU到小编码单元CU逐级递归,因此运动估计也是先在大编码单元CU上进行,然后在四个子编码单元CU上进行,而且HM中大编码单元CU的运动估计和子编码单元CU的运动估计过程是相互独立没有关系的。但事实上由于子编码单元CU与大编码单元CU是被包含关系,大编码单元CU的运动搜索路径可能与子编码单元CU的运动搜索路径存在部分重合,因此编码单元CU运动估计的中间计算结果有可能给子编码单元CU使用。通过实验统计发现:(1)、子编码单元CU的Merge&Skip_2Nx2N模式的候选运动矢量MV有较大概率与当前编码单元CU相同;(2)、子编码单元CU运动估计中搜到的分像素运动矢量MV有一定概率与当前编码单元CU运动估计搜索过的运动矢量MV相同;(3)、当前编码单元CU运动估计搜到的运动矢量MV有可能被包含在Merge&Skip_2Nx2N的候选运动矢量MV中。根据本方法的操作,利用大块的运动估计结果加速子块的运动估计过程,可以减少一部分分像素插值滤波计算和SATD值计算,降低了运动估计的复杂度,同时可以保证压缩效率没有损失,因此可以应用到实际的HEVC编码器的优化中。将本方法应用到HEVC的参考软件HM中,对于LowDelay和RandomAccess的配置,编码时间节省10%以上,而且编码质量没有损失。
作为优选,在步骤(1)中,所述Merge&Skip_2Nx2N选取相邻编码单元的运动矢量MV作为当前编码单元CU的候选运动矢量MV,从候选运动矢量MV中选出最优。
作为优选,在步骤(1)中,计算该运动矢量MV的SATD值是通过分别计算四个一级子编码单元CU的SATD值最后求和得到的,四个一级子编码单元CU的SATD值分别为SATD_subcu0、SATD_subcu1、SATD_subcu2和SATD_subcu3,求和公式表达为SATD=SATD_subcu0+SATD_subcu1+SATD_subcu2+SATD_subcu3。
作为优选,在步骤(3)中,如果不存在,则需要为该运动矢量MV插值滤波生成预测图像,然后计算运动矢量MV的SATD值,而该SATD值是分别计算四个一级子编码单元CU的SATD值然后求和的结果,同时运动矢量MV及对应的一级子编码单元CU的SATD值追加到一级子编码单元CU的已搜运动矢量MV队列末尾。
作为优选,在步骤(4)的步骤(a)中,如果不存在,则进行运动补偿得到预测图像,然后计算SATD值,而该SATD值是分别计算一级子编码单元CU的四个二级子编码单元CU的SATD值求和得到,同时为一级子编码单元CU的二级子编码单元CU记录运动矢量MV和对应的SATD值追加到二级子编码单元CU的已搜运动矢量MV队列末尾。
本发明的有益效果是:利用大块的运动估计结果加速子块的运动估计过程,可以减少一部分分像素插值滤波计算和SATD值计算,降低了运动估计的复杂度,同时可以保证压缩效率没有损失,因此可以应用到实际的HEVC编码器的优化中,编码时间节省10%以上,而且编码质量没有损失。
具体实施方式
下面结合具体实施方式对本发明做进一步的描述。
一种HEVC中P、B帧快速运动估计方法,当前的编码单元CU采用四叉树递归划分成四个一级子编码单元CU,一级子编码单元CU同样采用四叉树递归划分成四个二级子编码单元CU,以此类推,具体包括如下步骤:
(1)在当前编码单元CU的Merge&Skip_2Nx2N编码过程中,给定候选运动矢量MV,插值滤波获取预测图像后,计算该运动矢量MV的SATD值;所述Merge&Skip_2Nx2N选取相邻编码单元的运动矢量MV作为当前编码单元CU的候选运动矢量MV,从候选运动矢量MV中选出最优;计算该运动矢量MV的SATD值是通过分别计算四个一级子编码单元CU的SATD值最后求和得到的,四个一级子编码单元CU的SATD值分别为SATD_subcu0、SATD_subcu1、SATD_subcu2和SATD_subcu3,求和公式表达为SATD=SATD_subcu0+SATD_subcu1+SATD_subcu2+SATD_subcu3;
(2)以此同时,为当前编码单元CU的每个一级子编码单元CU建立一个已搜运动矢量MV队列,用于记录下运动矢量MV及对应的一级子编码单元CU的SATD值;
(3)在当前编码单元CU的其他帧间预测单元的分像素搜索过程中,对每一个搜索运动矢量MV,先判断该运动矢量MV是否存在于当前编码单元CU和一级子编码单元CU的已搜运动矢量MV队列中:如果存在,则利用记录下来的SATD值得到该运动矢量MV的SATD值;如果不存在,则需要为该运动矢量MV插值滤波生成预测图像,然后计算运动矢量MV的SATD值,而该SATD值是分别计算四个一级子编码单元CU的SATD值然后求和的结果,同时运动矢量MV及对应的一级子编码单元CU的SATD值追加到一级子编码单元CU的已搜运动矢量MV队列末尾;
(4)当前编码单元CU编码结束,进行一级子编码单元CU的编码,其他几级子编码单元的编码方法与一级子编码单元CU的编码方法相同;一级子编码单元CU的编码方法如下:
(a)在一级子编码单元CU的Merge&Skip_2Nx2N编码过程中,获取候选运动矢量MV后,首先从该一级子编码单元CU的已搜运动矢量MV队列中检索候选运动矢量MV,如果存在,直接获取SATD值;如果不存在,则进行运动补偿得到预测图像,然后计算SATD值,而该SATD值是分别计算一级子编码单元CU的四个二级子编码单元CU的SATD值求和得到,同时为一级子编码单元CU的二级子编码单元CU记录运动矢量MV和对应的SATD值追加到二级子编码单元CU的已搜运动矢量MV队列末尾;
(b)在一级子编码单元CU的其他帧间预测单元分像素搜索过程中,运动估计方法与步骤(3)相同。
实例:
对64x64编码单元CU进行Merge&Skip_2Nx2N编码,为4个32x32建立已搜运动矢量MV队列,在候选运动矢量MV运动补偿得到预测图像后,计算四个32x32子块的SATD值,在32x32的已搜运动矢量MV队列中记录运动矢量MV及对应的SATD值。然后对64x64进行Inter_2Nx2N编码,在分像素搜索计算运动矢量MV的SATDCost过程中,先从子块已搜运动矢量MV队列中查找该运动矢量MV,如果找到,则直接获取SATD值进行累加;如果没找到,则需要运动补偿,计算SATD值,而这里的SATD值也是计算四个32x32子块的SATD值然后累加,同时需要将该运动矢量MV及SATD值保存到四个32x32块的已搜运动矢量MV队列中。后续的Inter_Nx2N和Inter_2NxN的操作与Inter_2Nx2N一致。
对32x32编码单元CU进行Merge&Skip_2Nx2N编码,从32x32编码单元CU的已搜运动矢量MV队列中查找候选运动矢量MV,如果找到,则直接得到SATD值,如果没找到,则需要为该候选运动矢量MV进行运动补偿和计算SATD值,SATD值通过计算4个16x16块的SATD值累加得到,同时运动矢量MV和SATD值要保存到16x16编码单元CU的已搜运动矢量MV队列中。然后对32x32编码单元CU进行Inter_2Nx2N编码,在分像素搜索计算运动矢量MV的SATDCost过程中,先从32x32编码单元CU的已搜运动矢量MV队列及16x16子编码单元CU的已搜运动矢量MV队列中查找运动矢量MV,如果找到,则直接获取到SATD值,计算SATDCost;如果没找到,需要为该运动矢量MV进行运动补偿,计算SATD值,SATD值通过计算4个16x16块的SATD值累加得到,同时将运动矢量MV和SATD值保存到16x16块的已搜运动矢量MV队列中。后续的Inter_Nx2N和Inter_2NxN的操作与Inter_2Nx2N一致。对8x8、16x16的编码与32x32的编码过程是一致的。

Claims (5)

1.一种HEVC中P、B帧快速运动估计方法,其特征是,当前的编码单元CU采用四叉树递归划分成四个一级子编码单元CU,一级子编码单元CU同样采用四叉树递归划分成四个二级子编码单元CU,以此类推,具体包括如下步骤:
(1)在当前编码单元CU的Merge&Skip_2Nx2N编码过程中,给定候选运动矢量MV,插值滤波获取预测图像后,计算该运动矢量MV的SATD值;
(2)以此同时,为当前编码单元CU的每个一级子编码单元CU建立一个已搜运动矢量MV队列,用于记录下运动矢量MV及对应的一级子编码单元CU的SATD值;
(3)在当前编码单元CU的其他帧间预测单元的分像素搜索过程中,对每一个搜索运动矢量MV,先判断该运动矢量MV是否存在于一级子编码单元CU的已搜运动矢量MV队列中:如果存在,则利用记录下来的SATD值得到该运动矢量MV的SATD值;如果不存在,则需要为该运动矢量MV插值滤波生成预测图像,然后计算运动矢量MV的SATD值;
(4)当前编码单元CU编码结束,进行一级子编码单元CU的编码,其他几级子编码单元的编码方法与一级子编码单元CU的编码方法相同;一级子编码单元CU的编码方法如下:
(a)在一级子编码单元CU的Merge&Skip_2Nx2N编码过程中,获取候选运动矢量MV后,首先从该一级子编码单元CU的已搜运动矢量MV队列中检索候选运动矢量MV,如果存在,直接获取SATD值;如果不存在,则进行运动补偿得到预测图像,然后计算SATD值;
(b)在一级子编码单元CU的其他帧间预测单元分像素搜索过程中,运动估计方法与步骤(3)相同。
2.根据权利要求1所述的一种HEVC中P、B帧快速运动估计方法,其特征是,在步骤(1)中,所述Merge&Skip_2Nx2N选取相邻编码单元的运动矢量MV作为当前编码单元CU的候选运动矢量MV,从候选运动矢量MV中选出最优。
3.根据权利要求1或2所述的一种HEVC中P、B帧快速运动估计方法,其特征是,在步骤(1)中,计算该运动矢量MV的SATD值是通过分别计算四个一级子编码单元CU的SATD值最后求和得到的,四个一级子编码单元CU的SATD值分别为SATD_subcu0、SATD_subcu1、SATD_subcu2和SATD_subcu3,求和公式表达为SATD=SATD_subcu0+SATD_subcu1+SATD_subcu2+SATD_subcu3。
4.根据权利要求1所述的一种HEVC中P、B帧快速运动估计方法,其特征是,在步骤(3)中,如果不存在,则需要为该运动矢量MV插值滤波生成预测图像,然后计算运动矢量MV的SATD值,而该SATD值是分别计算四个一级子编码单元CU的SATD值然后求和的结果,同时运动矢量MV及对应的一级子编码单元CU的SATD值追加到一级子编码单元CU的已搜运动矢量MV队列末尾。
5.根据权利要求1所述的一种HEVC中P、B帧快速运动估计方法,其特征是,在步骤(4)的步骤(a)中,如果不存在,则进行运动补偿得到预测图像,然后计算SATD值,而该SATD值是分别计算一级子编码单元CU的四个二级子编码单元CU的SATD值求和得到,同时为一级子编码单元CU的二级子编码单元CU记录运动矢量MV和对应的SATD值追加到二级子编码单元CU的已搜运动矢量MV队列末尾。
CN201710946814.8A 2017-10-12 2017-10-12 一种hevc中p、b帧快速运动估计方法 Active CN107613305B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710946814.8A CN107613305B (zh) 2017-10-12 2017-10-12 一种hevc中p、b帧快速运动估计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710946814.8A CN107613305B (zh) 2017-10-12 2017-10-12 一种hevc中p、b帧快速运动估计方法

Publications (2)

Publication Number Publication Date
CN107613305A CN107613305A (zh) 2018-01-19
CN107613305B true CN107613305B (zh) 2020-04-07

Family

ID=61068612

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710946814.8A Active CN107613305B (zh) 2017-10-12 2017-10-12 一种hevc中p、b帧快速运动估计方法

Country Status (1)

Country Link
CN (1) CN107613305B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2020013878A (es) * 2018-07-02 2021-04-12 Huawei Tech Co Ltd Método y aparato de predicción de vector de movimiento, codificador y decodificador.
CN110662078B (zh) * 2019-09-28 2021-10-15 杭州当虹科技股份有限公司 适用于avs2和hevc的4k/8k超高清编码帧间编码帧快速算法
CN110896481B (zh) * 2019-12-31 2022-03-08 杭州当虹科技股份有限公司 一种适用于hevc的快速帧内模式编码方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102450324B1 (ko) * 2011-02-09 2022-10-04 엘지전자 주식회사 영상 부호화 및 복호화 방법과 이를 이용한 장치
KR20140057683A (ko) * 2011-08-29 2014-05-13 주식회사 아이벡스피티홀딩스 머지 모드에서 영상 부호화 방법
CN102740077B (zh) * 2012-07-04 2014-10-01 西安电子科技大学 基于h.264/avc标准的帧内预测模式选择方法
US9491459B2 (en) * 2012-09-27 2016-11-08 Qualcomm Incorporated Base layer merge and AMVP modes for video coding
CN106878737B (zh) * 2017-03-02 2019-10-08 西安电子科技大学 高效视频编码中的运动估计加速方法

Also Published As

Publication number Publication date
CN107613305A (zh) 2018-01-19

Similar Documents

Publication Publication Date Title
KR102509543B1 (ko) 영상 부호화 및 복호화 방법 및 장치
KR102509513B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN110024394B (zh) 对图像编码/解码的方法和设备及存储比特流的记录介质
KR20190114853A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN111919447A (zh) 用于对图像进行编码/解码的方法和装置以及存储有比特流的记录介质
US20140205013A1 (en) Inter-prediction method and apparatus
CN110024402B (zh) 图像编码/解码方法和装置以及存储有比特流的记录介质
US11695926B2 (en) Method and apparatus for encoding/decoding image, and recording medium for storing bitstream
CN111052744A (zh) 比运动矢量差分更精细的精度下的运动补偿
KR101197176B1 (ko) 머지 후보 블록 유도 방법 및 이러한 방법을 사용하는 장치
CN107613305B (zh) 一种hevc中p、b帧快速运动估计方法
CN112637591A (zh) 一种视频预测编码的方法及装置
CN107613294B (zh) 一种快速跳过hevc中p、b帧帧内预测模式的方法
KR102281514B1 (ko) 인터 예측 방법 및 그 장치
KR102173576B1 (ko) 인터 예측 방법 및 그 장치
CN108012152B (zh) 一种快速的hevc编码方法
KR20230031862A (ko) 인터 예측 방법 및 그 장치
KR20130083314A (ko) LCU boundary에서의 deblocking filtering 방법

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 310000 E, 16 floor, A block, Paradise software garden, 3 West Gate Road, Xihu District, Hangzhou, Zhejiang.

Applicant after: Hangzhou Dang Hong Polytron Technologies Inc

Address before: 310030, 16 floor, E software, Paradise Software Park, 3 West Gate Road, Xihu District, Hangzhou, Zhejiang.

Applicant before: HANGZHOU DANGHONG TECHNOLOGY CO., LTD.

GR01 Patent grant
GR01 Patent grant