CN110139099B - 基于预编码和编码satd值加权的帧间预测模式选择方法 - Google Patents
基于预编码和编码satd值加权的帧间预测模式选择方法 Download PDFInfo
- Publication number
- CN110139099B CN110139099B CN201910274329.XA CN201910274329A CN110139099B CN 110139099 B CN110139099 B CN 110139099B CN 201910274329 A CN201910274329 A CN 201910274329A CN 110139099 B CN110139099 B CN 110139099B
- Authority
- CN
- China
- Prior art keywords
- flag
- mode
- sub
- current
- satd
- 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
Links
Images
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/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- 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/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)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了基于预编码和编码SATD值加权的帧间预测模式选择方法,属于视频编码解码技术领域。该方法针对视频压缩编码过程中,帧间预测编码的模式选择所带来的失真和高额计算复杂度的问题,提出了一种帧间预测中模式的快速选择方法,将预编码的SATD值和编码的SATD值进行加权,将其加权值运用到帧间预测中的各个模式选择中去,在保证视频主观质量的情况下,降低了编码器的计算复杂度,减少了编码时间,提高了编码效率,方法简单易行,有利于新一代视频编码标准的产业化推广。
Description
技术领域
本发明属于视频编码解码技术领域,具体涉及基于预编码和编码SATD值加权的帧间预测模式选择方法。
背景技术
视频编码,就是指通过一些压缩的手段,将视频信号的文件转换成另一种文件格式,从而使得在信号传输过程中,减少带宽的使用,使其高效的传播。高效率视频编码(HighEfficiency Video Coding,简称HEVC)是一种新的视频压缩标准,它由MPEG和VCEG组织于2012年成立的视频联合协作小组(JCT-VC)所研发。HEVC在性能上相较于H.264更加优秀,在同等视频质量下其压缩率可达到H.264的2倍。电影、动画片等视频经HEVC视频压缩后,手机用户观看在线视频不仅流量耗费大大减少,且下载速度会更快,画质基本不会受到影响,即使在线观看也会更流畅,不易卡机。
HEVC采用了树形编码单元(Coding Tree Unit,简称CTU),一个CTU由一个亮度CTB和2个色度CTB以及附加的语法元素组成。CTU按照类似四叉树的结构划分成四个更小尺寸的编码单元(Coding Units,简称CU),最多能往下递归分4层。即由64*64一直划分到8*8。CU也由一个亮度编码块CB和两个色度编码块CB和附加的语法元素组成。CU还可以继续往下分解为预测单元(Prediction Uints,简称PU)和转换单元(Transform Uints,简称TU),他们是进行预测运算的基本单元,通过这样的处理,使得编码更加方便和简洁明了。而HEVC的帧内预测模块是以划分的块为基本单位的,运用多角度的预测方式,目的是减小由于图像内的空间相关性所带来的影响。HEVC的帧内模式选择方向由H.264的9种模式扩展为了35种。与此同时,在HEVC的帧间模式选择上,除了引用了可变的CU尺寸之外,还采用了高精度运动估计,甚至针对运动参数,设计了三种编码的模式:直接编码的Inter帧间预测模式、改良过后的Skip帧间预测和Merge帧间预测模式。
在HEVC中,视频信号序列以图像组(Group of Picture,简称GOP)为基本单位进行编码,且其中每一帧又会被分为一系列的片(编码的独立单元)。一片又会被划分为若干个CTU,CTU被划分为CU,CU是HEVC帧内/帧间预测、量化变换以及熵编码等环节共享的基本单位,可支持的编码尺寸最大为64×64,最小为8×8,编码器可以根据不同的图片内容、图片大小以及应用需求合理地选择CU的尺寸,以此获得较大程度的优化。另外,CU以CTU作为根节点,而CU又可作为PU树和TU树的根节点。
其中,PU规定了编码单元的所有预测模式,一切与预测有关的信息都定义在预测单元部分,作用是获取预测过程的相关信息。比如,帧内预测的方向、帧间预测的分割方式、运动矢量预测,以及帧间预测参考图像索引号都属于预测单元的范畴。对于图像的帧内预测,预测单元PU的尺寸与所属的编码单元CU相同,只有当编码单元CU在最低层即0层时,才能被划分为N×N的预测单元PU。因此,PU尺寸范围为4×4到64×64。对于图像的帧间预测,预测单元的分割模式有8种,4种对称模式(2N×2N、2N×N、N×2N、N×N)和4种非对称模式(2N×nU、2N×nD、nL×2N、nR×2N),其中2N×nU和2N×nD分别以上下1:3、3:1的比率划分,nL×2N和nR×2N分别以左右1:3、3:1的比率划分。SKIP模式是MERGE模式的一种,MERGE模式只需要对运动参数集索引进行编码,而SKIP模式除此之外,也不需要对残差信息进行编码。从预测单元PU中得到的预测残差经过适当的变换,使图像能量在空间域的分散分布转为在变换域的集中分布,以达到去除空间冗余的目的。
视频图像一般都具有很强的结构相关性,主要表现在图像的像素与像素之间相关性,尤其是在空间相似的情况下,这些相关性里存在一些图像的重要特征信息。在视频图像的传输和压缩编码等过程中,视频图像可能发生失真。对于视频通过压缩编码所带来的失真,在其进行帧内帧间预测的模式选择时,有些模式的图像失真较小,但是所需要的码率却很大;而有些模式的图像失真较大,但码率很小。所以,编码器利用率失真代价函数来对码率和失真进行约束,在不超过设定的最大码率的情况下,使得失真达到最小。其中的失真情况,一般用绝对误差和(Sum of Absolute Transformed Difference,简称SATD)值来表示。
随着通信相关技术的迅猛发展和自媒体时代到来,对视频的质量提出了更加严厉的要求。高达8K×4K分辨率的超高清视频也逐步出现在日常应用中,超高的分辨率也给视频的压缩技术带来了一系列的挑战。为了降低编码器的计算复杂度,同时使失真率能得到好的控制,仍需通过新的方法来提高编码效率。
发明内容
为解决现有技术中所存在的问题,本发明实施例之一的目的在于提供一种基于预编码和编码SATD值加权的帧间预测模式选择方法。
为实现上述目的,本发明的实施例之一采用以下技术方案:
基于预编码和编码SATD值加权的帧间预测模式选择方法,步骤包括:
(1)获取当前CU深度层d的标志位sub_flag值;
(2)判断所述CU是否都处于图像的内部:若是,进行步骤(3);若不是,直接进入下一深度层d+1的划分;即由当前CU往下四叉树划分为4个子CU;
(3)判断是否进行选择Merge模式或Skip模式:若是,计算帧间预测中的Merge模式和Skip模式的RDcost,选出两者中其RDcost较小的模式作为暂时最佳模式;若否,跳过当前深度对Merge模式和Skip模式的选择,直接进行步骤(4);
(4)判断是否进行下一CU深度的划分:若是,将CU进行下一深度d+1的四叉树划分;若否,直接进行步骤(5);
(5)判断是否进行其八种帧间模式的判断:若是,则进行八种帧间模式的模式选择;若否,直接进行下一深度的划分;
(6)得到当前CU的最佳预测模式;
所述sub_flag值为对result_satd进行归一化处理后的值,所述result_satd值为预编码过程中和编码过程中的SATD值进行加权处理后的值。
优选地,所述sub_flag值包括0、1和2三档。
优选地,所述加权的方法为:result_satd=(λ*satd_pred+(1-λ)*satd+128)>>8,其中λ为权重因子,satd_pred为当前CU块进行预编码时得到的SATD值,satd为当前CU块进行编码时得到的SATD值。
优选地,步骤(2)的判断条件为(numPartitions>=16||!bMVType)。
优选地,步骤(2)所述进入下一深度层d+1的划分,指由当前CU往下四叉树划分为4个子CU。
优选地,步骤(3)的判断条件为(sub_flag==2||sub_flag==1)&&mightNotSplit。
优选地,步骤(4)的判断条件为mightSplit&&(sub_flag!=0)。
优选地,步骤(5)的判断条件为(mightNotSplit&&sub_flag==2)。
在HEVC中,绝对误差和(Sum of Absolute Transformed Difference,简称SATD)值的计算是通过将运动矢量进行运动估计后求得其残差MV方阵,再对其残差MV方阵进行Hadamard变换,最后将其变换后的方阵的所有系数相加,得到其SATD值。在编码器x265中,针对其SATD值的计算是通过将每一帧进行1/2下采样后计算其每个8×8块大小的intraSATD值。
哈达玛(Hadamard)矩阵是由基本元素构成的正交方阵。而Hadamard变换是一种典型的非正弦变换,用Hadamard矩阵为基础,对于图像的数据,经过Hadamard变换后能集中到该矩阵的左上角,也就是说经过Hadamard变换后,数据都集中到了矩阵的左上角。这样,就起到了很好的图像信息压缩的作用。
在HEVC中,编码器使用了4阶的Hadamard变换和8阶的Hadamard变换来计算SATD。在其计算SATD时,当其运动矢量通过运动估计后得到的残差MV的方阵为X,其Hadamard矩阵为H,则SATD的计算公式为:
当其计算4×4块[X4]的SATD值时,先进行二维的Hadamard变换:W4=[H4]x[X4]x[H4],然后对其W4的所有系数取绝对值再进行求和。
针对8×8块[X8]的SATD值的计算,先对[X8]进行Hadamard变换:W8=[H8]x[X8]x[H8],然后计算该W8的所有系数取绝对值再进行求和。
针对SATD的计算,首先计算编码块与预测块的残差:Fenc-Pred=Res,然后将残差块拆减为4×4块,当其利用4×4大小的Hadamard矩阵时,对其做Hadamard变化,求得矩阵的绝对值和,最后累加4个4×4的satd值得到当前8×8块的satd值。
本发明将预编码过程中得到的SATD值和编码过程中得到的SATD值进行加权处理,得到最终的result_satd值,具体公式为:
result_satd=(λ*satd_pred+(1-λ)*satd+128)>>8
其中,λ为权重因子,satd_pred为当前CU块进行预编码时得到的SATD值,satd为当前CU块进行编码时得到的SATD值。
将加权后的SATD值result_satd进行归一化处理,得到标志位sub_flag,将标志位sub_flag设为3个档:0、1、2,其中针对每一深度其标志位sub_flag的选择为:
1、当其深度Depth为0时,选择其算法的快速模式选择的标志位:
当目标CU块的result_satd值小于15000时,表明该CU对后续帧质量影响较小,将其标志位sub_flag设为0,表示直接跳出该帧间预测的模式选择;
当目标CU块的result_satd值处于15000到25000之间,表明该CU对后续帧质量有所影响,将其标志位sub_flag设为1,表示当前CU块进行帧间预测的Merge/Skip模式的选择;
当目标CU块的result_satd值大于25000时,表明该CU对后续帧质量影响很大,将其标志位sub_flag设为2,表示当前CU块进行帧间预测的Merge/Skip预测模式和Inter预测模式的选择。
2、当其深度Depth为1时,选择其算法的快速模式选择的标志位:
当目标CU块的result_satd值小于4000时,表明该CU对后续帧质量影响较小,将其标志位sub_flag设为0,表示直接跳出该帧间预测的模式选择;
当目标CU块的result_satd值处于4000到8000之间,表明该CU对后续帧质量有所影响,将其标志位sub_flag设为1,表示当前CU块进行帧间预测的Merge/Skip模式的选择;
当目标CU块的result_satd值大于8000时,表明该CU对后续帧质量影响很大,将其标志位sub_flag设为2,表示当前CU块进行帧间预测的Merge/Skip预测模式和Inter预测模式的选择。
3、当其深度Depth为2时,选择其算法的快速模式选择的标志位:
当目标CU块的result_satd值小于1000时,表明该CU对后续帧质量影响较小,将其标志位sub_flag设为0,表示直接跳出该帧间预测的模式选择;
当目标CU块的result_satd值处于1000到3000之间,表明该CU对后续帧质量有所影响,将其标志位sub_flag设为1,表示当前CU块进行帧间预测的Merge/Skip模式的选择;
当目标CU块的result_satd值大于3000时,表明该CU对后续帧质量影响很大,将其标志位sub_flag设为2,表示当前CU块进行帧间预测的Merge/Skip预测模式和Inter预测模式的选择。
4、当其深度Depth为3时,选择其算法的快速模式选择的标志位:
当目标CU块的result_satd值小于300时,表明该CU对后续帧质量影响较小,将其标志位sub_flag设为0,表示直接跳出该帧间预测的模式选择;
当目标CU块的result_satd值处于300到500之间,表明该CU对后续帧质量有所影响,将其标志位sub_flag设为1,表示当前CU块进行帧间预测的Merge/Skip模式的选择;
当目标CU块的result_satd值大于500时,表明该CU对后续帧质量影响很大,将其标志位sub_flag设为2,表示当前CU块进行帧间预测的Merge/Skip预测模式和Inter预测模式的选择。
具体方法为:
1)、求其深度为0的CU_64,也就是尺寸为64×64大小的CTU的模式选择。
a.获取当前深度为0下的标志位sub_flag的值。
b.判断该CU_64是否都处于图像的内部,如果为真的话就进行下一步,如果不为真,则直接进入第2步,也就是下一深度的划分,即由当前64×64大小的CU_64分为4个32×32大小的子CU_32。其中关键判断条件为:
(numPartitions>=16||!bMVType)
c.判断是否进行选择Merge模式或Skip模式。根据其标志位sub_flag和mightNotSplit
进行判断。其中:mightNotSplit为该CU_64不再往下划分的标志位,sub_flag为经过SSIM指数加权归一化后SATD值的标志位。如果条件为真,则计算帧间预测中的Merge模式和Skip模式的RDcost,选出其中RDcost较小的模式作为暂时Best mode。如果mightNotSplit为假,则跳过当前深度对Merge模式和Skip模式的选择,直接进行第d步。其中关键判断条件为:
(sub_flag==2||sub_flag==1)&&mightNotSplit
d.判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag。其中:mightSplit为该CU_64能继续划分的标志位,sub_flag为经过SSIM指数加权归一化后SATD值的标志位。如果条件为真,则将CU_64进行下一深度的四叉树划分,进入第2步,也即是将该CU_64划分成4个子CU_32。如果条件为假,则直接进行下一步1.e。其中关键判断条件为:
mightSplit&&(sub_flag!=0)
e.判断是否进行其八种Inter模式的判断。通过其标志位mightNotSplit和sub_flag,其中:mightNotSplit为该CU_64不再往下划分的标志位,sub_flag为经过SSIM指数加权归一化后SATD值的标志位。如果条件为真,则进行八种Inter mode的模式选择,找出其Best mode,否则直接进行第2步。其中关键判断条件为:
(mightNotSplit&&sub_flag==2)
2)、当第1.d步为真时,将其进行下一深度为1的模式选择,也就是将其CU从CU_64划分为四个32×32的CU_32,且先计算第一个CU_32_1的模式选择。
a、获取当前深度为0下的标志位sub_flag的值。
b、判断该CU是否都处于图像的内部,如果为真的话就进行下一步2.c,如果不为真,则直接进入第3步,也就是下一深度的划分,由当前为CU_32_1的CU分为4个16×16大小的子CU_16。其中关键判断条件为:
(numPartitions>=16||!bMVType)
c、判断是否进行选择Merge模式或Skip模式。根据其标志位sub_flag和mightNotSplit
进行判断:如果条件为真,则计算帧间预测中的Merge模式和Skip模式,在其两者中根据其RDcost值大小进行判断,选出其中RDcost较小的模式作为暂时Best mode。如果mightNotSplit为假,则跳过当前深度对Merge模式和Skip模式的选择,直接进行第2.d步。其中关键判断条件为:
(sub_flag==2||sub_flag==1)&&mightNotSplit
d、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag。如果条件为真,将CU进行下一深度的四叉树划分,直接进入第3步,也即是将该CU划分成四个子CU。如果条件为假则进行下一步2.e。其中关键判断条件为:
mightSplit&&(sub_flag!=0)
e、判断是否进行当前CU_32_1块的八种Inter mode的判断。通过其标志位mightNotSplit和sub_flag。如果条件为真则进行Inter mode的模式选择,找出其Bestmode,否则直接进入第3步。其中关键判断条件为:
(mightNotSplit&&sub_flag==2)
3)、当第2.d步为真时,将其进行下一深度为2的模式选择,也就是将其CU从CU_32_1划分为四个16×16的CU_16,且先计算第一个CU_16_1的模式选择,其当前CU大小为16×16。
a、获取当前深度为2的标志位sub_flag的值。
b、判断该CU是否都处于图像的内部,如果为真的话就进行第3.c步,如果不为真,则直接进入第4步,也就是进行下一深度的划分,由当前16×16大小的CU_16_1分为4个8×8大小的子CU_8。其中关键判断条件为:
(numPartitions>=16||!bMVType)
c、判断是否进行选择Merge模式或Skip模式。根据其标志位sub_flag和mightNotSplit进行判断。如果条件为真,则计算帧间预测中的Merge模式和Skip模式,在其两者中根据其RDcost值大小进行判断,选出其中RDcost较小的模式作为暂时Best mode。如果条件为假,则跳过当前深度对Merge模式和Skip模式的选择,直接进行第3.d步。其中关键判断条件为:
(sub_flag==2||sub_flag==1)&&mightNotSplit
d、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag。如果条件为真,则将CU进行下一深度的四叉树划分,直接进入第4步。如果条件为假则进行下一步3.e。其中关键判断条件为:
mightSplit&&(sub_flag!=0)
e、判断是否进行其八种Inter mode的判断。通过其标志位mightNotSplit和sub_flag,如果条件为真,则进行Inter模式的选择,找出其Best mode,否则直接进入第4步。其中关键判断条件为:
(mightNotSplit&&sub_flag==2)
4)、当第3.d步为真时,将其进行下一深度为3的模式选择,也就是将其CU_16_1从16×16大小的CU划分为四个8×8的CU_8,且先计算第一个CU_8_1的模式选择。
a、获取当前深度为3的标志位sub_flag的值。
b、判断该CU是否都处于图像的内部,如果为真的话就进行第b步,如果不为真,则进入第5步,也就是进行第三步的第二个16×16子CU_16_2的模式选择判断。其中关键判断条件为:
(numPartitions>=16||!bMVType)
c、判断是否进行选择Merge模式或Skip模式。根据其标志位sub_flag和mightNotSplit进行判断。如果条件为真,则计算帧间预测中的Merge模式和Skip模式,在其两者中根据其RDcost值大小进行判断,选出其中RDcost较小的模式作为暂时Best mode。如果条件为假,则跳过当前深度对Merge模式和Skip模式的选择,直接进行第4.d步。其中关键判断条件为:
(sub_flag==2||sub_flag==1)&&mightNotSplit
d、判断是否进行其它的八种Inter mode的判断。通过其标志位mightNotSplit和sub_flag,如果条件为真,则进行帧间预测模式的选择,找出其Best mode,否则直接进入第5步。其中关键判断条件为:
(mightNotSplit&&sub_flag==2)
5)、计算第二个8×8块的CU_8_2的模式选择,遍历第4步中的4.a、4.b、4.c,找出其CU_8_2的最佳模式。
6)、计算第三个8×8块的CU_8_3的模式选择,遍历第4步中的4.a、4.b、4.c,找出其CU_8_3的最佳模式。
7)、计算第四个8×8块的CU_8_4的模式选择,遍历第4步中的4.a、4.b、4.c,找出其CU_8_4的最佳模式。
8)、计算第二个16×16块的CU_16_2的模式选择,遍历第3、4、5、6、7步找出其CU_16_2的最佳模式。
9)、计算第三个16×16块的CU_16_3的模式选择,遍历第3、4、5、6、7步找出其CU_16_3的最佳模式。
10)、计算第四个16×16块的CU_16_4的模式选择,遍历第3、4、5、6、7步找出其CU_16_4的最佳模式。
11)、计算第二个32×32块的CU_32_2的模式选择,遍历第2、3、4、5、6、7步找出其CU_32_2的最佳模式。
12)、计算第三个32×32块的CU_32_3的模式选择,遍历第2、3、4、5、6、7步找出其CU_32_3的最佳模式。
13)、计算第四个32×32块的CU_32_4的模式选择,遍历第2、3、4、5、6、7步找出其CU_32_4的最佳模式。
14)、得到当前CTU的最佳预测模式。
本发明实施例的有益效果
本发明实施例之一针对视频压缩编码过程中,帧间预测编码的模式选择所带来的失真和高额计算复杂度的问题,提出了一种帧间预测中模式的快速选择方法,将预编码的SATD值和编码的SATD值进行加权,将其加权值运用到帧间预测中的各个模式选择中去,在保证视频主观质量的情况下,降低了编码器的计算复杂度,减少了编码时间,提高了编码效率。
本方法实施例之一提供的简单易行,有利于新一代视频编码标准的产业化推广。
附图说明
图1是基于主观质量的预编码SATD计算方法的流程图,其中,判断条件A为:当前CU为4×4的块数是否大于16;判断条件B为:mightNotSplit&&(sub_flag==2||sub_flag==1);判断条件C为:当前Jmerge是否小于Jskip;判断条件D为:mightSplit&&(sub_flag!=0);判断条件E为:mightNotSplit&&(sub_flag==2);判断条件F为:Jbest1是否小于Jinter;J指当前CU的率失真代价值;Mightsplit为当前CU继续划分的标志位;Migntnotsplit为当前CU不再划分的标志位;sub_flag为归一化后的SATD值。
具体实施方式
以下是本发明的具体实施例,并结合实施例对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。
实施例1
基于预编码和编码SATD值加权的帧间预测模式选择方法,步骤包括:
(1)获取当前CU深度层d的标志位sub_flag值;
(2)判断所述CU是否都处于图像的内部:若是,进行步骤(3);若不是,直接进入下一深度层d+1的划分;即由当前CU往下四叉树划分为4个子CU;
(3)判断是否进行选择Merge模式或Skip模式:若是,计算帧间预测中的Merge模式和Skip模式的RDcost,选出两者中其RDcost较小的模式作为暂时最佳模式;若否,跳过当前深度对Merge模式和Skip模式的选择,直接进行步骤(4);
(4)判断是否进行下一CU深度的划分:若是,将CU进行下一深度d+1的四叉树划分;若否,直接进行步骤(5);
(5)判断是否进行其八种帧间模式的判断:若是,则进行八种帧间模式的模式选择;若否,直接进行下一深度的划分;
(6)得到当前CU的最佳预测模式;
所述sub_flag值为对result_satd进行归一化处理后的值,所述result_satd值为预编码过程中和编码过程中的SATD值进行加权处理后的值。
优选地,步骤(1)中,所述sub_flag值包括0、1和2三档。
步骤(1)中,所述加权的方法为:result_satd=(λ*satd_pred+(1-λ)*satd+128)>>8,其中λ为权重因子,satd_pred为当前CU块进行预编码时得到的SATD值,satd为当前CU块进行编码时得到的SATD值。
步骤(2)的判断条件为(numPartitions>=16||!bMVType)。
步骤(2)所述进入下一深度层d+1的划分,指由当前CU往下四叉树划分为4个子CU。
步骤(3)的判断条件为(sub_flag==2||sub_flag==1)&&mightNotSplit。
步骤(4)的判断条件为mightSplit&&(sub_flag!=0)。
步骤(5)的判断条件为(mightNotSplit&&sub_flag==2)。
流程如图1所示,图1中,判断条件A为:当前CU为4×4的块数是否大于16;判断条件B为:mightNotSplit&&(sub_flag==2||sub_flag==1);判断条件C为:当前Jmerge是否小于Jskip;判断条件D为:mightSplit&&(sub_flag!=0);判断条件E为:mightNotSplit&&(sub_flag==2);判断条件F为:Jbest1是否小于Jinter;J指当前CU的率失真代价值;Mightsplit为当前CU继续划分的标志位;Migntnotsplit为当前CU不再划分的标志位;sub_flag为归一化后的SATD值。
实施例2
本例基于HEVC编码器来对本发明的技术方案进行详细说明。其中,其主观质量指标采用结构相似度指标(structural similarity index,简称SSIM),对于帧间预测的模式选择,它是以CTU为基本单元进行帧间模式选择的,即从深度为0的最大CU即CTU(64×64)开始计算的,取P帧其中一个CTU来进行具体讲解。具体步骤如下:
1)、求其深度为0的CU_64,也就是尺寸为64×64大小的CU的模式选择:
a、获取当前深度为0的SATD值的标志位sub_flag:
sub_flag=1;
b、判断当前该CU_64是否都处于图像的内部。其中主要的判断条件为:
(numPartitions>=16||!bMVType)。其中numPartitions为当前CU的4×4块的,bMVType为是否重新引用了MV,
numPartitions=256,
numPartitions大于16,进入下一步;
c、判断是否进行Merge模式和Skip模式的选择,其标志位为sub_flag和mightNotSplit:
(sub_flag==2||sub_flag==1)&&mightNotSplit,
其判断条件为true,则进行Merge模式和Skip模式的判断;
d、找出当前CU_64的Merge模式和Skip模式中的最佳预测模式:
先将Skip模式设置为Bestmode,Merge模式为Tempmode;
计算Skip模式的率失真代价RDcost:Jskip,将其当作最佳模式的RDcost;
再计算Merge模式的率失真代价RDcost:Jmerge;
判断两个模式的RDcost大小;
Jskip>Jmerge,则将Merge模式当作最佳预测模式;
Jskip<Jmerge,则将Skip模式当作最佳预测模式;
当前CU_64的Jskip>Jmerge,则将Merge模式当作CU_64的最佳预测模式;
e、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag:
mightSplit&&(sub_flag!=0),
其条件为真,进入深度为1的CU做模式选择,即由64×64大小的CTU四叉树划分为4个32×32大小的子CU;
2)、做第一个CU_32_1的模式选择:
a、获取当前深度为1的SATD值的标志位sub_flag:
sub_flag=1,
b、判断当前CU_32_1是否都处于图像的内部,其中主要的判断条件为:
(numPartitions>=16||!bMVType),
numPartitions=64,
numPartitions大于16,进入下一步;
c、判断是否进行Merge模式和Skip模式的判断,其标志位为sub_flag和mightNotSplit:
(sub_flag==2||sub_flag==1)&&mightNotSplit,
其判断条件为true,则进行Merge模式和Skip模式的判断;
d、找出当前CU_32_1的Merge模式和Skip模式中的最佳预测模式:
先将Skip模式设置为Bestmode,Merge模式为Tempmode;
计算Skip模式的率失真代价RDcost:Jskip,将其当作最佳模式的RDcost;
再计算Merge模式的率失真代价RDcost:Jmerge;
判断两个模式的RDcost大小:
Jskip>Jmerge,则将Merge模式当作最佳预测模式;
Jskip<Jmerge,则将Skip模式当作最佳预测模式;
当前CU_32_1的Jskip>Jmerge,则将Merge模式当作CU_32_1的最佳预测模式;
e、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag:
mightSplit&&(sub_flag!=0),
其条件为真,进入深度为2的CU做模式选择,即由32×32大小的CU四叉树划分为4个16×16大小的子CU;
3)、做第一个CU_16_1的模式选择:
a、获取当前深度为2的SATD值的标志位sub_flag:
sub_flag=2,
b、判断该CU_16_1是否处于图像的内部,其中主要的判断条件为:
(numPartitions>=16||!bMVType),
numPartitions=16,
numPartitions大于16,进入下一步;
c、判断是否进行Merge模式和Skip模式的判断,其标志位为sub_flag和mightNotSplit:
(sub_flag==2||sub_flag==1)&&mightNotSplit,
其判断条件为true,则进行Merge模式和Skip模式的判断;
d、找出当前CU_16_1的Merge模式和Skip模式中的最佳预测模式:
先将Skip模式设置为Bestmode,Merge模式为Tempmode;
计算Skip模式的率失真代价RDcost:Jskip,将其当作最佳模式的RDcost;
再计算Merge模式的率失真代价RDcost:Jmerge;
判断两个模式的RDcost大小:
Jskip>Jmerge,则将Merge模式当作最佳预测模式;
Jskip<Jmerge,则将Skip模式当作最佳预测模式;
当前CU_32_1的Jskip>Jmerge,则将Merge模式当作CU_32_1的最佳预测模式;
d、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag,
mightSplit&&(sub_flag!=0),
其条件为真,进入深度为2的CU做模式选择,即由16×16大小的CU四叉树划分为4个8×8大小的子CU;
4)、做第一个CU_8_1的模式选择
a、获取当前深度为3的SATD值的标志位sub_flag:
sub_flag=0,
b、判断该CU_8_1是否处于图像的内部。其中主要的判断条件为:
(numPartitions>=16||!bMVType);
其中,!bMVType为true,进入下一步;
c、判断是否进行Merge模式和Skip模式的判断,其标志位为sub_flag和mightNotSplit:
(sub_flag==2||sub_flag==1)&&mightNotSplit,
其判断条件为false,跳出Merge模式和Skip模式的判断;
d、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag;
mightSplit&&(sub_flag!=0),
其条件为false,则直接进行下一步;
e、判断是否进行其八种Intra modes的判断,其标志位为mightNotSplit和sub_flag:
(mightNotSplit&&sub_flag==2),
其条件为假,直接跳过该模式的选择;
5)、做第二个CU_8_2的模式选择:
a、获取当前深度为3的SATD值的标志位sub_flag:
sub_flag=0,
b、判断该CU_8_1是否处于图像的内部,其中主要的判断条件为:
(numPartitions>=16||!bMVType),
其中,!bMVType为true,进入下一步;
c、判断是否进行Merge模式和Skip模式的判断,其标志位为sub_flag和mightNotSplit:
(sub_flag==2||sub_flag==1)&&mightNotSplit,
其判断条件为false,跳出Merge模式和Skip模式的判断;
d、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag:
mightSplit&&(sub_flag!=0),
其条件为false,则直接进行下一步;
f、判断是否进行其八种Intra modes的判断,其标志位为mightNotSplit和sub_flag:
(mightNotSplit&&sub_flag==2),其条件为假,直接跳过该模式的选择;
6)、做第三个CU_8_3的模式选择
a、获取当前深度为3的SATD值的标志位sub_flag:
sub_flag=1,
b、判断该CU_8_3是否处于图像的内部。其中主要的判断条件为:
(numPartitions>=16||!bMVType),
其中,!bMVType为true,进入下一步;
c、判断是否进行Merge模式和Skip模式的判断,其标志位为sub_flag和mightNotSplit:
(sub_flag==2||sub_flag==1)&&mightNotSplit,
其判断条件为true,进入Merge模式和Skip模式的判断;
d、找出当前CU_8_3的Merge模式和Skip模式中的最佳预测模式:
先将Skip模式设置为Bestmode,Merge模式为Tempmode;
计算Skip模式的率失真代价RDcost:Jskip,将其当作最佳模式的RDcost;
再计算Merge模式的率失真代价RDcost:Jmerge;
判断两个模式的RDcost大小:
Jskip>Jmerge,则将Merge模式当作最佳预测模式;
Jskip<Jmerge,则将Skip模式当作最佳预测模式;
当前CU_8_2的的Jskip>Jmerge,则将Merge模式当作最佳预测模式;
e、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag,
mightSplit&&(sub_flag!=0),
其中mightSplit为false,所以条件为假,则直接进行下一步;
f、判断是否进行其八种Intra modes的判断,其标志位为mightNotSplit和sub_flag:
(mightNotSplit&&sub_flag==2),
其条件为假,直接跳过该模式的选择;
7)、做第四个CU_8_4的模式选择:
a、获取当前深度为3的SATD值的标志位sub_flag:
sub_flag=0,
b、判断该CU_8_4是否处于图像的内部。其中主要的判断条件为:
(numPartitions>=16||!bMVType);
其中,!bMVType为true,进入下一步;
c、判断是否进行Merge模式和Skip模式的判断,其标志位为sub_flag和mightNotSplit:
(sub_flag==2||sub_flag==1)&&mightNotSplit,
其判断条件为false,跳出Merge模式和Skip模式的判断;
d、判断是否进行下一CU深度的划分,其标志位为mightSplit和sub_flag,
mightSplit&&(sub_flag!=0),
其条件为false,则直接进行下一步;
e、判断是否进行其八种Intra modes的判断。其标志位为mightNotSplit和sub_flag:
(mightNotSplit&&sub_flag==2),
其条件为假,直接跳过该模式的选择;
8)、此时,得到了当前CTU往下划分的第一个CU_32,再往下划分的第一个CU_16,再往下划分的四个CU_8的预测模式。接着做第二个CU_16_2的模式选择,通过遍历其中的第4)、5)、6)、7)步,找出其当前CU块的最佳模式。
9)、做第三个CU_16_3的模式选择,通过遍历其中的第4)、5)、6)、7)步,找出其当前CU块的最佳模式。
10)、做第四个CU_16_4的模式选择,通过遍历其中的第4)、5)、6)、7)步,找出其当前CU块的最佳模式。
11)、此时,得到了当前CTU往下划分的第一个CU_32的预测模式。接着做第二个CU_32_2的模式选择,通过遍历其中的第3)、4)、5)、6)、7)、8)、9)、10)步,找出其当前CU块的最佳模式。
12)、做第三个CU_32_3的模式选择,通过遍历其中的第3)、4)、5)、6)、7)、8)、9)、10)步,找出其当前CU块的最佳模式。
13)、做第四个CU_32_4的模式选择,通过遍历其中的第3)、4)、5)、6)、7)、8)、9)、10)步,找出其当前CU块的最佳模式。
14)、得出当前CTU的划分模式和其对应深度下的最佳预测模式。
15)、结束当前CTU的模式预测的循环。
Claims (7)
1.基于预编码和编码SATD值加权的帧间预测模式选择方法,其特征在于,步骤包括:
(1)获取当前CU深度层d的标志位sub_flag值;
(2)判断所述CU是否都处于图像的内部:若是,进行步骤(3);若不是,直接进入下一深度层d+1的划分;
(3)判断是否进行选择Merge模式或Skip模式:若是,计算帧间预测中的Merge模式和Skip模式的RDcost,选出两者中其RDcost较小的模式作为暂时最佳模式;若否,跳过当前深度对Merge模式和Skip模式的选择,直接进行步骤(4);
(4)判断是否进行下一CU深度的划分:若是,将CU进行下一深度d+1的四叉树划分;若否,直接进行步骤(5);
(5)判断是否进行其八种帧间模式的判断:若是,则进行八种帧间模式的模式选择;若否,直接进行下一深度的划分;
(6)得到当前CU的最佳预测模式;
所述sub_flag值为对result_satd进行归一化处理后的值,所述result_satd值为预编码过程中和编码过程中的SATD值进行加权处理后的值;
步骤(2)的判断条件为(numPartitions>=16||!bMVType),其中,numPartitions为当前CU的4×4块的数量,bMVType为是否重新引用了MV。
2.根据权利要求1所述的方法,其特征在于,所述sub_flag值包括0、1和2三档。
4.根据权利要求1所述的方法,其特征在于,步骤(2)所述进入下一深度层d+1的划分,指由当前CU往下四叉树划分为4个子CU。
5.根据权利要求1所述的方法,其特征在于,步骤(3)的判断条件为(sub_flag==2||sub_flag==1)&&mightNotSplit,其中,sub_flag为归一化后的SATD值,mightNotSplit为当前CU不再划分的标志位。
6.根据权利要求1所述的方法,其特征在于,步骤(4)的判断条件为mightSplit&&(sub_flag != 0),其中,mightSplit为当前CU继续划分的标志位,sub_flag为归一化后的SATD值。
7.根据权利要求1所述的方法,其特征在于,步骤(5)的判断条件为(mightNotSplit &&sub_flag==2),其中,mightNotSplit为当前CU不再划分的标志位,sub_flag为归一化后的SATD值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910274329.XA CN110139099B (zh) | 2019-04-08 | 2019-04-08 | 基于预编码和编码satd值加权的帧间预测模式选择方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910274329.XA CN110139099B (zh) | 2019-04-08 | 2019-04-08 | 基于预编码和编码satd值加权的帧间预测模式选择方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110139099A CN110139099A (zh) | 2019-08-16 |
CN110139099B true CN110139099B (zh) | 2023-01-06 |
Family
ID=67569509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910274329.XA Active CN110139099B (zh) | 2019-04-08 | 2019-04-08 | 基于预编码和编码satd值加权的帧间预测模式选择方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110139099B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112235570B (zh) * | 2020-09-28 | 2024-04-02 | 中南大学 | 基于预编码的深度预测方法、帧内方向预测方法 |
CN113645465B (zh) * | 2021-08-06 | 2023-10-13 | 广州安思创信息技术有限公司 | 一种基于hevc的帧间cu深度估计方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104320656A (zh) * | 2014-10-30 | 2015-01-28 | 上海交通大学 | x265编码器中帧间编码模式快速选择方法 |
CN104333755A (zh) * | 2014-10-27 | 2015-02-04 | 上海交通大学 | HEVC中B帧的基于SKIP/Merge RD Cost的CU提前终止方法 |
CN104954787A (zh) * | 2014-03-27 | 2015-09-30 | 浙江大华技术股份有限公司 | Hevc帧间预测模式选择方法及装置 |
WO2017197126A1 (en) * | 2016-05-13 | 2017-11-16 | Qualcomm Incorporated | Merge candidates for motion vector prediction for video coding |
CN107404648A (zh) * | 2017-08-24 | 2017-11-28 | 中南大学 | 一种基于hevc的视频多路转码方法 |
CN109302610A (zh) * | 2018-10-26 | 2019-02-01 | 重庆邮电大学 | 一种基于率失真代价的屏幕内容编码帧间快速算法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104602017B (zh) * | 2014-06-10 | 2017-12-26 | 腾讯科技(北京)有限公司 | 视频编码器、方法和装置及其帧间模式选择方法和装置 |
-
2019
- 2019-04-08 CN CN201910274329.XA patent/CN110139099B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104954787A (zh) * | 2014-03-27 | 2015-09-30 | 浙江大华技术股份有限公司 | Hevc帧间预测模式选择方法及装置 |
CN104333755A (zh) * | 2014-10-27 | 2015-02-04 | 上海交通大学 | HEVC中B帧的基于SKIP/Merge RD Cost的CU提前终止方法 |
CN104320656A (zh) * | 2014-10-30 | 2015-01-28 | 上海交通大学 | x265编码器中帧间编码模式快速选择方法 |
WO2017197126A1 (en) * | 2016-05-13 | 2017-11-16 | Qualcomm Incorporated | Merge candidates for motion vector prediction for video coding |
CN107404648A (zh) * | 2017-08-24 | 2017-11-28 | 中南大学 | 一种基于hevc的视频多路转码方法 |
CN109302610A (zh) * | 2018-10-26 | 2019-02-01 | 重庆邮电大学 | 一种基于率失真代价的屏幕内容编码帧间快速算法 |
Also Published As
Publication number | Publication date |
---|---|
CN110139099A (zh) | 2019-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103796029B (zh) | 视频编码设备 | |
CN104737537B (zh) | 用于译码数字视频的设备、解码视频的方法、编码视频的方法及计算机可读存储媒体 | |
TWI715506B (zh) | 圖框內預測中的圖像編碼方法、圖框內預測中的圖像解碼方法及儲存編碼影片資訊的電腦可讀取媒體 | |
CA2681025C (en) | Video encoding and decoding apparatus and method using quantization in sub-blocks | |
CN103891293B (zh) | 用于色度分量的自适应环路滤波的方法及设备 | |
TWI737971B (zh) | 圖像解碼方法 | |
CN105959699B (zh) | 一种基于运动估计和时空域相关性的快速帧间预测方法 | |
CN102484719A (zh) | 对视频编码的方法和设备及对视频解码的方法和设备 | |
CN105141954A (zh) | 一种hevc帧间编码快速模式选择方法 | |
CN105532007A (zh) | 在视频译码中用于非亮度分量的自适应解块滤波 | |
CN103561263A (zh) | 基于运动矢量约束和加权运动矢量的运动补偿预测方法 | |
CN105245887A (zh) | 用于对图像编码的设备和方法 | |
CN107071422B (zh) | 基于图像相关模型的低复杂度hevc码率适配转换编码方法 | |
CN104041045A (zh) | 用于视频译码的二次边界滤波 | |
JP2023542841A (ja) | ビデオコーディング中にフィルタ処理するための複数のニューラルネットワークモデル | |
CN110495173A (zh) | 用于执行编码树单元和编码单元的处理的图像处理方法、使用该方法的图像解码和编码方法及其装置 | |
CN104620577A (zh) | 在一般化残差预测的框架下的经加权差预测 | |
CN110139099B (zh) | 基于预编码和编码satd值加权的帧间预测模式选择方法 | |
CN110365975A (zh) | 一种avs2视频编解码标准优化方案 | |
CN110351552B (zh) | 视频编码中一种快速编码方法 | |
CN109302616A (zh) | 一种基于rc预测的hevc帧间预测快速算法 | |
CN106412611A (zh) | 一种高效视频编码的复杂度控制方法 | |
CN110495175A (zh) | 用于对用于并行处理的运动信息进行处理的图像处理方法、用于使用该图像处理方法进行解码和编码的方法、以及用于该方法的设备 | |
CN105684444A (zh) | 用于单独地界定对基于子层的层间预测的相依性的系统和方法 | |
CN110213586B (zh) | 一种vvc帧内预测角度模式快速选择方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |