具体实施方式
为了解决在对视频图像编码的码率控制过程中,存在视频序列中各个帧对应的码率差异大,编码精度低,影响被编码后视频图像呈现效果的问题。本发明实施例中,获取视频序列中的当前帧,若该当前帧不是起始帧或者场景变换帧,则将当前帧对应的视频图像块划分为多个视频图像子块,并根分别据视频图像子块的复杂度,获取每一个视频图像子块对应的QP值;根据上述获取的QP值对当前帧对应的视频图像进行编码。采用本发明技术方案,根据当前帧对应的视频图像复杂度为视频图像的各个部分分配相应的QP值,从而避免了采用一个QP值对整个视频序列对应的各个视频图像进行编码时造成的编码精度低的问题,保证了视频序列中各个帧对应的码率恒定,提高了编码后视频图像的质量。
下面结合附图对本发明优选的实施方式进行详细说明。
参阅图2所示,本发明实施例中,对视频图像进行编码的详细流程为:
步骤200:获取视频序列中的当前帧。
本发明实施例中,接收输入的视频序列,该视频序列中包含多个帧,每一个帧对应一个视频图像。当获取视频序列中的一帧时,将该帧作为当前帧。
步骤210:根据当前帧的属性,判定当前帧不是起始帧或者场景变换帧时,将当前帧对应的视频图像块划分为预设数目的视频图像子块,并分别获取每一个视频图像子块对应的像素平均梯度,根据获取的当前帧对应的视频图像的量化参数阈值以及每一个视频图像子块对应的像素平均梯度,分别获取每一个视频图像子块对应的QP值。
本发明实施例中,获取视频序列以及该视频序列中的当前帧;并根据当前帧的相关属性判断当前帧是否为起始帧或者场景变换帧。
其中,判定当前帧不是起始帧的过程为:当当前帧不是视频序列中的第一帧时,判定当前帧不是起始帧。
当当前帧为场景变换帧即为当前帧对应的视频图像相对于当前帧的上一帧对应的视频图像发生不满足场景变换阈值的变化时,判定当前帧不是场景变换帧。因此,判断当前帧不是场景变换帧的过程为:获取视频序列中的当前帧,以及该当前帧的上一帧;获取当前帧对应的视频图像的各个像素点的像素值,以及上一帧对应的视频图像的各个像素点的像素值;根据当前帧对应的视频图像的各个像素点的像素值,确定当前帧对应的视频图像的像素值均方差,以及根据上一帧对应的视频图像的各个像素点的像素值,确定上一帧对应的像素值方差;当判定像素值均方差与第二像素值方差的差值小于场景变换阈值时,判定当前帧不是场景变换帧。
具体的,第一像素值均方差和第二像素值方差分别由以下公式获取:
公式一
公式二
其中,I1x,y为当前帧对应的视频图像的像素点(x,y)的像素值;I2x,y为上一帧对应的视频图像的像素点(x,y)的像素值;M1为当前帧对应的视频图像的长度;N1为当前帧对应的视频图像的宽度;M2为上一帧对应的视频图像的长度;N2为上一帧对应的视频图像的宽度;avg为场景变换平均值,由公式 获取。
上述场景变换阈值由第二像素值方差决定,具体的,场景变换阈值可以由以下公式获取:
a=a2×20% 公式三
其中,a为场景变换阈值;a2为第二像素值方差。
本发明实施例中,当判定当前帧不是起始帧,并且判定当前帧不是场景变换帧时,则按照预设规则将当前帧对应的视频图像划分为预设数目的视频图像子块,其中,该预设数目以及预设规则均有组成视频图像的宏块决定。
将当前帧对应的视频图像进行划分后,分别获取每一个视频图像子块对应的像素平均梯度。具体的,可以根据以下公式获取视频图像子块对应的像素平均梯度:
公式四
其中,Grad1为视频图像子块的像素平均梯度;Ix,y为视频图像子块的像素点(x,y)的像素值;M3为视频图像子块的长度;N3为视频图像子块的宽度。
确定当前帧对应的视频图像的量化参数阈值的过程为:采用预设算法根据当前帧对应的视频图像的各个像素点的像素值,获取当前帧视频图像的预处理QP值,其中,该预处理QP为非整数;对预处理QP进行向下取整获取初始QP值(用QP0表示),计算该预处理QP值以及QP0值的差值;根据上述差值,获取当前帧对应的视频图像的量化参数阈值,其中,获取的量化参数阈值为整数。具体的,采用如下公式获取当前帧对应的视频图像的量化参数阈值:
QP'=(QP预-QP0)×100 公式五
其中,QP'为当前帧对应的视频图像的量化参数阈值,其值为整数;QP预为预处理QP值,其为保留两位小数的值;QP0为将上述QP预进行向下取整后获取的初始QP值,即由公式获得。
由于采用JVT-G012算法获取当前帧对应的QP值具有方便快捷的优点,因此,较佳的,在获取当前帧对应的视频图像的量化参数阈值的过程中,上述预设算法为JVT-G012规定的算法。
在对视频图像进行编码过程中,采用JVT-G012算法得到的QP值通常为分数,此时需要将该分数转换为保留两位小数的值。
获取每一个视频图像子块对应的像素平均梯度后,根据该像素平均梯度以及上述已经确定的当前帧对应的视频图像的量化参数阈值,获取当前帧对应的视频图像的每一个视频图像子块对应的QP值,具体为:根据每一个视频图像子块对应的像素平均梯度得到视频图像子块梯度列表;根据所述量化参数阈值,以及所述视频图像子块的数目,得到第一子块数目,其中,所述第一子块数目与所述量化参数阈值以及所述视频图像子块的数目均成正比;将所述视频图像子块的数目与所述第一子块数目的差值作为第二子块数目;在视频图像子块梯度列表中,按照像素平均梯度由小到大的顺序选择第一子块数目的第一视频图像子块,将上述预处理QP值进行向下取整后得到上述第一视频图像子块对应的QP值;获取上述视频图像子块梯度列表中剩余的第二子块数目的第二视频图像子块,将上述预处理QP值进行向上取整后得到上述第二视频图像子块对应的QP值。
其中,根据当前帧对应的视频图像的量化参数阈值以及视频图像子块的数目,获取第一子块数目以及第二子块数目的过程为:统计视频图像子块的数目Z,采用公式Z*QP'/100获取第一子块数目,此时,若Z*QP'/100为非整数,则采用四舍五入的原则对上述公式获取的值进行取整处理,以保证获得的第一子块数目为整数。由视频图像子块的数目与第一子块数目的差值获取第二子块数目。
进一步的,当判定获取的当前帧为起始帧或者场景变换帧时,确定当前帧对应的视频图像的像素平均梯度,像素平均比特数,并根据当前帧对应的视频图像的像素平均梯度以及像素平均比特数,获取当前帧对应的视频图像的QP值。
其中,确定当前帧对应的视频图像的像素平均梯度的过程为:获取当前帧对应的视频图像的长度和宽度,以及当前帧对应的视频图像的各个像素点的像素值;根据上述当前帧对应的视频图像的长度和宽度,以及当前帧对应的视频图像的各个像素点的像素值,确定当前帧对应的视频图像的像素平均梯度。具体的,可以根据如下公式获取当前帧对应的视频图像的像素平均梯度:
公式六
其中,Grad2为当前帧对应的视频图像的像素平均梯度;Ix,y为当前帧对应的视频图像的像素点(x,y)的像素值;M1为当前帧对应的视频图像的长度;N1为当前帧对应的视频图像的宽度。
确定当前帧对应的视频图像的像素平均比特数的过程为:获取当前帧对应的视频图像的长度和宽度,以及当前帧对应的目标比特数,其中,该目标比特数为根据具体应用场景预先设置所得;根据上述当前帧对应的视频图像的长度和宽度,以及目标比特数,确定所述当前帧视频图像的像素平均比特数。具体的,采用如下公式,获取当前帧对应的视频图像的像素平均比特数:
公式七
其中,bbp为当前帧对应的视频图像的像素平均比特数;FrameBits为当前帧对应的目标比特数;M1为当前帧对应的视频图像的长度;N1为当前帧对应的视频图像的宽度。
本发明实施例中,判定当前帧为起始帧或者场景变换帧后,根据如下公式获取当前帧对应的QP值:
公式八
其中,bbp为当前帧对应的视频图像的像素平均比特数,由公式七获取;Grad2为当前帧对应的视频图像的像素平均梯度,由公式六获取;α,β,λ均为量化参数系数,由实验获取。上述λ的取值范围为【0.1,0.2】,其中,较佳的,λ取值为0.12。α和β的取值由试验获取,较佳的,对于帧内编码,α取值为30,β取值为0.1;对于帧间编码,α取值为1,β取值为0.15。
由于在对视频图像的编码过程中,视频图像对应的像素平均梯度反映了该视频图像的复杂度,像素平均比特数反映了该视频图像的期望达到的码率。因此,本发明实施例中,引入视频图像对应的像素平均梯度以及像素平均比特数,为不同的视频图像分配不同的QP值,或者为视频图像的不同部分分配不同的QP值,从而提高了获取QP值的精度,以及编码后视频图像的呈现质量。
步骤220:根据上述获取的QP值对当前帧对应的视频图像进行编码。
本发明实施例中,当当前帧不是起始帧,并且当前帧不是场景变换帧时,根据第一视频图像子块对应的QP值对当前帧对应的视频图像中的第一视频图像子块进行编码;根据第一视频图像子块对应的QP值对当前帧对应的视频图像中的第二视频图像子块进行编码。
本发明实施例中,根据QP对当前帧对应的视频图像进行编码的方式有多种,较佳的,采用MPEG-2标准根据上述获取的QP对当前帧对应的视频图像进行编码;或者,采用H.264/AVC标准根据上述获取的QP对当前帧对应的视频图像进行编码。
下面结合具体的应用场景详细介绍对视频图像编码中的码率控制。
参阅图3所示,对视频图像编码中的码率控制流程为:
步骤300:接收视频序列,并获取视频序列中的当前帧。
步骤310:判断当前帧是否为起始帧或者场景变换帧,若不是,则执行步骤320;否则,执行步骤330。
步骤320:确定当前帧对应的视频图像的量化参数阈值,将当前帧对应的视频图像块划分为预设数目的视频图像子块,并分别获取每一个视频图像子块对应的像素平均梯度,根据上述量化参数阈值以及每一个视频图像子块对应的像素平均梯度,分别获取每一个视频图像子块对应的QP值。
本发明实施例中,采用JVT-G012标准中规定的算法获取当前帧视频图像的预处理QP值,其中,该预处理QP为非整数;对预处理QP进行向下取整后,计算该预处理QP值以及上述取整后的数值的差值;将上述差值作为当前帧对应的视频图像的量化参数阈值。
本发明实施例中,对每一个视频图像子块对应的像素平均梯度按照由大到小或者由小到大的顺序进行排序,得到视频图像子块梯度列表;根据上述量化参数阈值将视频图像子块的数目进行划分,得到第一子块数目以及第二子块数目;在视频图像子块梯度列表中,按照像素平均梯度由小到大的顺序选择第一子块数目的第一视频图像子块,将上述预处理QP值进行向下取整后得到上述第一视频图像子块对应的QP值;获取上述视频图像子块梯度列表中剩余的第二子块数目的第二视频图像子块,将上述预处理QP值进行向上取整后得到第二视频图像子块对应的QP值。例如,当预处理QP值为35.6时,将其进行向下取整后得到的35(第一视频图像子块对应的QP值)作为第一视频图像子块对应的QP值,将其进行向上取整后得到的36(第二视频图像子块对应的QP值)作为第二视频图像子块对应的QP值。
步骤330:确定当前帧对应的视频图像的像素平均梯度,像素平均比特数,并根据当前帧对应的视频图像的像素平均梯度以及像素平均比特数,获取当前帧对应的视频图像的QP值。
步骤340:根据上述获取的QP值对当前帧对应的视频图像进行编码。
本发明实施例中,采用MPEG-2标准根据上述获取的QP对当前帧对应的视频图像进行编码;或者,采用H.264/AVC标准根据上述获取的QP对当前帧对应的视频图像进行编码。
基于上述技术方案,参阅图4所示,可以构建一种对视频图像编码中的码率控制装置,包括获取单元40,QP值获取单元41,以及编码单元42,其中:
确定单元40,用于用于获取视频序列中的当前帧;
QP值获取单元41,用于根据所述当前帧的属性,判定当前帧不是起始帧或者场景变换帧时,将当前帧对应的视频图像块划分为预设数目的视频图像子块,并分别获取每一个视频图像子块对应的像素平均梯度,以及根据当前帧对应的视频图像的各个像素点的像素值,确定当前帧对应的视频图像的量化参数阈值,根据上述量化参数阈值以及每一个视频图像子块对应的像素平均梯度,分别获取每一个视频图像子块对应的QP值;
编码单元42,用于根据上述QP值对当前帧对应的视频图像进行编码。
综上所述,本发明实施例中,判断当前帧是否为起始帧或者场景变换帧;若不是,将当前帧对应的视频图像块划分为预设数目的视频图像子块,并分别获取每一个视频图像子块对应的像素平均梯度,根据当前帧对应的视频图像的量化参数阈值以及每一个视频图像子块对应的像素平均梯度,分别获取每一个视频图像子块对应的QP值;否则,根据当前帧对应的视频图像的像素平均梯度以及像素平均比特数,获取当前帧对应的视频图像的QP值;根据上述获取的QP值对当前帧对应的视频图像进行编码。采用本发明技术方案,根据当前帧对应的视频图像复杂度的不同为视频图像分配相应的QP值,使获取的QP值更加准确,从而避免了采用一个QP值对整个视频序列对应的各个视频图像进行编码时造成的编码精度低的问题,提高了编码后视频图像的质量。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。