CN114979640A - 一种编码方法、编码器及计算机可读存储介质 - Google Patents
一种编码方法、编码器及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114979640A CN114979640A CN202210546977.8A CN202210546977A CN114979640A CN 114979640 A CN114979640 A CN 114979640A CN 202210546977 A CN202210546977 A CN 202210546977A CN 114979640 A CN114979640 A CN 114979640A
- Authority
- CN
- China
- Prior art keywords
- current frame
- complexity
- frame
- quantization
- preset
- 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
- 238000000034 method Methods 0.000 title claims abstract description 135
- 238000013139 quantization Methods 0.000 claims abstract description 234
- 230000008569 process Effects 0.000 claims abstract description 60
- 238000004364 calculation method Methods 0.000 claims description 31
- 230000001186 cumulative effect Effects 0.000 claims description 22
- 230000015654 memory Effects 0.000 claims description 21
- 230000006835 compression Effects 0.000 claims description 18
- 238000007906 compression Methods 0.000 claims description 18
- 238000009825 accumulation Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 7
- 238000011156 evaluation Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 10
- 230000003044 adaptive effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000005484 gravity Effects 0.000 description 4
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/124—Quantisation
-
- 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/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/172—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 picture, frame or field
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例公开了一种编码方法、编码器及计算机可读存储介质,能够提高编码视频的视频质量,该方法包括:当当前帧为待编码视频中的首帧时,在帧间级码率控制过程中,获取当前帧的图像信息;基于当前帧的图像信息,计算当前帧的复杂度累积值;基于当前帧的复杂度累积值,对当前帧进行编码量化估计,得到当前帧的初始量化步长;基于当前帧的初始量化步长,对当前帧进行编码,得到当前帧的编码结果。
Description
本申请基于申请号为202010693484.8、申请日为2020年07月17日、申请名称为“一种编码方法、编码器及计算机可读存储介质”的中国专利申请提出,在该中国专利申请记载的范围内提出分案,该中国专利申请的全部内容在此引入本申请作为参考。
技术领域
本申请涉及音视频编码领域,尤其涉及一种编码方法、编码器、及计算机可读存储介质。
背景技术
视频编码是一种视频压缩技术,是利用视频信息的时域冗余和空域冗余对视频进行压缩的技术,可以达到减小视频占用的存储空间和网络带宽的目的。码率控制是视频编码中的一项关键技术,其目的是在保证视频压缩后所占用比特数一定的情况下使得视频的客观质量最优。量化参数(QuantizationParameter,QP)是视频编码技术中的一个关键参数,直接决定视频编码单元的压缩程度,从而控制视频编码后的码率和视频质量。现有技术中对与量化参数相关的压缩系数的初始值设置,通常采用的是人工预设的方式,无法根据具体视频内容进行信息反馈,实现自适应调整,从而容易造成对首帧编码时设置的QP不合理,导致即时解码刷新(Instantaneous Decoding Refresh,IDR)帧的码率浪费,从而降低了视频质量。
发明内容
本申请实施例期望提供一种编码方法、编码器及计算机可读存储介质,能够提高编码视频的视频质量。
本申请的技术方案是这样实现的:
第一方面,本申请实施例提供了一种编码方法,应用于编码器,包括:
当当前帧为待编码视频中的首帧时,在帧间级码率控制过程中,获取当前帧的图像信息;
基于所述当前帧的图像信息,计算当前帧的复杂度累积值;
基于所述当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长;
基于所述当前帧的初始量化步长,对所述当前帧进行编码,得到所述当前帧的编码结果。
第二方面,本申请实施例提供了一种编码器,包括:获取单元、计算单元、量化单元与编码单元,其中,
所述获取单元,用于当当前帧为待编码视频中的首帧时,在帧间级码率控制过程中,获取当前帧的图像信息;
所述计算单元,用于基于所述当前帧的图像信息,计算当前帧的复杂度累积值;
所述量化单元,用于基于所述当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长;
所述编码单元,用于基于所述当前帧的初始量化步长,对所述当前帧进行编码,得到所述当前帧的编码结果。
第三方面,本申请实施例提供了一种编码器,包括:
存储器,用于存储可执行数据指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现如上述任一种所述的编码方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现如上述任一种所述的编码方法。
本申请实施例提供了一种编码方法、编码器及计算机可读存储介质,方法包括:当当前帧为待编码视频中的首帧时,在帧间级码率控制过程中,获取当前帧的图像信息;基于当前帧的图像信息,计算当前帧的复杂度累积值;基于当前帧的复杂度累积值,对当前帧进行编码量化估计,得到当前帧的初始量化步长;基于当前帧的初始量化步长,对当前帧进行编码,得到当前帧的编码结果。通过本申请实施例中的方法,可以通过首帧的图像信息预估首帧的复杂度,并基于实际视频中首帧的复杂度进行QP值的合理设置,使得基于合理QP值进行的视频编码能够得到更准确的编码结果,最终提高了编码视频的视频质量。
附图说明
图1为目前的X.264编码***的编码流程图;
图2为本申请实施例提供的一种编码方法的流程图一;
图3为本申请实施例提供的一种编码流程图一;
图4为本申请实施例提供的一种编码流程图二;
图5为本申请实施例提供的宏块级码率控制过程的一种实现方式;
图6为本申请实施例提供的宏块级码率控制过程的另一种实现方式;
图7为本申请实施例提供的一种编码方法的流程图二;
图8为本申请实施例提供的一种编码方法的流程图三;
图9为本申请实施例提供的一种编码方法的流程图四;
图10为本申请实施例提供的一种编码方法的流程图五;
图11为本申请实施例提供的一种编码器的组成结构示意图一
图12为本申请实施例提供的一种编码器的组成结构示意图二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)H.264:高度压缩数字视频编解码器标准。
2)X.264:开源H.264视频编码函数库。
3)SATD:Sum of Absolute Transformed Difference,残差经哈德曼变换的4×4块的预测残差绝对值总和,是一种简单的时频变换,用来反映生成码流的大小。
4)QP:量化参数,即量化步长。QP的值越小,量化步长越小,量化的精度就越高,意味着同样画质的情况下,产生的数据量可能会更大。
5)VBV:Video Buffering Verifier,视频缓存检验器,用于确保输出的编码码流在接收端不会发生缓冲区下溢。
6)AQ:Adaptive Quantization,自适应量化。
7)MB:Macro Block,宏块。
8)RCEQ:Rate-Control Equation,速率控制公式,RCEQ建立了一种运动复杂度到量化步长的映射模型。
9)PSNR:Peak Signal to Noise Ratio,峰值信噪比,用于评价图像画质的客观量测法。
H.264采用拉格朗日代价函数来控制编码,这也是H.264编码复杂度较高的主要原因之一,X.264作为H.264的应用版本,采用半精度帧的SATD作为QP选择的主要依据。X.264码率控制过程分为帧间级码率控制过程和宏块级码率控制过程,其中,每一帧QP值的分配由帧间级码率控制来实现,而每一帧帧内的QP值的分配由宏块级码率控制来实现。X.264码率控制过程主要取决于两个变量,其一为视频帧的复杂度,其二是码率的预算。通常视频帧的复杂度越高,编码所需要的比特越多。如图1所示,图1为目前的X.264编码***的编码流程图。待编码视频进入编码***后,会同步进入帧间级码率控制过程(即帧级码率控制)与宏块级码率控制过程中,帧间级码率控制过程首先通过look ahead模块100对待编码视频提供视频帧缓冲队列,辅助完成更稳定的码率控制,再通过复杂度估计模块101估计出待编码视频中当前帧的复杂度,示例性的,当前帧的复杂度可以是模糊复杂度;量化级别计算模块103用于根据复杂度估计模块101输出的当前帧的复杂度进行量化级别的计算,先得到当前帧对应的量化比重,并根据码率因子计算模块102提供的码率因子(ratefactor)对量化比重进行调整,得到初始量化级别;码率因子计算模块102用于根据反馈的已编码帧的码率,计算出当前帧的复杂度累积值,再根据复杂度累积值计算出码率因子(ratefactor)提供给量化级别计算模块103;量化级别计算模块103输出的初始量化级别会再由缓存控制(VBV)模块104基于接收端缓冲区域的大小进行进一步的调整,得到量化级别,再通过量化级别转换模块105将量化级别转为初始量化步长提供给宏块级量化步长调整模块106。与此同时,宏块级的码率控制过程与帧间级码率控制过程同步进行,其中,宏块计算模块108用于根据当前帧的图像内容,计算出当前帧的宏块结构(MBTree),自适应量化模块107,用于根据当前帧的宏块结构和图像内容计算出当前帧的平均宏块能量,并确定出与平均宏块能量对应的预设量化强度因子;宏块级量化步长调整106用于根据预设量化强度因子对当前帧的初始量化步长进行调整,得到当前帧对应的量化步长。最后由编码模块109根据当前帧对应的量化步长对当前帧进行编码,持续上述过程直至待编码视频中的所有帧编码完毕后,输出编码完成的码流。
从图1所示的编码方法中可以看出,目前,在帧级别码率控制过程中,码率因子计算模块102需要根据上一帧编码结果的反馈来进行码率因子的计算,进而对量化级别计算模块103中计算出的量化比重进行调整,得到初始量化级别。但对于首帧如IDR帧来说,其所在的首帧位置上无法得到上一帧编码结果的反馈,因此目前的实现方式是在人工设定一个固定数值作为码率因子的初始值,进而根据固定的码率因子初始值逐步计算出首帧的QP值,这样会导致首帧的QP值设置无法根据复杂度进行自适应调整,造成了码率浪费,降低了整体视频的质量。进一步的,目前,在宏块级码率控制过程中,自适应量化模块107中预先计算出的量化强度因子在整个视频的编码过程中处于固定不变的状态,但是实际编码中的视频内容不断变化的,如果在复杂区域使用较大的量化强度因子,会使得最终根据量化强度因子调整得到的量化步长明显增加,在码率较低的条件下,则会导致复杂区域模糊现象严重,从而进一步降低了整体视频的质量。
本申请实施例的提供一种编码方法,应用于编码器,如图2所示:
S101、当当前帧为待编码视频中的首帧时,在帧间级别码率控制过程中,获取当前帧的图像信息。
本申请实施例中,对于待编码视频中的首帧,编码器首先获取首帧的图像信息。
本申请实施例中,图像信息包括首帧的平均宏块能量、首帧的梯度值、首帧的边缘信息及首帧的直方图信息中的任一种。
在本申请的一些实施例中,基于图1所示的码率控制流程,由于在宏级码率控制过程中,宏块计算模块108的执行过程在逻辑上优先于帧间级码率控制过程,考虑在图1的流程中,不增加计算量的基础上,编码器可以将宏块计算模块108执行过程中生成的平均宏块能量作为当前帧的图像信息,以通过平均宏块能量来评估待编码视频中首帧的复杂度累积值,如图3所示。
本申请实施例中,图3的宏块计算模块108会将计算得到的平均宏块能量反馈至帧间级码率控制过程中的码率因子计算模块102,以使码率因子计算模块102能够根据首帧的平均宏块能量进行码率因子的计算,进而根据码率因子调整首帧对应的初始量化步长。
在本申请的另一些实施例中,当当前帧的图像信息为梯度值、边缘信息或直方图信息时,编码器可以如图4所示,通过图像处理模块110,根据当前帧中包含的像素信息,计算出当前帧的梯度值、边缘信息或直方图信息,并将当前帧的梯度值、边缘信息或直方图信息反馈至码率因子计算模块102,以使码率因子计算模块102能够根据首帧的梯度值、边缘信息或直方图信息进行码率因子的计算,进而根据码率因子调整首帧对应的初始量化步长。示例性的,编码器可以根据像素信息中的灰度信息,计算当前帧中每个像素邻域内的灰度变化,进而计算出可以反映当前帧的细节反差程度和纹理变化特征的梯度值,将梯度值作为当前帧的图像信息;在另一些实施例中,编码器可以根据梯度值进一步得到当前帧的边缘信息,将边缘信息作为当前帧的图像信息,以根据边缘信息对当前帧中的内容进行识别和分析;或者,编码器也可以根据像素信息中的灰度信息,计算出可以反映当前帧明暗程度及亮度、色阶分布的直方图信息,将直方图信息作为当前帧的图像信息。
S102、基于当前帧的图像信息,计算当前帧的复杂度累积值。
本申请实施例中,编码器基于当前帧的图像信息,计算当前帧的复杂度累积值,从而可以根据首帧复杂度累积值对码率因子进行合理的初始化,以通过码率因子对首帧的量化比重进行调整。
本申请实施例中,对于不同类型的图像信息,可以预先建立对应的目标函数模型,将首帧的图像信息作为目标函数模型的输入值,将初始量化步长作为目标函数模型输出值,以输出的初始量化步长满足低码率、高质量视频应用为目标,通过多次仿真实验分析输出的初始量化步长的数值的优劣,通过函数拟合的方式,拟合初始量化步长与图像信息的曲线,得到初始量化步长的最优值所对应的初始量化步长与图像信息之间的函数关系,进而根据初始量化步长与图像信息之间的函数关系,以及初始量化步长与复杂度累积值之间的预设函数关系,推导出当前帧的图像信息与复杂度累积值之间的关系公式,基于关系公式计算出当前帧的复杂度累积值。
可以看出,由于当前帧的图像信息与复杂度累积值之间的关系公式是通过多次仿真实验,将初始量化步长与图像信息进行曲线拟合得到的,因此可以通过当前帧的图像信息所计算出的复杂度累积值更能适应当前帧的真实图像内容,从而保证根据复杂度累积值计算得到的码率因子,以及根据码率因子调整得到的初始量化步长更加准确。
S103、基于当前帧的复杂度累积值,对当前帧进行编码量化估计,得到当前帧的初始量化步长。
本申请实施例中,当当前帧为首帧时,编码器可以基于首帧的图像信息计算出首帧的复杂度累积值。
本申请实施例中,当当前帧为非首帧时,编码器可以结合非首帧的上一帧的编码结果,计算出非首帧的复杂度累积值。
本申请实施例中,编码器可以先通过复杂度估计模块估计出当前帧的复杂度,并根据复杂度计算出当前帧的量化比重,再根据当前帧的复杂度累积值计算出首帧对应的码率因子,根据码率因子对量化比重进行一次调整得到初始量化级别,再通过缓存控制模块对初始量化级别进行进一步调整,得到当前帧的量化级别,再根据量化级别与量化步长的预设映射关系,将量化级别转化为初始量化步长。
S104、基于当前帧的初始量化步长,对当前帧进行编码,得到当前帧的编码结果。
本申请实施例中,编码器得到当前帧的初始量化步长即QP值之后,即完成了当前帧对应的帧间级别的码率控制流程,编码器可以继续通过宏块级码率控制过程,对当前帧的初始量化步长进行调整,得到当前帧的量化步长。
在本申请的一些实施例中,宏块级码率控制过程的一种实现方式可以如图5所示,在宏块级码率控制过程1中,编码器可以进行宏块能量计算过程,将当前帧中根据图像内容划分为多个不同的宏块,并根据每个宏块内像素的像素值与平方误差和,计算出每个宏块的宏块能量,进而得到当前帧的平均宏块能量。宏块能量计算过程中得到的平均宏块能量会在自适应量化调节过程中,根据平均宏块能量与预设量化强度因子的对应关系,得到平均宏块能量对应的预设量化强度因子,最后在量化步长调整过程中,通过预设量化强度因子得到初始量化步长的偏移值,再通过初始量化步长的偏移值对初始量化步长进行调整,得到当前帧的量化步长。
通常情况下,如果当前帧画面动态情况较多,则其对应的平均宏块能量较高,编码器可以选择较低的预设量化强度因子aq_strength值,示例性的,选择取值在0.6-0.8之间的aq_strength,以保留更多的高频细节,提高整体视频质量;而如果当前帧静态画面较多,则其对应的平均宏块能量较低,编码器可选取较高的aq_strength值,示例性的,编码器可选取大于等于1的aq_strength,以防止暗部因比特不够产生色带。在一些实施例中,上述方法过程可以通过如下代码实现:
strength=h->param.rc.f_aq_strength*avg_adj;//通过预设量化强度因子aq_strength与平均宏块能量avg_adj调节当前帧的量化强度。
qp_adj=strength*(qp_adj-avg_adj)+bias_strength*(1.f-14.f/(qp_adj*qp_adj));//QP偏移值qp_adj设置
本申请实施例中,对于上述代码,如果qp_adj-avg_adj大于0,宏块能量energy大的宏块的QP会被调整得更大,从而使得最终计算的qp_offset越大,复杂区域更模糊;如果qp_adj-avg_adj小于0,strength越大,qp_offset越小,最终QP也越小,平坦区域更清晰,由于h->param.rc.f_aq_strength是人工设定的固定aq_strength值,因此难以适应待编码视频中出现的复杂度变化。
在本申请的另一些实施例中,宏块级码率控制过程的另一种实现方式可以如图6所示,在宏块级码率控制过程2中,编码器利用宏块能量计算过程中计算出的每个宏块的宏块能量,通过复杂度信息计算过程得到每个宏块的内容复杂度,并根据预设的复杂度基准,在复杂度基准调整过程中将当前帧基于每个宏块的内容复杂度划分为不同的区域,并通过自适应量化过程在不同区域设定不同的预设量化强度因子aq_strength,最后通过量化步长调整过程,根据每个区域不同的预设量化强度因子aq_strength对初始量化步长进行偏移量调整,得到该区域对应的量化步长,从而实现预设量化强度因子aq_strength随图像复杂度的变动,能够降低复杂区域的预设量化强度因子,减轻复杂区域的模糊现象,改善预设量化强度因子对视频内容的适应能力。
本申请实施例中,编码器根据宏级量化步长调整模块得到当前帧中每个宏块对应的量化步长之后,即可基于量化步长对当前帧进行编码,得到当前帧的编码结果。编码器基于当前帧的编码结果,以同样的码率控制流程进行下一帧的编码,直至待编码视频编码完成。
可以理解的是,本申请实施例中,对于待编码视频的首帧,编码器可以基于首帧的图像信息得到首帧对应的复杂度累积值,进而根据复杂度累积值进行进一步计算得到首帧的初始量化步长,从而实现了首帧的初始量化步长设置可以根据首帧的复杂度进行自适应设置,避免人工设置了不合理的首帧初始量化步长造成的码率浪费,提高了编码后视频的质量,进一步的,编码器在宏块级码率控制过程中,可以根据宏块复杂度对当前帧进行分区域分场景的预设量化强度因子设置,从而可以根据不同的预设量化强度因子对当前帧的不同复杂度区域分别计算出适合的量化步长,实现了预设量化强度因子随图像复杂度的自适应,提高了图像的清晰度,进一步改善了编码后的视频质量。
下面,以图像信息为首帧的平均宏块能量为例,进一步说明本申请实施例中的编码方法。
在本申请的一些实施例中,基于图2,当当前帧为待编码视频中的首帧时,在帧间级码率控制过程中,S101中编码器获取当前视频的图像信息可以通过S1011-S1012实现,如图7所示:
S1011、在宏块级码率控制过程中,对当前帧进行宏块划分,得到至少一个宏块。
本申请实施例中,编码器通过宏块计算模块,基于当前帧的图像内容对当前帧进行宏块划分,得到至少一个宏块。
在一些实施例中,至少一个宏块可以是MB tree的形式。
S1012、计算至少一个宏块的平均宏块能量。
本申请实施例中,编码器可以在至少一个宏块的每个宏块中,通过像素值与平方误差和,计算出每个宏块的宏块能量,再根据每个宏块的宏块能量得到至少一个宏块的平均宏块能量。
可以理解的是,本申请实施例中使用平均宏块能量作为首帧的图像信息,可以直接利用宏块级码率控制过程中计算得到的平均宏块能量,不需要额外进行图像处理工作,减少了编码器的计算量。
在本申请的一些实施例中,基于图2或图7,当当前帧为待编码视频中的首帧时,在帧间级别码率控制过程中,S102中编码器基于当前帧的图像信息,计算当前帧的复杂度累积值可以通过S1021-S1022实现,如图8所示:
S1021、根据平均宏块能量、预设首帧编码比特与至少一个预设拟合因子对当前帧进行复杂度评估,得到当前帧的预估编码复杂度;至少一个预设拟合因子用于拟合平均宏块能量与初始量化步长之间的关系曲线。
本申请实施例中,编码器根据平均宏块能量、预设首帧编码比特与至少一个预设拟合因子对当前帧进行复杂度评估,得到当前帧的预估编码复杂度的具体过程可以是:将平均宏块能量乘以第一拟合因子,得到第一乘积结果;将预设首帧编码比特乘以第二拟合因子,得到第二乘积结果;计算第一乘积结果减去第二乘积结果的差值,并将差值与第三拟合因子相加,得到预估编码复杂度;其中,至少一个预设拟合因子包含第一拟合因子、第二拟合因子与第三拟合因子。如公式(1)所示:
cplxr_zero=s1×avg_energy-s2×wanted_bits_window+s3 (1)
上述公式(1)中,avg_energy为当前帧即首帧的平均宏块能量,cplxr_zero为根据平均宏块能量计算出的当前帧的预估复杂度,s1、s2与s3为至少一个预设拟合因子,本申请实施例中的至少一个预设拟合因子是通过大量仿真实验,调整初始量化步长与avg_energy之间的关系,以满足低码率、高质量视频应用为目标,分析测试视频初始量化步长的优劣,拟合QP-energy曲线得到的,也就是说,本申请实施例中的预设拟合因子为通过函数曲线拟合的方式所获得的公式(1)中对应参数项的最优值。在一些实施例中,s1的取值可以是13000,s2的取值可以是0.3858,s3的取值可以是515000,也可以根据实际的编码目标,通过函数曲线拟合的方式计算出其他预设拟合因子的取值,具体的根据实际应用进行选择,本申请实施例不做限定。
公式(1)中,wanted_bits_window表示已编码帧的目标文件大小,即已编码帧的总比特值,wanted_bits_window可以通过公式(2)求得,如下:
wanted_bits_window=bitrate/fps (2)
公式(2)中的fps为待编码视频的预设帧率,bitrate表示编码后的码率,首帧的bitrate为预设值,非首帧的bitrate为其上一帧编码后对应的码率,因此,首帧的wanted_bits_window也相当于为预设值,本申请实施例中将预设首帧编码比特作为首帧的wanted_bits_window值。
S1022、基于预估编码复杂度,计算当前帧的复杂度累积值。
本申请实施例中,编码器基于预估编码复杂度,计算当前帧的复杂度累积值可以包括:
S10221、获取至少一个宏块的宏块数量。
S10222、根据预估编码复杂度、至少一个宏块的宏块数量与预设压缩参数对复杂度累积值进行初值计算,得到当前帧的复杂度累积值。
本申请实施例中,编码器获取宏块计算模块划分宏块过程后得到的至少一个宏块的宏块数量,并将预设压缩参数作为预估编码复杂度的次幂进行运算,并将运算结果与预设系数、以及宏块数量的二分之一次幂的相乘,得到当前帧的复杂度累积值。
示例性的,上述计算过程可以如公式(3)所示:
cplxr_sum=0.01×cplxr_zeroqcom×(mbcount)1/2 (3)
公式(3)中,qcomp为预设压缩参数。该参数外部可调,可以在0和1之间取值。mbcount为至少一个宏块的宏块数量。
在一些实施例中,当当前帧为首帧时,编码器通过S1012计算出当前帧的复杂度累积值cplxr_sum的代码实现可以如下所示:
而在目前帧级别码率控制过程中,对于首帧的复杂度累积值cplxr_sum的计算方法如公式(4)所示:
cplxr_sum=0.01×(7×105)qcompress×(mbcount)1/2 (4)
公式(1)对应的代码实现如下所示:
可以理解的是,目前帧级别码率控制过程中,对于首帧的复杂度累积值cplxr_sum作为一个固定值进行初始化设定的,不能根据首帧的实际复杂度实现自适应调整。进而无法根据合理的压缩系数进行进一步计算,以致影响了最终根据压缩系数计算出的首帧的初始量化步长,降低了编码后的视频质量。而本申请实施例中的首帧的复杂度累积值cplxr_sum的计算是通过首帧的预估复杂度得到的,从而可以根据复杂度累积值cplxr_sum计算得到的首帧初始量化步长可以实现跟随首帧复杂度自适应调整,提高了首帧初始量化步长设置的合理性,节约了编码码率,提高了编码后的视频质量。
需要说明的是,在本申请的一些实施例中,当当前帧为待编码视频中的非首帧时,编码器可以基于当前帧对应的上一帧编码后的比特数,与上一帧的量化参数,对复杂度进行累积处理,得到当前帧的复杂度累积值。也就是说,当当前帧为非首帧时,编码器是根据上一帧的编码结果,来计算当前帧的复杂度累积值的,具体如公式(5)所示:
公式(5)中,bits(i-1)为上一帧编码得到的实际比特数,qscale_raw(i-1)为上一帧对应的未经码率因子调整的量化比重值,qscale_adj(i-1)为上一帧对应的经码率因子调整后的初始量化级别,cplxr_sum(i-1)为上一帧对应的复杂度累积值,cplxr_sum(i)为当前帧的复杂度累积值。
可以理解的是,当前帧的复杂度累积值是一个迭代量,在编码过程中逐渐累积,因此首帧的复杂度累积值设置会影响到对整个视频的编码质量。本申请实施例中的方法通过平均宏块能量计算出首帧的复杂度累积值,能够实现首帧的复杂度累积值根据首帧的复杂度进行自适应调整,使得首帧的复杂度累积值的设定更加准确,从而提高了整个视频编码的质量。
在本申请的一些实施例中,基于图8,S103中编码器基于当前帧的复杂度累积值,对当前帧进行编码量化估计,得到当前帧的初始量化步长可以通过S1031-S1034来实现,如图9所示:
S1031、对当前帧进行模糊复杂度估计,并对估计得出的模糊复杂度进行压缩处理,计算得到当前帧的复杂度。
本申请实施例中,编码器对当前帧做抽样滤波,得到分辨率是原来一半的小图,在小图上做半像素精度预测,与原图相减得到残差,再对残差做哈德曼变换并求绝对和得到SATD,即可根据当前帧SATD与之前相邻帧的SATD值的加权平均得到当前帧的模糊复杂度。
本申请实施例中,编码器对当前帧进行模糊复杂度估计可以如公式(6)和公式(7)所示,如下:
BlurCplx=Cplxsum/Cplxcount (6)
公式(6)中,BlurCplx代表模糊复杂度,编码器可以根据公式(6),通过对邻近已编码帧的复杂度加权来得到BlurCplx。公式(6)中,Cplxsum表示编码复杂度加权和,Cplxcount表示编码帧数加权和,Cplxsum与Cplxcount的计算方法如公式(7)所示,公式(7)中,i为待编码帧的序号,satd为当前帧经过运动补偿后的残差绝对值总和SATD,首帧的satd为预设值,非首帧的satd可以根据时频变换的方式计算得到,用于反映生成码流的大小。
本申请实施例中,由于视频帧恒定的质量并不意味着要使用恒定的QP值,根据人眼视觉特性,对于高复杂度的场景,人眼主观很难感受到细节的丢失,因此可以通过感知编码优化的方法,对当前帧的模糊复杂度进行非线性压缩来降低码率,如公式(8)所示:
rceq=BlurCplx(1-qcomp),qcomp∈[0,1] (8)
公式(8)中,rceq表示经感知编码优化后的复杂度,可以作为量化比重,用于评估当前帧的可量化程度;qcomp的具体含义为,当qcomp等于1时,各帧的量化比重,即rceq都一样,分配给平缓的帧和复杂的帧的比特相同;当qcomp=0时,各帧的量化比重和其模糊复杂度成正比,最终得到各帧的QP值相等,相当于关闭了此项感知编码优化。
S1032、计算待编码视频中已编码帧的总比特值与复杂度累积值之间的比值,得到当前帧的码率因子。
本申请实施例中,编码器计算待编码视频中已编码帧的总比特值与复杂度累积值之间的比值,作为当前帧的码率因子,如公式(9)与公式(10)所示:
ratefactor=wanted_bits_window/cplxr_sum (9)
公式(9)中,ratefactor为码率因子计算模块根据已编码帧bitrate生成的当前帧的码率因子。
S1033、基于复杂度与码率因子,得到当前帧的量化级别。
本申请实施例中,编码器可以首先将量化比重与码率因子的比值,作为当前帧的初始量化级别。
本申请实施例中,编码器可以通过公式(10),计算量化比重rceq与码率因子ratefactor的比值,得到当前帧的初始量化级别:
qscale=rceq/ratefactor (10)
公式(10)中,qscale为当前帧的初始量化级别。
本申请实施例中,编码器得到当前帧的初始量化级别之后,可以基于预设目标比特数,对初始量化级别进行调整,得到当前帧的量化级别。
本申请实施例中,预设目标比特数为编码视频对应的接收端缓冲区的大小,编码器可以通过缓存控制模块,根据预设目标比特数与当前帧实际编码后产生的总比特值之间的偏差,对初始量化级别进行调整,得到当前帧的量化级别,使得生成的码流大小稳定。
S1034、基于预设量化级别与初始量化步长的映射关系,将当前帧的量化级别转化为初始量化步长。
本申请实施例中,预设量化级别与初始量化步长的映射关系可以如公式(11)所示:
公式(10)中,a、b、c为经验值系数,在一些实施例中,a可以取值为12,b可以取值为6,c可以取值为0.85,qscale为量化级别,QP为由量化级别转化得到的量化步长。
因此,编码器计算出量化级别之后,即可基于预设量化级别与初始量化步长的映射关系,将当前帧的量化级别转化为初始量化步长。
在本申请的一些实施例中,基于图2或图7,S104中编码器基于当前帧的初始量化步长,对当前帧进行编码,得到当前帧的编码结果可以通过S1041-S1044实现,如图10所示:
S1041、在宏块级码率控制中,对当前帧进行宏块划分后,获取每个宏块的内容复杂度。
本申请实施例中,在宏块级码率控制中编码器,对当前帧进行宏块划分后,计算每个宏块能量时生成的复杂度数据作为对应每个宏块的内容复杂度。
S1042、根据每个宏块的内容复杂度和预设复杂度阈值,对当前帧进行区域划分,得到至少一个区域。
本申请实施例中,编码器首先设定预设复杂度阈值,通常预设复杂度阈值可以是一经验值,示例性的,预设复杂度阈值可以在[80000,85000]之间取值,优选的,预设复杂度阈值可以为82400。
本申请实施例中,编码器根据每个宏块的内容复杂度和预设复杂度阈值的对比,以宏块为单位对当前帧进行区域划分,将复杂度高于和低于预设复杂度阈值的宏块划分到不同的区域,从而得到至少一个区域。其中,至少一个区域中每个区域的复杂度不同。
在一些实施例中,通过预设复杂度阈值,编码器可以将当前帧划分为高复杂度区域与低复杂度区域。
S1043、确定至少一个区域中的每个区域的预设量化强度因子,并根据每个区域对应的预设量化强度因子,对初始量化步长进行调整,得到每个区域对应的量化步长。
本申请实施例中,编码器首先根据每个区域包含的宏块的内容复杂度,确定每个区域的区域复杂度。
在一些实施例中,编码器可以计算每个区域包含的各个宏块的内容复杂度的均值,作为每个区域的区域复杂度,或者也可以根据其他衡量计算的方法,如方差等,具体的根据实际情况进行选择,本申请实施例不做限定。
本申请实施例中,编码器根据区域复杂度与预设量化强度因子的预设对应关系,确定出每个区域的预设量化强度因子。其中,预设量化强度因子与区域复杂度成反比。
本申请实施例中,预设量化强度因子aq_strength可用于调整平坦区域块效应和纹理区域模糊效应。其中,aq_strength越高,复杂区域的高频信息消减越多,但平坦区域清晰度提升,也意味着纹理越模糊,反之,aq_strength越低,复杂区域的高频信息保留越多,而平坦区域的清晰度降低,也就是说纹理区域更清晰。
在一些实施例中,编码器可以将当前帧划分为高复杂度区域与低复杂度区域,并设定高复杂度区域的预设量化强度因子aq_strength为0.5,低复杂度区域的预设量化强度因子aq_strength为1.0,从而实现通过较低的aq_strength降低模糊现象,提升编码后视频的整体质量,具体代码如下:
上述代码中,h->param.rc.f_aq_strength_cplx=0.5,表示高复杂度区域的预设量化强度因子aq_strength,frame->s_cplx为该区域中根据各个宏块的内容复杂度得到的区域复杂度,当区域复杂度大于预设复杂度阈值82400时,编码器可以使用高复杂度量化强度因子aq_strength,即0.5,来设置该高复杂度区域的初始量化步长,以降低高复杂区域模糊现象。
本申请实施例中,编码器通过同样的方法,根据每个区域的区域复杂度确定该区域上设定的预设量化强度因子,并根据每个区域上各自设定的预设量化强度因子对初始量化步长进行调整,对应得到每个区域对应的量化步长。也就是说,本申请实施例中当前帧最终计算得到的量化步长是至少一个量化步长,至少一个量化步长与当前帧中的内容场景的复杂度相对应,并可根据内容场景的区域复杂度进行自适应调整。
S1044、根据每个区域对应的量化步长,对当前帧的各个区域进行编码,得到当前帧的编码结果。
本申请实施例中,编码器根据每个区域对应的量化步长,对当前帧的各个区域进行编码,得到当前帧的编码结果。
可以理解的是,本申请实施例中,编码器通过宏块复杂度对当前帧进行区域划分,实现了在宏块级码率控制过程中调整量化步长时,可以根据当前帧的复杂度进行分区域的自适应调整,提高了量化步长的精确度,从而提高了编码后视频的精度。
在一些实施例中,基于本申请实施例提供的编码方法,在X.264软件编码平台上,采用常见标准视频数据作为测试序列,对视频分辨率固定设置为960*540,编码算法采用ABR模式,并将码率设置在相对较低的1.2Mb/s,以此为基础,分别测试通过目前的编码方法得到的编码视频,以及通过本申请实施例中的编码方法得到的编码视频的客观PSNR数值以及对应的码率控制情况,实验结果如表1所示。表1为目前的编码方法与本申请实施例的编码方法得到的编码视频的码率与PSNR的对比情况,如下所示:
表1
从表1的对比数据中可以看出,经过本申请实施例优化的编码方案,能够保证编码器对码率控制的能力,不会因为算法的引入造成码率控制的失效,同时在PSNR客观质量上总体平均提升约0.145dB,由此可以得出结论,本申请实施例提供的编码方法能够在提升编码视频的视频质量,同时不会造成压缩率负担。
本申请实施例提供一种编码器,图11为本申请实施例提供的一种编码器的组成结构示意图一,如图11所示,该编码器110包括:获取单元1101、计算单元1102、量化单元1103与编码单元1104,其中,
所述获取单元1101,用于当当前帧为待编码视频中的首帧时,在帧间级码率控制过程中,获取当前帧的图像信息;
所述计算单元1102,用于基于所述当前帧的图像信息,计算当前帧的复杂度累积值;
所述量化单元1103,用于基于所述当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长;
所述编码单元1104,用于基于所述当前帧的初始量化步长,对所述当前帧进行编码,得到所述当前帧的编码结果。
在一些实施例中,所述图像信息包括首帧的平均宏块能量、首帧的梯度值、首帧的边缘信息及首帧的直方图信息中的任一种。
在一些实施例中,所述图像信息为所述首帧的平均宏块能量,所述计算单元1102,还用于根据所述平均宏块能量、预设首帧编码比特与至少一个预设拟合因子对所述当前帧进行复杂度评估,得到所述当前帧的预估编码复杂度;所述至少一个预设拟合因子用于拟合所述平均宏块能量与初始量化步长之间的关系曲线;基于所述预估编码复杂度,计算所述当前帧的复杂度累积值。
在一些实施例中,所述计算单元1102,还用于将所述平均宏块能量乘以第一拟合因子,得到第一乘积结果;将所述预设首帧编码比特乘以第二拟合因子,得到第二乘积结果;计算所述第一乘积结果减去所述第二乘积结果的差值,并将所述差值与第三拟合因子相加,得到所述预估编码复杂度;其中,所述至少一个预设拟合因子包含所述第一拟合因子、所述第二拟合因子与所述第三拟合因子。
在一些实施例中,所述获取单元1101,还用于在宏块级码率控制过程中,对所述当前帧进行宏块划分,得到至少一个宏块;计算所述至少一个宏块的平均宏块能量。
在一些实施例中,所述计算单元1102,还用于获取所述至少一个宏块的宏块数量;根据所述预估编码复杂度、所述至少一个宏块的宏块数量与所述预设压缩参数对所述复杂度累积值进行初值计算,得到所述当前帧的复杂度累积值。
在一些实施例中,所述计算单元1102,还用于将所述预设压缩参数作为所述预估编码复杂度的次幂进行运算,并将运算结果与预设系数、以及所述宏块数量的二分之一次幂的相乘,得到所述当前帧的复杂度累积值。
在一些实施例中,所述获取单元1101,还用于根据所述当前帧中包含的像素信息,计算出所述当前帧的梯度值、边缘信息或直方图信息。
在一些实施例中,所述编码单元1104,还用于在宏块级码率控制中,对所述当前帧进行宏块划分后,获取每个宏块的内容复杂度;根据所述每个宏块的内容复杂度和预设复杂度阈值,对所述当前帧进行区域划分,得到至少一个区域;确定所述至少一个区域中的每个区域的预设量化强度因子,并根据所述每个区域对应的预设量化强度因子,对所述初始量化步长进行调整,得到所述每个区域对应的量化步长;根据所述每个区域对应的量化步长,对所述当前帧的各个区域进行编码,得到所述当前帧的编码结果。
在一些实施例中,所述编码单元1104,还用于在根据所述每个区域包含的宏块的内容复杂度,确定所述每个区域的区域复杂度;根据区域复杂度与预设量化强度因子的预设对应关系,确定出所述每个区域的预设量化强度因子;所述预设量化强度因子与区域复杂度成反比。
在一些实施例中,所述量化单元1103,还用于在对所述当前帧进行模糊复杂度估计,并对估计得出的模糊复杂度进行压缩处理,计算得到所述当前帧的复杂度;计算所述待编码视频中已编码帧的总比特值与所述复杂度累积值之间的比值,得到所述当前帧的码率因子;基于所述复杂度与所述码率因子,得到所述当前帧的量化级别;基于预设量化级别与初始量化步长的映射关系,将所述当前帧的量化级别转化为所述初始量化步长。
在一些实施例中,所述量化单元1103,还用于将所述复杂度与所述码率因子的比值,作为所述当前帧的初始量化级别;基于预设目标比特数,对所述初始量化级别进行调整,得到所述当前帧的量化级别。
在一些实施例中,所述计算单元1102,用于在所述基于所述当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长之前,当所述当前帧为所述待编码视频中的非首帧时,基于所述当前帧对应的上一帧编码后的比特数,与所述上一帧的量化参数,对复杂度进行累积处理,得到所述当前帧的复杂度累积值。
需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的信息显示方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端、服务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令用于实现本申请实施例提供的编码方法中的步骤。
相应的,本申请实施例再提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令用于实现上述实施例提供的编码方法的步骤。
本申请实施例还提供一种编码器,图12为本申请实施例提供的一种编码器的组成结构示意图二,如图12所示,所述编码器1200包括:存储器1201,用于存储计算机程序;
处理器1202,用于执行所述存储器1201中存储的计算机程序时,实现上述实施例提供的编码方法的步骤;
编码器1200还包括通信总线1203;用于连接存储器1201与处理器1202,实现存储器1201与处理器1202之间的连接通信。
存储器1201配置为存储由处理器1202计算机程序和应用,还可以缓存待处理器1202以及编码器中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
处理器1202执行程序时实现上述任一项编码方法的步骤。
上述处理器1103可以为特定用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable LogicDevice,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作限制。
上述计算机可读存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本申请实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得设备自动测试线执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (17)
1.一种编码方法,应用于编码器,其特征在于,包括:
在帧间级码率控制过程中,基于当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长;
在宏块级码率控制中,对所述当前帧进行宏块划分后,获取每个宏块的内容复杂度;
基于所述每个宏块的内容复杂度,将所述当前帧划分为至少一个区域,并确定所述至少一个区域中每个区域对应的预设量化强度因子;
根据所述每个区域对应的预设量化强度因子,对所述初始量化步长进行调整,得到所述每个区域对应的量化步长;
根据所述每个区域对应的量化步长,对所述当前帧的各个区域进行编码,得到所述当前帧的编码结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述每个宏块的内容复杂度,将所述当前帧划分为至少一个区域,包括:
根据所述每个宏块的内容复杂度和预设复杂度阈值,对所述当前帧进行区域划分,得到所述至少一个区域。
3.根据权利要求1所述的方法,其特征在于,所述确定所述至少一个区域中的每个区域的预设量化强度因子,包括:
根据所述每个区域包含的宏块的内容复杂度,确定所述每个区域的区域复杂度;
根据区域复杂度与预设量化强度因子的预设对应关系,确定出所述每个区域的预设量化强度因子;所述预设量化强度因子与区域复杂度成反比。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述基于所述当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长之前,所述方法还包括:
当所述当前帧为待编码视频中的首帧时,在帧间级码率控制过程中,获取当前帧的图像信息;
基于所述当前帧的图像信息,计算所述当前帧的复杂度累积值。
5.根据权利要求4所述的方法,其特征在于,所述图像信息包括首帧的平均宏块能量、首帧的梯度值、首帧的边缘信息及首帧的直方图信息中的任一种。
6.根据权利要求5所述的方法,其特征在于,所述图像信息为所述首帧的平均宏块能量,所述基于所述当前帧的图像信息,计算当前帧的复杂度累积值,包括:
根据所述平均宏块能量、预设首帧编码比特与至少一个预设拟合因子对所述当前帧进行复杂度评估,得到所述当前帧的预估编码复杂度;所述至少一个预设拟合因子用于拟合所述平均宏块能量与初始量化步长之间的关系曲线;
基于所述预估编码复杂度,计算所述当前帧的复杂度累积值。
7.根据权利要求6所述的方法,其特征在于,所述根据所述平均宏块能量、预设首帧编码比特与至少一个预设拟合因子对所述当前帧进行复杂度评估,得到所述当前帧的预估编码复杂度,包括:
将所述平均宏块能量乘以第一拟合因子,得到第一乘积结果;
将所述预设首帧编码比特乘以第二拟合因子,得到第二乘积结果;
计算所述第一乘积结果减去所述第二乘积结果的差值,并将所述差值与第三拟合因子相加,得到所述预估编码复杂度;其中,所述至少一个预设拟合因子包含所述第一拟合因子、所述第二拟合因子与所述第三拟合因子。
8.根据权利要求6所述的方法,其特征在于,所述获取当前帧的图像信息,包括:
在宏块级码率控制过程中,对所述当前帧进行宏块划分,得到至少一个宏块;
计算所述至少一个宏块的平均宏块能量。
9.根据权利要求8所述的方法,其特征在于,所述基于所述预估编码复杂度,计算所述当前帧的复杂度累积值,包括:
获取所述至少一个宏块的宏块数量;
根据所述预估编码复杂度、所述至少一个宏块的宏块数量与所述预设压缩参数对所述复杂度累积值进行初值计算,得到所述当前帧的复杂度累积值。
10.根据权利要求9所述的方法,其特征在于,所述根据所述预估编码复杂度、所述至少一个宏块的宏块数量与所述预设压缩参数对所述复杂度累积值进行初值计算,得到所述当前帧的复杂度累积值,包括:
将所述预设压缩参数作为所述预估编码复杂度的次幂进行运算,并将运算结果与预设系数、以及所述宏块数量的二分之一次幂的相乘,得到所述当前帧的复杂度累积值。
11.根据权利要求5所述的方法,其特征在于,所述获取当前帧的图像信息,包括:
根据所述当前帧中包含的像素信息,计算出所述当前帧的梯度值、边缘信息或直方图信息。
12.根据权利要求1-11任一项所述的方法,其特征在于,所述基于所述当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长,包括:
对所述当前帧进行模糊复杂度估计,并对估计得出的模糊复杂度进行压缩处理,计算得到所述当前帧的复杂度;
计算待编码视频中已编码帧的总比特值与所述复杂度累积值之间的比值,得到所述当前帧的码率因子;
基于所述复杂度与所述码率因子,得到所述当前帧的量化级别;
基于预设量化级别与初始量化步长的映射关系,将所述当前帧的量化级别转化为所述初始量化步长。
13.根据权利要求12所述的方法,其特征在于,所述基于所述复杂度与所述码率因子,得到所述当前帧的量化级别,包括:
将所述复杂度与所述码率因子的比值,作为所述当前帧的初始量化级别;
基于预设目标比特数,对所述初始量化级别进行调整,得到所述当前帧的量化级别。
14.根据权利要求1-11任一项所述的方法,其特征在于,所述基于所述当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长之前,所述方法还包括:
当所述当前帧为待编码视频中的非首帧时,基于所述当前帧对应的上一帧编码后的比特数,与所述上一帧的量化参数,对复杂度进行累积处理,得到所述当前帧的复杂度累积值。
15.一种编码器,其特征在于,包括:量化单元与编码单元,其中,
所述量化单元,用于在帧间级码率控制过程中,基于当前帧的复杂度累积值,对所述当前帧进行编码量化估计,得到所述当前帧的初始量化步长;
所述编码单元,用于在宏块级码率控制中,对所述当前帧进行宏块划分后,获取每个宏块的内容复杂度;基于所述每个宏块的内容复杂度,将所述当前帧划分为至少一个区域,并确定所述至少一个区域中每个区域对应的预设量化强度因子;根据所述每个区域对应的预设量化强度因子,对所述初始量化步长进行调整,得到所述每个区域对应的量化步长;根据所述每个区域对应的量化步长,对所述当前帧的各个区域进行编码,得到所述当前帧的编码结果。
16.一种编码器,其特征在于,包括:
存储器,用于存储可执行数据指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至14任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至14任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210546977.8A CN114979640A (zh) | 2020-07-17 | 2020-07-17 | 一种编码方法、编码器及计算机可读存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210546977.8A CN114979640A (zh) | 2020-07-17 | 2020-07-17 | 一种编码方法、编码器及计算机可读存储介质 |
CN202010693484.8A CN111866504B (zh) | 2020-07-17 | 2020-07-17 | 一种编码方法、编码器及计算机可读存储介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010693484.8A Division CN111866504B (zh) | 2020-07-17 | 2020-07-17 | 一种编码方法、编码器及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114979640A true CN114979640A (zh) | 2022-08-30 |
Family
ID=73001604
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010693484.8A Active CN111866504B (zh) | 2020-07-17 | 2020-07-17 | 一种编码方法、编码器及计算机可读存储介质 |
CN202210546977.8A Pending CN114979640A (zh) | 2020-07-17 | 2020-07-17 | 一种编码方法、编码器及计算机可读存储介质 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010693484.8A Active CN111866504B (zh) | 2020-07-17 | 2020-07-17 | 一种编码方法、编码器及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN111866504B (zh) |
WO (1) | WO2022012183A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111866504B (zh) * | 2020-07-17 | 2022-06-21 | Oppo广东移动通信有限公司 | 一种编码方法、编码器及计算机可读存储介质 |
CN113573070A (zh) * | 2021-06-03 | 2021-10-29 | 浙江大华技术股份有限公司 | 一种图像编码方法及装置、计算机存储介质 |
CN113438488B (zh) * | 2021-06-18 | 2023-01-31 | 北京锐马视讯科技有限公司 | 低码率视频优化编码方法和装置、设备及存储介质 |
CN113612999B (zh) * | 2021-08-20 | 2024-03-22 | 北京市商汤科技开发有限公司 | 视频处理方法及装置、电子设备和存储介质 |
CN113784126A (zh) * | 2021-09-17 | 2021-12-10 | Oppo广东移动通信有限公司 | 图像编码方法、装置、设备及存储介质 |
CN116205277A (zh) * | 2021-11-30 | 2023-06-02 | 北京灵汐科技有限公司 | 事件处理方法及装置、电子设备、计算机可读介质 |
CN114245127B (zh) * | 2021-12-13 | 2024-03-19 | 北京百度网讯科技有限公司 | 一种云桌面编码器的参数调整方法、装置、设备及介质 |
CN114584834B (zh) * | 2022-01-27 | 2024-02-13 | 百果园技术(新加坡)有限公司 | 视频质量优化方法、装置、设备和存储介质 |
CN115002512B (zh) * | 2022-05-23 | 2023-11-28 | 北京市商汤科技开发有限公司 | 视频转码方法及装置、电子设备和存储介质 |
CN116366847A (zh) * | 2022-07-26 | 2023-06-30 | 杭州海康威视数字技术股份有限公司 | 一种视频图像解码方法、装置及存储介质 |
CN116095320A (zh) * | 2022-12-30 | 2023-05-09 | 杭州海康威视数字技术股份有限公司 | 量化参数调整方法、装置、设备及存储介质 |
CN116567286B (zh) * | 2023-07-10 | 2023-09-22 | 武汉幻忆信息科技有限公司 | 一种基于人工智能的在线直播视频处理方法及*** |
CN116896641B (zh) * | 2023-09-11 | 2023-12-12 | 禹创半导体(深圳)有限公司 | 影像压缩方法、装置、设备及存储介质 |
CN118055234B (zh) * | 2024-04-16 | 2024-07-12 | 腾讯科技(深圳)有限公司 | 视频帧编码方法、装置、设备、介质和计算机程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102036062A (zh) * | 2009-09-29 | 2011-04-27 | 华为技术有限公司 | 视频编码方法、装置及电子设备 |
CN104219522A (zh) * | 2013-06-04 | 2014-12-17 | 北京大学 | 一种视频图像编码中的码率控制方法及装置 |
CN105049850A (zh) * | 2015-03-24 | 2015-11-11 | 上海大学 | 基于感兴趣区域的hevc码率控制方法 |
WO2020073671A1 (zh) * | 2018-10-12 | 2020-04-16 | 中南大学 | 一种视频转码方法、设备及其存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882316A (zh) * | 2010-06-07 | 2010-11-10 | 深圳市融创天下科技发展有限公司 | 一种图像区域划分/编码方法、装置及*** |
CN102036074A (zh) * | 2010-12-21 | 2011-04-27 | 汉王科技股份有限公司 | 基于嵌入式设备的码率控制方法及装置 |
CN104796725B (zh) * | 2014-01-21 | 2019-10-01 | Vixs***公司 | 具有帧内预测预处理的视频编码器及与其一起使用的方法 |
US20150215621A1 (en) * | 2014-01-30 | 2015-07-30 | Qualcomm Incorporated | Rate control using complexity in video coding |
US20180324439A1 (en) * | 2017-05-08 | 2018-11-08 | Mediatek Inc. | Method and apparatus for adaptive video encoding |
CN109076212A (zh) * | 2017-12-27 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 码率控制的方法与编码装置 |
CN111866504B (zh) * | 2020-07-17 | 2022-06-21 | Oppo广东移动通信有限公司 | 一种编码方法、编码器及计算机可读存储介质 |
-
2020
- 2020-07-17 CN CN202010693484.8A patent/CN111866504B/zh active Active
- 2020-07-17 CN CN202210546977.8A patent/CN114979640A/zh active Pending
-
2021
- 2021-05-27 WO PCT/CN2021/096491 patent/WO2022012183A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102036062A (zh) * | 2009-09-29 | 2011-04-27 | 华为技术有限公司 | 视频编码方法、装置及电子设备 |
CN104219522A (zh) * | 2013-06-04 | 2014-12-17 | 北京大学 | 一种视频图像编码中的码率控制方法及装置 |
CN105049850A (zh) * | 2015-03-24 | 2015-11-11 | 上海大学 | 基于感兴趣区域的hevc码率控制方法 |
WO2020073671A1 (zh) * | 2018-10-12 | 2020-04-16 | 中南大学 | 一种视频转码方法、设备及其存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111866504A (zh) | 2020-10-30 |
CN111866504B (zh) | 2022-06-21 |
WO2022012183A1 (zh) | 2022-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111866504B (zh) | 一种编码方法、编码器及计算机可读存储介质 | |
CN108574841B (zh) | 一种基于自适应量化参数的编码方法及装置 | |
JP5749710B2 (ja) | 映像符号化及び復号化のための、改善された量子化の丸めのオフセットを調節する方法及び装置 | |
US20080240235A1 (en) | Adaptive deadzone size adjustment in quantization | |
JP6989491B2 (ja) | ビデオの符号化および復号における量子化の方法および装置 | |
JP2008543183A (ja) | 複数の映像規格に従った映像符号化の際のブロックノイズ除去フィルタリング技術 | |
JP6881819B2 (ja) | ビデオトランスコーディング方法、コンピューター機器、及び記憶媒体 | |
JP2002335527A (ja) | 動画フレーム符号化方法、適応的量子化方法、データ圧縮レート決定方法、及びエンコーダ | |
EP3001885A1 (en) | Region-of-interest aware video coding | |
CN104041035A (zh) | 用于复合视频的无损编码及相关信号表示方法 | |
JPWO2009050889A1 (ja) | 映像復号方法及び映像符号化方法 | |
JP6568078B2 (ja) | 画像データを符号化するための方法および装置ならびに画像データを復号するための方法および装置 | |
EP0960528A2 (en) | Method of frame by frame calculation of quantization matrices | |
KR20180073231A (ko) | 양자화 파라미터를 조절하는 비디오 인코딩을 위한 장치 및 방법 | |
WO2009091548A1 (en) | Method and apparatus for rate control accuracy in video encoding | |
KR20150123810A (ko) | 이미지 동적 범위 변환 오퍼레이터를 선택하는 방법 및 디바이스 | |
KR20180074150A (ko) | Sao 필터링을 포함하는 비디오 데이터의 부호화를 위한 방법 및 장치 | |
US20160353107A1 (en) | Adaptive quantization parameter modulation for eye sensitive areas | |
TWI428022B (zh) | Video control method for instant video encoding chips | |
JP2005530423A (ja) | 画像鮮鋭度を符号化中に最適化する方法及びシステム | |
KR100823145B1 (ko) | 관심영역 기반의 영상 화질개선장치 및 양자화기기 및 그동작 방법 | |
WO2022021422A1 (zh) | 视频编码方法、编码器、***以及计算机存储介质 | |
WO2008027250A2 (en) | Method and apparatus for analytical and empirical hybrid encoding distortion modeling | |
RU2587412C2 (ru) | Управление скоростью передачи видео на основе гистограммы коэффициентов преобразования | |
CN112866696A (zh) | 4k、8k、16k超高清视频编码优化控制方法和装置 |
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 |