本发明涉及图像处理领域,特别是涉及视频编码过程为每个宏块或编码树单元分配目标码率的方法及装置,具体为一种码率控制方法、系统、服务器及可读存储介质。
背景技术
对于网络传输来说,信道带宽是很有限的,即没秒传输的码流大小是有上限的,因此码率控制的准确性就将影响网络传输的稳定性和准确性。目前的码率控制存在一些问题,比如码率控制的准确的,计算复杂度很大,而计算复杂度小的码率控制,准确性不高。
技术实现要素:
为了解决上述的以及其他潜在的技术问题,本发明的实施例提供了一种码率控制方法,所述码率控制方法包括:根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流;根据所述当前宏块或编码树的目标码流获取所述当前宏块或编码树量化过程的量化参数。
于本发明的一实施例中,所述当前帧图像实际码流以及当前帧图像目标码流的获取过程为:为当前帧图像分配目标码流并获取当前帧图像中每个宏块或编码树的目标码流;记录当前帧图像每个宏块或编码树的实际码流;在所述当前帧图像不为i帧图像时,分别获取所述当前帧图像中到当前宏块或编码树的上一个宏块或编码树为止的当前帧图像实际码流和所述当前帧图像中到当前宏块或编码树为止的当前帧图像目标码流。
于本发明的一实施例中,所述上一帧图像的实际码流的获取过程为:获取上一帧图像中每个宏块或编码树的实际码流;根据所述上一帧图像中每个宏块或编码树的实际码流获取所述上一帧图像中与所述当前帧图像中当前宏块或编码树对应的宏块或编码树为止的上一帧图像的实际对应码流;根据当前帧图像目标码流、上一帧图像目标码流以及所述实际对应码流获取上一帧图像的实际码流。
于本发明的一实施例中,所述上一帧图像的实际码流为:
其中,real_bit2为上一帧图像的实际码流,wtarget_bit1为当前帧整个图像的目标码流,wtarget_bit2为上一帧整个图像的目标码流,real_bit0为上一帧图像中与所述当前帧图像中当前宏块或编码树对应的宏块或编码树为止的上一帧图像的实际对应码流。
于本发明的一实施例中,所述根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流具体为:
curr_mb_bit=(target_bit×a+real_bit2×b)-real_bit1;
其中,curr_mb_bit为当前宏块或编码树的目标码流,target_bit为当前帧图像目标码流,real_bit1为当前帧图像实际码流,real_bit2为上一帧图像的实际码流,a、b为调整系数。
于本发明的一实施例中,调整系数a的取值范围为0~1,调整系数b的取值范围为0~1,且满足a+b=1。
本实施例还提供一种码率控制系统,所述码率控制系统包括:码流获取模块,用于根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流;量化参数获取模块,用于根据所述当前宏块或编码树的目标码流获取所述当前宏块或编码树量化过程的量化参数。
于本发明的一实施例中,所述码流获取模块包括:分配单元,用于为当前帧图像分配目标码流并获取当前帧图像中每个宏块或编码树的目标码流;记录单元,用于记录当前帧图像每个宏块或编码树的实际码流;当前帧图像实际码流单元,用于在所述当前帧图像不为i帧图像时,获取所述当前帧图像中到当前宏块或编码树的上一个宏块或编码树为止的当前帧图像实际码流;当前帧图像目标码流单元,用于在所述当前帧图像不为i帧图像时,获取所述当前帧图像中到当前宏块或编码树为止的当前帧图像目标码流。
于本发明的一实施例中,所述码流获取模块还包括:上一帧图像的实际码流单元:用于获取上一帧图像中每个宏块或编码树的实际码流,根据所述上一帧图像中每个宏块或编码树的实际码流获取所述上一帧图像中与所述当前帧图像中当前宏块或编码树对应的宏块或编码树为止的上一帧图像的实际对应码流,并根据当前帧图像目标码流、上一帧图像目标码流以及所述实际对应码流获取上一帧图像的实际码流。
于本发明的一实施例中,所述上一帧图像的实际码流单元具体根据下式获取上一帧图像的实际码流:
其中,real_bit2为上一帧图像的实际码流,wtarget_bit1为当前帧整个图像的目标码流,wtarget_bit2为上一帧整个图像的目标码流,real_bit0为上一帧图像中与所述当前帧图像中当前宏块或编码树对应的宏块或编码树为止的上一帧图像的实际对应码流。
于本发明的一实施例中,所述根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流具体为:
curr_mb_bit=(target_bit×a+real_bit2×b)-real_bit1;
其中,curr_mb_bit为当前宏块或编码树的目标码流,target_bit为当前帧图像目标码流,real_bit1为当前帧图像实际码流,real_bit2为上一帧图像的实际码流,a、b为调整系数。
于本实施例中,调整系数a的取值范围为0~1,调整系数b的取值范围为0~1,且满足a+b=1。
本发明的实施例还提供一种服务器,包括处理器和存储器,所述存储器存储有程序指令,所述处理器运行程序指令实现如上所述的方法中的步骤。
本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上所述的方法中的步骤。
如上所述,本发明的码率控制方法、系统、服务器及可读存储介质具有以下有益效果:
本发明根据上一帧每一个宏块或编码树实际的码流大小,来引导当前帧对应的宏块或编码树的目标码流大小的分配,有效的提升了当前帧码流大小的准确性,同时计算复杂度很小,且易于硬件实现。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1显示为本发明的码率控制方法的流程示意图。
图2显示为本发明的码率控制方法中当前帧图像实际码流以及当前帧图像目标码流的获取过程流程示意图。
图3显示为本发明的码率控制方法中上一帧图像的实际码流的获取过程的流程示意图。
图4显示为本发明的码率控制系统的原理框图。
图5显示为本发明的码率控制系统中码流获取模块的原理框图。
元件标号说明
1码率控制系统
10码流获取模块
110分配单元
120记录单元
130当前帧图像实际码流单元
140当前帧图像目标码流单元
150上一帧图像的实际码流单元
20量化参数获取模块
s100~s200步骤
s111~s114步骤
s121~s123步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
请参阅图1至图5。须知,本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“下”、“左”、“右”、“中间”及“一”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。
本实施例的目的在于提供一种码率控制方法、系统、服务器及可读存储介质,用于解决现有技术中码率控制部准确、复杂度大的问题。以下将详细阐述本发明的码率控制方法、系统、服务器及可读存储介质的原理及实施方式,使本领域技术人员不需要创造性劳动即可理解本发明的码率控制方法、系统、服务器及可读存储介质。
本实施例针对目前码率控制的缺陷,提出了一个便于硬件实现的宏块(mb)或编码树单元(ctu)级的码率控制。其中,宏块是h.264协议中定义的,而编码树是h.265协议中定义的,在视频图像传输过程中,视频系列中所有图像划分为宏块或编码树,然后再进行压缩编码。本实施例通过记录上一帧里每个mb或者ctu的码流大小,再用来引导当前帧对应mb或ctu的码流分配。通过本实施例,能合理的分配当前帧每个mb或ctu的码流大小,从而提高当前帧的码流大小的准确性(即当前帧实际编码得到的码流大小跟分配给当前帧的目标码流大小更接近),进而提升网络层的传输效率。
实施例1
具体地,如图1所示,本实施例提供了一种码率控制方法,所述码率控制方法包括:
步骤s100,根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流.。
步骤s200,根据所述当前宏块或编码树的目标码流获取所述当前宏块或编码树量化过程的量化参数。
以下对本实施例所述码率控制方法中的步骤s100~步骤s200进行详细描述。
步骤s100,根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流.。
其中,于本实施例中,如图2所示,所述当前帧图像实际码流以及当前帧图像目标码流的获取过程包含以下步骤:
步骤s111,为当前帧图像分配目标码流并获取当前帧图像中每个宏块或编码树的目标码流。
步骤s112,记录当前帧图像每个宏块或编码树的实际码流。
步骤s113,判断所述当前帧图像是否为i帧图像,若否,则接着执行步骤s114,分别获取所述当前帧图像中到当前宏块或编码树的上一个宏块或编码树为止的当前帧图像实际码流和所述当前帧图像中到当前宏块或编码树为止的当前帧图像目标码流;否是,则返回步骤s112,继续记录当前帧图像每个宏块或编码树的实际码流。
其中,i帧图像即intra帧图像,i帧是关键帧,属于帧内压缩,解码时只需要本帧数据就可以完成。若当前帧图像为i帧图像,继续当前帧图像每个宏块或编码树的实际码流,不需要参考之前一帧的每个每个宏块或编码树的码流。
在步骤s113中,例如当前帧图像中当前宏块或编码树处于第10个位置,则所述当前帧图像实际码流为当前帧图像中1至9个宏块或编码树的实际码流之和,所述当前帧图像目标码流为当前帧图像中1~10个宏块或编码树的目标码流之和。
于本实施例中,如图3所示,所述上一帧图像的实际码流的获取过程包括以下步骤:
步骤s121,获取上一帧图像中每个宏块或编码树的实际码流。
步骤s122,根据所述上一帧图像中每个宏块或编码树的实际码流获取所述上一帧图像中与所述当前帧图像中当前宏块或编码树对应的宏块或编码树为止的上一帧图像的实际对应码流。
例如当前帧图像中当前宏块或编码树处于第10个位置,则所述上一帧图像的实际对应码流为上一帧图像中1~10个宏块或编码树的实际码流。
步骤s123,根据当前帧图像目标码流、上一帧图像目标码流以及所述实际对应码流获取上一帧图像的实际码流。
其中,于本实施例中,所述上一帧图像的实际码流具体为:
其中,real_bit2为上一帧图像的实际码流,wtarget_bit1为当前帧整个图像的目标码流,wtarget_bit2为上一帧整个图像的目标码流,real_bit0为上一帧图像中与所述当前帧图像中当前宏块或编码树对应的宏块或编码树为止的上一帧图像的实际对应码流。
于本实施例中,所述根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流具体为:
curr_mb_bit=(target_bit×a+real_bit2×b)-real_bit1;
其中,curr_mb_bit为当前宏块或编码树的目标码流,target_bit为当前帧图像目标码流,real_bit1为当前帧图像实际码流,real_bit2为上一帧图像的实际码流,a、b为调整系数,其中,调整系数a的取值范围为0~1,调整系数b的取值范围为0~1,且满足a+b=1,例如,调整系数a为0.6,调整系数b为0.4
步骤s200,根据所述当前宏块或编码树的目标码流获取所述当前宏块或编码树的量化参数。
其中,码率控制模块会为视频系列中每帧图像分配帧级的量化参数qp,根据本实施例给每帧图像中的每个宏块或编码树单元分配目标码流大小,再根据该目标码流大小跟预先设置的阈值比较计算得到每个宏块或编码树单元的量化参数qp的偏移值qp_delta,从而获得当前宏块或编码树单元的量化参数qp_mb=qp+qp_delta。
本发明的实施例还提供一种服务器,包括处理器和存储器,所述存储器存储有程序指令,所述处理器运行程序指令实现如上所述的方法中的步骤。在此不再赘述。
本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上所述的方法中的步骤。在此不再赘述。
实施例2
如图4所示,本实施例提供一种码率控制系统1,所述码率控制系统1包括:码流获取模块10和量化参数获取模块20。
以下对本实施例的码率控制系统1中的码流获取模块10和量化参数获取模块20进行详细说明。
于本实施例中,所述码流获取模块10用于根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流。
具体地,如图5所示,于本实施例中,所述码流获取模块10包括:分配单元110,记录单元120,当前帧图像实际码流单元130以及当前帧图像目标码流单元140。
所述分配单元110用于为当前帧图像分配目标码流并获取当前帧图像中每个宏块或编码树的目标码流。
所述记录单元120用于记录当前帧图像每个宏块或编码树的实际码流。
所述当前帧图像实际码流单元130用于在所述当前帧图像不为i帧图像时,获取所述当前帧图像中到当前宏块或编码树的上一个宏块或编码树为止的当前帧图像实际码流。
例如当前帧图像中当前宏块或编码树处于第10个位置,则所述当前帧图像实际码流为当前帧图像中1至9个宏块或编码树的实际码流之和。
所述当前帧图像目标码流单元140用于在所述当前帧图像不为i帧图像时,获取所述当前帧图像中到当前宏块或编码树为止的当前帧图像目标码流。
例如当前帧图像中当前宏块或编码树处于第10个位置,所述当前帧图像目标码流为当前帧图像中1~10个宏块或编码树的目标码流之和。
其中,i帧图像即intra帧图像,属于帧内压缩,解码时只需要本帧数据就可以完成。若当前帧图像为i帧图像,计算当前宏块或编码树单元的目标码流时,不需要参考之前一帧的每个宏块或编码树的码流。
于本实施例中,如图5所示,所述码流获取模块10还包括:上一帧图像的实际码流单元150:用于获取上一帧图像中每个宏块或编码树的实际码流,根据所述上一帧图像中每个宏块或编码树的实际码流获取所述上一帧图像中与所述当前帧图像中当前宏块或编码树对应的宏块或编码树为止的上一帧图像的实际对应码流,并根据当前帧图像目标码流、上一帧图像目标码流以及所述实际对应码流获取上一帧图像的实际码流。
例如当前帧图像中当前宏块或编码树处于第10个位置,则所述上一帧图像的实际对应码流为上一帧图像中1~10个宏块或编码树的实际码流。
于本实施例中,所述上一帧图像的实际码流单元150具体根据下式获取上一帧图像的实际码流:
其中,real_bit2为上一帧图像的实际码流,wtarget_bit1为当前帧整个图像的目标码流,wtarget_bit2为上一帧整个图像的目标码流,real_bit0为上一帧图像中与所述当前帧图像中当前宏块或编码树对应的宏块或编码树为止的上一帧图像的实际对应码流。
于本实施例中,所述根据上一帧图像的实际码流、当前帧图像实际码流以及当前帧图像目标码流获取当前帧图像的当前宏块或编码树的目标码流具体为:
curr_mb_bit=(target_bit×a+real_bit2×b)-real_bit1;
其中,curr_mb_bit为当前宏块或编码树的目标码流,target_bit为当前帧图像目标码流,real_bit1为当前帧图像实际码流,real_bit2为上一帧图像的实际码流,a、b为调整系数。
其中,所述调整系数a的取值范围为0~1,调整系数b的取值范围为0~1,且满足a+b=1,例如,调整系数a为0.6,调整系数b为0.4。
于本实施例中,所述量化参数获取模块20用于根据所述当前宏块或编码树的目标码流获取所述当前宏块或编码树量化过程的量化参数。
其中,码率控制模块会为视频系列中每帧图像分配帧级的量化参数qp,根据本实施例给每帧图像中的每个宏块或编码树单元分配目标码流大小,再根据该目标码流大小跟预先设置的阈值比较计算得到每个宏块或编码树单元的量化参数qp的偏移值qp_delta,从而获得当前宏块或编码树单元的量化参数qp_mb=qp+qp_delta。
综上所述,本发明实施例本发明根据上一帧每一个宏块或编码树实际的码流大小,来引导当前帧对应的宏块或编码树的目标码流大小的分配,有效的提升了当前帧码流大小的准确性,同时计算复杂度很小,且易于硬件实现。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中包括通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。