本发明涉及图像处理领域,具体而言,涉及一种图像数据码率的处理方法和装置。
背景技术:
在视频压缩传输过程中,编码器产生的码流长度直接影响解码恢复的图像质量,对于同样分辨率,视频文件的码流越大,压缩比就越小,画面质量就越好,码率控制技术是影响视频编码效果的重要因素之一。目前,视频编解码协议中已存在码率处理算法,例如,mpeg-2中的tm5算法和h.263中的tmn8算法,主要通过控制编码器量化参数来控制编码端输出码率。
但是,目前的码率的处理方法主要基于h264,而h264的码率处理方法的核心是率失真优化,导致现有的码率的处理方法存在计算复杂度高,处理时间长的缺点。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种图像数据码率的处理方法和装置,以至少解决现有技术中图像数据码率的处理方法采用率失真优化方法,导致计算复杂度高的技术问题。
根据本发明实施例的一个方面,提供了一种图像数据码率的处理方法,包括:对图像数据中的当前帧进行分块,得到多个宏块;获取多个宏块的类型,其中,类型包括:图像宏块和文字宏块;根据多个宏块的类型,得到多个宏块的量化参数;根据多个宏块的量化参数对多个宏块进行编码,得到编码后的当前帧。
进一步地,获取多个宏块的类型,包括:获取多个宏块的特征信息,其中,特征信息包括:基本像素数和高梯度像素数;根据多个宏块的特征信息,确定多个宏块的类型。
进一步地,获取多个宏块的特征信息,包括:获取每个宏块中至少一个基本像素值;将每个宏块中每个像素的像素值与至少一个基本像素值进行比较,得到每个宏块的基本像素数;将每个宏块中每个像素的像素值与相邻像素的像素值进行比较,得到每个宏块的高梯度像素数。
进一步地,将每个宏块中每个像素的像素值与至少一个基本像素值进行比较,得到每个宏块的基本像素数,包括:对于每个像素,计算每个像素的像素值与至少一个基本像素值的差值,得到每个像素对应的至少一个第一差值;计算每个像素对应的至少一个第一差值的绝对值,得到每个像素对应的至少一个第一绝对值;判断每个像素对应的至少一个第一绝对值是否小于等于第一预设绝对值;如果第一像素对应的任意一个第一绝对值小于等于第一预设绝对值,则将第一像素标记为基本像素;统计每个宏块中的基本像素的数量,得到每个宏块的基本像素数。
进一步地,将每个宏块中的每个像素的像素值与相邻像素的像素值进行比较,得到每个宏块的高梯度像素数,包括:对于每个像素,计算每个像素的像素值与相邻多个第二像素的像素值的差值,得到每个像素对应的多个第二差值,其中,第二像素为在水平方向和者垂直方向与每个像素相邻的像素;计算每个像素对应的多个第二差值的绝对值,得到每个像素对应的多个第二绝对值;判断每个像素对应的多个第二绝对值是否大于等于第二预设绝对值;如果第二像素对应的任意一个第二绝对值大于等于第二预设绝对值,则将第二像素标记为高梯度像素;统计每个宏块中的高梯度像素的数量,得到每个宏块的高梯度像素数。
进一步地,根据多个宏块的特征信息,确定多个宏块的类型,包括:将每个宏块的基本像素数与预设基本像素数进行比较,并将每个宏块的高梯度像素数与第一高梯度像素数和第二高梯度像素数进行比较;如果第三宏块的基本像素数大于预设基本像素数,且第三宏块的高梯度像素数大于第一高梯度像素数,则确定第三宏块的类型为文字宏块;如果第一宏块的基本像素数大于预设基本像素数,且第一宏块的高梯度像素数小于第一高梯度像素数,则确定第一宏块的类型为图像宏块;如果第四宏块的基本像素数小于预设基本像素数,且第一宏块的高梯度像素数大于第二高梯度像素数,则确定第一宏块的类型为文字宏块;如果第二宏块的基本像素数小于预设基本像素数,且第二宏块的高梯度像素数小于第二高梯度像素数,则确定第二宏块的类型为图像宏块。
进一步地,获取每个宏块中至少一个基本像素值,包括:统计每个宏块中所有像素的像素值的分布直方图;根据分布直方图,按照每个像素值出现的次数进行降序排列;从第一像素值开始,获取至少一个像素值作为基本像素值。
进一步地,根据多个宏块的类型,得到多个宏块的量化参数,包括:获取图像宏块的量化参数和文字宏块的量化参数;根据多个宏块的类型、图像宏块的量化参数和文字宏块的量化参数,得到多个宏块的量化参数。
进一步地,获取图像宏块的量化参数和文字宏块的量化参数,包括:获取当前帧的码率;根据当前帧的码率,获取图像宏块的目标码率和文字宏块的目标码率;根据图像宏块的目标码率,得到图像宏块的量化参数,并根据文字宏块的目标码率,得到文字宏块的量化参数。
进一步地,获取当前帧的码率,包括:获取当前帧的信道可用带宽和当前缓冲区饱和度;将当前缓冲区饱和度和预设值进行比较,得到比较结果;根据比较结果、当前帧的信道可用带宽和预设帧率,得到当前帧的码率。
进一步地,通过如下公式计算得到当前帧的码率:
进一步地,获取当前缓冲区饱和度,包括:获取历史缓冲区饱和度和前一帧的比特数;根据历史缓冲区饱和度、前一帧的比特数、当前帧的信道可用带宽和预设帧率,得到当前缓冲区饱和度。
进一步地,通过如下公式计算得到当前缓冲区饱和度:
进一步地,在获取当前缓冲区饱和度之后,上述方法还包括:判断当前缓冲区饱和度是否超过信道的码率,其中,通过计算当前帧的信道可用带宽和预设帧率的比值,得到信道的码率;如果当前缓冲区饱和度超过信道的码率,则通过最大量化参数进行量化编码,以降低当前缓冲区饱和度。
进一步地,根据当前帧的码率,获取图像宏块的目标码率和文字宏块的目标码率,包括:根据当前帧的码率、图像宏块的数量和文字宏块的数量,得到平均码率;根据平均码率,得到图像宏块的码率和文字宏块的码率;获取前一帧中图像宏块的平均比特数和前一帧中文字宏块的平均比特数,其中,图像宏块的平均比特数为前一帧中所有图像宏块的比特数与前一帧中宏块数量的比值,文字宏块的平均比特数为前一帧中所有文字宏块的比特数与前一帧中宏块数量的比值;根据图像宏块的码率和前一帧中图像宏块的平均比特数,得到图像宏块的目标码率,并根据文字宏块的码率和前一帧中文字宏块的平均比特数,得到文字宏块的目标码率。
进一步地,通过如下公式计算平均码率:
进一步地,通过如下公式计算图像宏块的码率和文字宏块的码率:
进一步地,通过如下公式计算图像宏块的目标码率和文字宏块的目标码率:
进一步地,在得到图像宏块的目标码率和文字宏块的目标码率之后,上述方法还包括:判断图像宏块的目标码率和文字宏块的目标码率是否小于等于预设目标码率;如果图像宏块的目标码率或文字宏块的目标码率大于预设目标码率,则将图像宏块的目标码率或文字宏块的目标码率变为预设目标码率。
进一步地,根据图像宏块的目标码率,得到图像宏块的量化参数,并根据文字宏块的目标码率,得到文字宏块的量化参数,包括:获取图像宏块的复杂性度量、图像宏块的第一拟合参数、图像宏块的第二拟合参数、文字宏块的复杂性度量、文字宏块的第一拟合参数和文字宏块的第二拟合参数,其中,复杂性度量用于表征图像宏块或文字宏块中逃逸像素数量的平均值,逃逸像素为图像宏块或文字宏块中除基本像素之外的其他像素;根据图像宏块的复杂性度量、图像宏块的第一拟合参数和图像宏块的第二拟合参数,得到图像宏块的量化参数,并根据文字宏块的复杂性度量、文字宏块的第一拟合参数和文字宏块的第二拟合参数,得到文字宏块的量化参数。
进一步地,通过如下公式计算得到图像宏块的第二拟合参数:
进一步地,通过如下公式计算图像宏块的量化参数:rpicture=cpicture*α*qpβ,其中,α为图像宏块的第一拟合参数,qp为图像宏块的量化参数;通过如下公式计算文字宏块的量化参数:
进一步地,在得到图像宏块的量化参数和文字宏块的量化参数之后,上述方法还包括:对图像宏块的量化参数和文字宏块的量化参数进行修正,得到修正后的图像宏块的量化参数和修正后的文字宏块的量化参数。
进一步地,通过如下公式对图像宏块的量化参数进行修正,得到修正后的图像宏块的量化参数:qp=min(max(qp,0.1),0.125);通过如下公式对文字宏块的量化参数进行修正,得到修正后的文字宏块的量化参数:△1=min(max(△1,2),8)。
进一步地,在得到图像宏块的量化参数和文字宏块的量化参数之后,上述方法还包括:根据当前帧中图像宏块的基本像素数,得到新的图像宏块的复杂性度量,并根据当前帧中文字宏块的基本像素数,得到新的文字宏块的复杂性度量;根据新的图像宏块的复杂性度量,得到新的图像宏块的第二拟合参数,并根据新的文字宏块的复杂性度量,得到新的文字宏块的第二拟合参数;根据图像宏块的复杂性度量、前一帧中图像宏块的平均比特数、图像宏块的量化参数、图像宏块的第二拟合参数、新的图像宏块的复杂性度量和新的图像宏块的第二拟合参数,得到新的图像宏块的第一拟合参数,并根据文字宏块的复杂性度量、前一帧中文字宏块的平均比特数、文字宏块的量化参数、文字宏块的第二拟合参数、新的文字宏块的复杂性度量和新的文字宏块的第二拟合参数,得到新的文字宏块的第一拟合参数。
进一步地,通过如下公式计算得到新的图像宏块的第一拟合参数:
进一步地,在对图像数据中的当前帧进行分块,得到多个宏块之前,上述方法还包括:获取图像数据的格式;判断图像数据的格式是否为预设格式;如果图像数据不是预设格式,则将图像数据的格式转换为预设格式。
根据本发明实施例的另一方面,还提供了一种图像数据码率的处理装置,包括:划分单元,用于对图像数据中的当前帧进行分块,得到多个宏块;获取单元,用于获取多个宏块的类型,其中,类型包括:图像宏块和文字宏块;处理单元,用于根据多个宏块的特征信息,得到多个宏块的量化参数;编码单元,用于根据多个宏块的量化参数对多个宏块进行编码,得到编码后的当前帧。
进一步地,获取单元包括:获取模块,用于获取多个宏块的特征信息,其中,特征信息包括:基本像素数和高梯度像素数;确定模块,用于根据多个宏块的特征信息,确定多个宏块的类型。
根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述实施例中的图像数据码率的处理方法。
根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述实施例中的图像数据码率的处理方法。
在本发明实施例中,对图像数据中的当前帧进行分块,得到多个宏块,获取多个宏块的类型,根据多个宏块的类型,得到多个宏块的量化参数,根据多个宏块的量化参数对多个宏块进行编码,得到编码后的当前帧,从而实现对图像数据码率的处理。容易注意到的是,由于根据宏块的类型,得到宏块的量化参数,即通过宏块的内容确定宏块的量化参数,进一步控制编码后的在当前帧的码率,计算过程简单、计算复杂度低,从而解决了现有技术中图像数据码率的处理方法采用率失真优化方法,导致计算复杂度高的技术问题。因此,通过本发明上述实施例提供的技术方案,可以达到简化计算过程,降低计算复杂度的技术效果,可以更好的嵌入到实时视频传输系统中。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种图像数据码率的处理方法的流程图;
图2是根据本发明实施例的一种可选的图像数据码率的处理方法的流程图;以及
图3是根据本发明实施例的一种图像数据码率的处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,对本发明实施例中出现的技术名词或技术术语进行如下解释:
码率:bitrate,指单位时间内传输的数据流量,其单位是bps,即位每秒。
码流:bitstream,指编码后产生的二进制文件,具有时间连续性。
像素:pixel,是构成图像的最小单元。例如,帧的大小是1920x1080,就是指图像一行包含1920个像素,一列包含1080个像素,一个像素一般由3个分量组成,可以是r、g、b,也可以是y、u、v,在本发明实施例中,以t、u、v三个分量构成的像素为例,进行详细说明。
宏块:macroblock,缩写成mb,宏块是固定大小(如16x16)的矩形图像块,一个宏块的所有像素通常被认为具有相同的性质,是识别的最小单元。
帧:frame,指一幅完整的矩形图像,以像素(pixel)为单位,例如1920x1080,1600x900,多帧图像会构成一个图像序列。
帧率:指每秒显示的帧数(framespersecond),也即,单位时间内传输的图片数。
基本像素值:宏块中各像素的y分量像素值中频数最大的m个像素值,m的取值可以是8。
缓冲区:为了控制码率的波动而提出的一种虚拟模型,可以动态调节码率,当缓冲区饱和度高于阈值,则减小可分配码率,当饱和度低,则增大可分配码率。
实施例1
根据本发明实施例,提供了一种图像数据码率的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种图像数据码率的处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤s102,对图像数据中的当前帧进行分块,得到多个宏块。
具体地,上述的图像数据可以是视频数据中的多帧图像,在本发明实施例中,以图像数据为yuv图像为例,进行详细说明。
可选地,在本发明上述实施例中,在对图像数据中的当前帧进行分块,得到多个宏块之前,该方法还包括如下步骤:获取图像数据的格式;判断图像数据的格式是否为预设格式;如果图像数据不是预设格式,则将图像数据的格式转换为预设格式。
具体地,上述的预设格式可以是yuv格式。
在一种可选的方案中,在获取到当前帧之后,首先判断图像数据是否为yuv格式,如果是,则将图像数据中的当前帧划分为16*16的宏块;如果不是,则进行格式转换,将图像数据转换为yuv格式,然后将图像数据中的当前帧划分为16*16的宏块。
步骤s104,获取多个宏块的类型,其中,类型包括:图像宏块和文字宏块。
在一种可选的方案中,可以根据每个宏块的内容,确定每个宏块是图像宏块还是文字宏块,从而得到每个宏块的类型。
步骤s106,根据多个宏块的类型,得到多个宏块的量化参数。
在一种可选的方案中,不同类型的宏块可以使用不同编码器,并且对应不同的量化参数。对于图像宏块,可以使用jpeg编码器进行编解码,图像宏块的量化参数可以是jpeg编码中的量化因子q;对于文字宏块,文字宏块涉及两个参数,分别为δ1和δ2,其中,可以设定δ1=4δ2。δ1和q越小,文字宏块和图像宏块的量化越精细,码率越大;δ1和q越大,文字宏块和图像宏块的量化越粗糙,码率越小。
步骤s108,根据多个宏块的量化参数对多个宏块进行编码,得到编码后的当前帧。
在一种可选的方案中,在得到每个宏块的量化参数之后,可以采用对应的编码器,对每个宏块进行编码,得到编码后的当前帧,并通过网络将编码后的当前帧发送给解码器,从而解码得到当前帧。
根据本发明上述实施例,对图像数据中的当前帧进行分块,得到多个宏块,获取多个宏块的类型,根据多个宏块的类型,得到多个宏块的量化参数,根据多个宏块的量化参数对多个宏块进行编码,得到编码后的当前帧,从而实现对图像数据码率的处理。容易注意到的是,由于根据宏块的类型,得到宏块的量化参数,即通过宏块的内容确定宏块的量化参数,进一步控制编码后的在当前帧的码率,计算过程简单、计算复杂度低,从而解决了现有技术中图像数据码率的处理方法采用率失真优化方法,导致计算复杂度高的技术问题。因此,通过本发明上述实施例提供的技术方案,可以达到简化计算过程,降低计算复杂度的技术效果,可以更好的嵌入到实时视频传输系统中。
可选地,在本发明上述实施例中,步骤s104,获取多个宏块的类型,包括:
步骤s1042,获取多个宏块的特征信息,其中,特征信息包括:基本像素数和高梯度像素数。
需要说明的是,由于人类视觉系统特性,对y分量的敏感性远大于u、v分量,因此在获取每个宏块的特征信息时,可以仅考虑y分量,即仅考虑每个像素的亮度值,其中,y分量像素值的取值区间为0~255。
具体地,上述的基本像素可以是宏块中y分量像素值被识别为基本像素值的像素;上述的高梯度像素可以是像素值与周围某一像素值的差值大于预设阈值的像素。
步骤s1044,根据多个宏块的特征信息,确定多个宏块的类型。
在一种可选的方案中,可以提取每个宏块的基本像素数和高梯度像素数这两个特征信息,根据提取到的特征信息,将宏块划分为图像宏块的文字宏块。
可选地,在本发明上述实施例中,步骤s1042,获取多个宏块的特征信息,包括:
步骤s10422,获取每个宏块中至少一个基本像素值。
可选地,在本发明上述实施例中,获取每个宏块中至少一个基本像素值,包括:统计每个宏块中所有像素的像素值的分布直方图;根据分布直方图,按照每个像素值出现的次数进行降序排列;从第一像素值开始,获取至少一个像素值作为基本像素值。
在一种可选的方案中,为了获取每个宏块的基本像素数,可以将宏块内256个像素的y分量像素值进行统计,得到像素值的分布直方图,然后从分布直方图中选出频数最大的4个像素值作为基本像素值。
步骤s10424,将每个宏块中每个像素的像素值与至少一个基本像素值进行比较,得到每个宏块的基本像素数。
在一种可选的方案中,基本像素值对应的像素可以标记为基本像素,并且,可以将每个宏块中其他像素的y分量像素值与4个基本像素值进行比较,如果满足条件,则将该像素标记为基本像素,也即可以将宏块中每个像素的y分量像素值与4个基本像素值进行比较,如果满足条件,则将该像素标记为基本像素,所有基本像素的数量即为基本像素数nbc。
需要说明的是,每个宏块中不属于基本像素的像素被称作逃逸像素。
步骤s10426,将每个宏块中每个像素的像素值与相邻像素的像素值进行比较,得到每个宏块的高梯度像素数。
具体地,上述的相邻像素可以是与每个像素上、下、左、右四个方向相邻的像素。
在一种可选的方案中,可以将宏块中每个像素的y分量像素值与其上、下、左、右四个相邻像素的y分量像素值进行比较,如果满足条件,则将该像素标记为高梯度像素,所有高梯度像素的数量即为高梯度像素数nhg。
可选地,在本发明上述实施例中,步骤s10424,将每个宏块中每个像素的像素值与至少一个基本像素值进行比较,得到每个宏块的基本像素数,包括:
步骤s190,对于每个像素,计算每个像素的像素值与至少一个基本像素值的差值,得到每个像素对应的至少一个第一差值。
步骤s192,计算每个像素对应的至少一个第一差值的绝对值,得到每个像素对应的至少一个第一绝对值。
步骤s194,判断每个像素对应的至少一个第一绝对值是否小于等于第一预设绝对值。
具体地,上述的第一预设绝对值可以根据实际编码需要进行设定,例如,第一预设绝对值可以是8。
步骤s196,如果第一像素对应的任意一个第一绝对值小于等于第一预设绝对值,则将第一像素标记为基本像素。
步骤s198,统计每个宏块中的基本像素的数量,得到每个宏块的基本像素数。
在一种可选的方案中,在获取到每个宏块中的4个基本像素值之后,可以将每个像素的y分量像素值与4个基本像素值作差并求差的绝对值,如果某个绝对值小于第一预设绝对值,则将该像素标记为基本像素;如果所有绝对值均大于等于第一预设绝对值,则将该像素标记为逃逸像素,在宏块内所有的256个像素标记完毕之后,可以统计被标记为基本像素的数量,得到基本像素数nbc。
可选地,在本发明上述实施例中,步骤s10426,将每个宏块中的每个像素的像素值与相邻像素的像素值进行比较,得到每个宏块的高梯度像素数,包括:
步骤s180,对于每个像素,计算每个像素的像素值与相邻多个第二像素的像素值的差值,得到每个像素对应的多个第二差值,其中,第二像素为在水平方向和者垂直方向与每个像素相邻的像素。
步骤s182,计算每个像素对应的多个第二差值的绝对值,得到每个像素对应的多个第二绝对值。
步骤s187,判断每个像素对应的多个第二绝对值是否大于等于第二预设绝对值。
具体地,上述的第二预设绝对值可以是经验阈值门限,例如,可以是32。
步骤s186,如果第二像素对应的任意一个第二绝对值大于等于第二预设绝对值,则将第二像素标记为高梯度像素。
步骤s188,统计每个宏块中的高梯度像素的数量,得到每个宏块的高梯度像素数。
在一种可选的方案中,可以通过如下公式计算高梯度像素:
其中,nhg为高梯度像素,t为第二预设绝对值。如果pixel(i,j)像素的亮度值,即y分量像素值与其相邻的四个像素中的任意一个y分量像素值之差的绝对值大于t,则将该像素标记为高梯度像素,在宏块内所有的256个像素标记完毕之后,可以统计被标记为高梯度像素的数量,得到高梯度像素数nhg。
可选地,在本发明上述实施例中,步骤s1044,根据多个宏块的特征信息,确定多个宏块的类型,包括:
步骤s10440,将每个宏块的基本像素数与预设基本像素数进行比较,并将每个宏块的高梯度像素数与第一高梯度像素数和第二高梯度像素数进行比较。
具体地,上述的预设基本像素数、第一高梯度像素数和第二高梯度像素数可以根据实际编码需要进行设定,例如,预设基本像素数可以是160,第一高梯度像素数可以是20,第二高梯度像素数可以是17。
步骤s10442,如果第三宏块的基本像素数大于预设基本像素数,且第三宏块的高梯度像素数大于第一高梯度像素数,则确定第三宏块的类型为文字宏块。
步骤s10444,如果第一宏块的基本像素数大于预设基本像素数,且第一宏块的高梯度像素数小于第一高梯度像素数,则确定第一宏块的类型为图像宏块。
步骤s10446,如果第四宏块的基本像素数小于预设基本像素数,且第一宏块的高梯度像素数大于第二高梯度像素数,则确定第一宏块的类型为文字宏块。
步骤s10448,如果第二宏块的基本像素数小于预设基本像素数,且第二宏块的高梯度像素数小于第二高梯度像素数,则确定第二宏块的类型为图像宏块。
在一种可选的方案中,在计算得到每个宏块的基本像素数nbc和高梯度像素数nhg之后,如果nbc>160且nhg>20,那么该宏块是文字宏块;如果nbc>160且nhg<20,那么该宏块是图像宏块;如果nbc<160且nhg>17,那么该宏块是文字宏块;如果nbc<160且nhg<17,那么该宏块是图像宏块。
可选地,在本发明上述实施例中,步骤s106,根据多个宏块的类型,得到多个宏块的量化参数,包括:
步骤s1062,获取图像宏块的量化参数和文字宏块的量化参数。
步骤s1064,根据多个宏块的类型、图像宏块的量化参数和文字宏块的量化参数,得到多个宏块的量化参数。
在一种可选的方案中,可以根据信道带宽和图像内容,利用预测模型获取图像宏块的量化参数和文字宏块的量化参数,如果一个宏块为图像宏块,则确定该宏块的量化参数为图像宏块的量化参数;如果一个宏块的文字宏块,则确定该宏块的量化参数为文字宏块的量化参数。
可选地,在本发明上述实施例中,步骤s1062,获取图像宏块的量化参数和文字宏块的量化参数,包括:
步骤s10622,获取当前帧的码率。
具体地,上述的当前帧的码率可以是根据信道带宽为当前帧分配的码率。
步骤s10624,根据当前帧的码率,获取图像宏块的目标码率和文字宏块的目标码率。
在一种可选的方案中,可以根据为当前帧分配的码率,对图像宏块的目标码率和文字宏块的目标码率进行分配,由于文字宏块编码需要的码率比文字宏块大,可以将分配给图像宏块的部分码率转移给文字宏块,同时,为了降低码率浪费,可以结合前一帧已编码产生的实际比特数,确定图像宏块的目标码率和文字宏块的目标码率。
步骤s10626,根据图像宏块的目标码率,得到图像宏块的量化参数,并根据文字宏块的目标码率,得到文字宏块的量化参数。
在一种可选的方案中,可以将图像宏块的目标码率代入图像宏块码率与量化参数模型中,从而得到图像宏块的量化参数,可以将文字宏块的目标码率代入文字宏块码率与量化参数模型中,从而得到文字宏块的量化参数。
可选地,在本发明上述实施例中,步骤s10622,获取当前帧的码率,包括:
步骤s172,获取当前帧的信道可用带宽和当前缓冲区饱和度。
具体地,上述的当前帧的信道可用带宽可以是在当前帧编码之前的信道可用带宽。
步骤s174,将当前缓冲区饱和度和预设值进行比较,得到比较结果。
具体地,上述的预设值可以是信道的码率的0.1倍,即当前帧的信道可用带宽与预设帧率的比值乘以0.1。
步骤s176,根据比较结果、当前帧的信道可用带宽和预设帧率,得到当前帧的码率。
可选地,在本发明上述实施例中,通过如下公式计算得到当前帧的码率:
其中,rc为当前帧的码率,w为当前缓冲区饱和度,r为当前帧的信道可用带宽,f为预设帧率,
在一种可选的方案中,缓冲区饱和度的初始值可以为0,可以将当前缓冲区饱和度w与预设值
需要说明的是,设置
可选地,在本发明上述实施例中,步骤s172,获取当前缓冲区饱和度,包括:
步骤s1722,获取历史缓冲区饱和度和前一帧的比特数。
具体地,上述的前一帧的比特数可以是前一帧编码所生成的比特数。
步骤s1724,根据历史缓冲区饱和度、前一帧的比特数、当前帧的信道可用带宽和预设帧率,得到当前缓冲区饱和度。
可选地,在本发明上述实施例中,通过如下公式计算得到当前缓冲区饱和度:
其中,wprev为历史缓冲区饱和度,g为前一帧的比特数。
在一种可选的方案中,可以获取前一缓冲区饱和度wprev、前一帧的比特数g、当前帧的信道可用带宽r和预设帧率f之后,可以代入上述公式,从而得到当前缓冲区饱和度w,具体地,可以计算当前帧的信道可用带宽r和预设帧率f的比值,计算历史缓冲区饱和度wprev和前一帧的比特数g的和值,计算和值与比值的差值,并将该差值与0进行比较,如果该差值大于0,则确定当前缓冲区饱和度w为该差值,否则,确定当前缓冲区饱和度w为0。
可选地,在本发明上述实施例中,在获取当前缓冲区饱和度之后,该方法还包括如下步骤:判断当前缓冲区饱和度是否超过信道的码率,其中,通过计算当前帧的信道可用带宽和预设帧率的比值,得到信道的码率;如果当前缓冲区饱和度超过信道的码率,则通过最大量化参数进行量化编码,以降低当前缓冲区饱和度。
在一种可选的方案中,在得到当前缓冲区饱和度之后,可以将当前缓冲区饱和度与信道的码率进行比较,如果当前缓冲区饱和度超过信道的码率,则确定缓冲区饱和度过大,可以通过最大量化参数进行量化编码,直至缓冲区饱和度降低为一个较低值。
可选地,在本发明上述实施例中,步骤s10624,根据当前帧的码率,获取图像宏块的目标码率和文字宏块的目标码率,包括:
步骤s162,根据当前帧的码率、图像宏块的数量和文字宏块的数量,得到平均码率。
可选地,在本发明上述实施例中,通过如下公式计算平均码率:
其中,r0为平均码率,text_mbcount为文字宏块的数量,picture_mbcount为图像宏块的数量。
具体地,上述的平均码率可以是平均每个文字宏块和图像宏块能够分配的码率。
步骤s164,根据平均码率,得到图像宏块的码率和文字宏块的码率。
可选地,在本发明上述实施例中,通过如下公式计算图像宏块的码率和文字宏块的码率:
其中,rtpicture为图像宏块的码率,rttext为文字宏块的码率。
在一种可选的方案中,可以根据当前帧的码率计算得到平均每文字宏块和图像宏块能够分配的平均码率,由于文字宏块所需的码率比图像宏块所需的码率大,可以按照文字宏块与图像宏块2:1的比例进行分配。
需要说明的是,通过上述方案得到的图像宏块的码率和文字宏块的码率可以根据缓冲区饱和度自适应变化,但是当缓冲区饱和度较低时,会分配过多的码率,远大于实际编码所需要的比特数,会造成严重浪费。
步骤s166,获取前一帧中图像宏块的平均比特数和前一帧中文字宏块的平均比特数,其中,图像宏块的平均比特数为前一帧中所有图像宏块的比特数与前一帧中宏块数量的比值,文字宏块的平均比特数为前一帧中所有文字宏块的比特数与前一帧中宏块数量的比值。
具体地,上述的前一帧中图像宏块的平均比特数可以是前一帧已编码产生的平均每图像宏块的比特数gpicture,上述的前一帧中文字宏块的平均比特数可以是前一帧已编码产生的平均每文字宏块的比特数gtext。
在一种可选的方案中,可以根据前一帧已编码产生的实际比特数计算图像宏块的码率和文字宏块的码率,如果前一帧没有文字宏块或者图像宏块的编码信息,则可以使用最相近的有编码信息的帧的gpicture和gtext。
需要说明的是,通过上述方案得到的图像宏块的码率和文字宏块的码率与实际编码比特数相近,但是无法根据信道带宽和缓冲区饱和度进行自适应编码,当某一帧编码的码流长度偏低之后,后面帧的目标码率和编码产生的码流长度会持续较低。
步骤s168,根据图像宏块的码率和前一帧中图像宏块的平均比特数,得到图像宏块的目标码率,并根据文字宏块的码率和前一帧中文字宏块的平均比特数,得到文字宏块的目标码率。
可选地,在本发明上述实施例中,通过如下公式计算图像宏块的目标码率和文字宏块的目标码率:
其中,gpicture为前一帧中图像宏块的平均比特数,gtext为前一帧中文字宏块的平均比特数。
在一种可选的方案中,为了解决目标码率的自适应问题,同时避免目标码率过大,可以将上述两种方案得到的码率进行线性组合,组合系数是当前缓冲区饱和度占信道码率的比例,即组合系数为
可选地,在本发明上述实施例中,在得到图像宏块的目标码率和文字宏块的目标码率之后,该方法还包括如下步骤:判断图像宏块的目标码率和文字宏块的目标码率是否小于等于预设目标码率;如果图像宏块的目标码率或文字宏块的目标码率大于预设目标码率,则将图像宏块的目标码率或文字宏块的目标码率变为预设目标码率。
具体地,上述的预设目标码率可以根据实际编解码需要进行设定,例如,可以是500。
在一种可选的方案中,为了避免目标码率仍然过大的情况,可以增加一个最大目标码率限制,最终的目标码率可以是计算得到的目标码率与预设目标码率的最小值,即,如果计算得到的目标码率小于等于预设目标码率,则确定最终的目标码率为计算得到的目标码率;如果计算得到的目标码率大于预设目标码率,则确定最终的目标码率为预设目标码率,也即,可以通过如下公式限制目标码率:
可选地,在本发明上述实施例中,步骤s10626,根据图像宏块的目标码率,得到图像宏块的量化参数,并根据文字宏块的目标码率,得到文字宏块的量化参数,包括:
步骤s152,获取图像宏块的复杂性度量、图像宏块的第一拟合参数、图像宏块的第二拟合参数、文字宏块的复杂性度量、文字宏块的第一拟合参数和文字宏块的第二拟合参数,其中,复杂性度量用于表征图像宏块或文字宏块中逃逸像素数量的平均值,逃逸像素为图像宏块或文字宏块中除基本像素之外的其他像素。
具体地,上述的复杂性度量可以是文字宏块或者图像宏块每宏块逃逸像素数,即图像宏块的复杂性度量cpicture=nes(picture),文字宏块的复杂性度量ctext=nes(text);第二拟合参数可以是关于复杂性度量的分段函数;第一拟合参数对不同帧的变化较大,主要与各个宏块yuv三分量的分布相关,各种统计量(例如均值、方差、逃逸像素数等)都对第二拟合参数有影响,并且这些统计量与每帧图像内容紧密相关,因此,在实际编码过程中,可以通过迭代更新的方法求解第一拟合参数。
可选地,在本发明上述实施例中,通过如下公式计算得到图像宏块的第二拟合参数:
其中,β为图像宏块的第二拟合参数,cpicture为图像宏块的复杂性度量。
通过如下公式计算得到文字宏块的第二拟合参数:
其中,b为文字宏块的第二拟合参数,ctext为文字宏块的复杂性度量。
步骤s154,根据图像宏块的复杂性度量、图像宏块的第一拟合参数和图像宏块的第二拟合参数,得到图像宏块的量化参数,并根据文字宏块的复杂性度量、文字宏块的第一拟合参数和文字宏块的第二拟合参数,得到文字宏块的量化参数。
可选地,在本发明上述实施例中,通过如下公式计算图像宏块的量化参数:
rpicture=cpicture*α*qpβ,
其中,α为图像宏块的第一拟合参数,qp为图像宏块的量化参数。
通过如下公式计算文字宏块的量化参数:
其中,a为文字宏块的第一拟合参数,△1为文字宏块的量化参数。
在一种可选的方案中,在确定了第一拟合参数、第二拟合参数、复杂性度量和目标码率之后,可以根据模型公式求出相应的量化参数。
可选地,在本发明上述实施例中,在得到图像宏块的量化参数和文字宏块的量化参数之后,该方法还包括如下步骤:对图像宏块的量化参数和文字宏块的量化参数进行修正,得到修正后的图像宏块的量化参数和修正后的文字宏块的量化参数。
可选地,在本发明上述实施例中,通过如下公式对图像宏块的量化参数进行修正,得到修正后的图像宏块的量化参数:
qp=min(max(qp,0.1),0.125)。
通过如下公式对文字宏块的量化参数进行修正,得到修正后的文字宏块的量化参数:
△1=min(max(△1,2),8)。
在一种可选的方案中,为了防止直接使用量化参数对宏块进行编码,造成量化参数过大,导致图像失真较大,可以对计算得到的量化参数进行修正,并将修正后的量化参数作为每个宏块的量化参数。
可选地,在本发明上述实施例中,在得到图像宏块的量化参数和文字宏块的量化参数之后,该方法还包括如下步骤:根据当前帧中图像宏块的基本像素数,得到新的图像宏块的复杂性度量,并根据当前帧中文字宏块的基本像素数,得到新的文字宏块的复杂性度量;根据新的图像宏块的复杂性度量,得到新的图像宏块的第二拟合参数,并根据新的文字宏块的复杂性度量,得到新的文字宏块的第二拟合参数;根据图像宏块的复杂性度量、前一帧中图像宏块的平均比特数、图像宏块的量化参数、图像宏块的第二拟合参数、新的图像宏块的复杂性度量和新的图像宏块的第二拟合参数,得到新的图像宏块的第一拟合参数,并根据文字宏块的复杂性度量、前一帧中文字宏块的平均比特数、文字宏块的量化参数、文字宏块的第二拟合参数、新的文字宏块的复杂性度量和新的文字宏块的第二拟合参数,得到新的文字宏块的第一拟合参数。
可选地,在本发明上述实施例中,通过如下公式计算得到新的图像宏块的第一拟合参数:
其中,α′为新的图像宏块的第一拟合参数,cpicture′为新的图像宏块的复杂性度量,β′为新的图像宏块的第二拟合参数,μ为线性组合系数.
通过如下公式计算得到新的文字宏块的第一拟合参数:
其中,a′为新的文字宏块的第一拟合参数,ctext′为新的文字宏块的复杂性度量,b′为新的文字宏块的第二拟合参数。
在一种可选的方案中,为了使得每一帧量化参数计算准确,在得到每个宏块的量化参数之后,可以对复杂性度量、第一拟合参数和第二拟合参数进行更新,可以统计当前帧中平均每宏块的逃逸像素数,得到新的复杂性度量,根据新的复杂性度量,对第二拟合参数进行更新,得到新的第二拟合参数,然后根据复杂性度量、前一帧宏块的平均比特数、宏块的量化参数、第二拟合参数、新的复杂性度量和新的第二拟合参数,得到新的第一拟合参数,实现第一拟合参数的迭代更新。
需要说明的是,对于第一帧图像,可以预先设定相应的文字宏块的量化参数和图像宏块的量化参数,例如,文字宏块的量化参数可以是75,图像宏块的量化参数可以是4,然后从第二帧图像开始,计算文字宏块的量化参数和图像宏块的量化参数,并对复杂性度量、第一拟合参数和第二拟合参数进行更新。
图2是根据本发明实施例的一种可选的图像数据码率的处理方法的流程图,下面结合图2,以视频传输系统为例,对本发明一种优选的实施例进行详细说明,如图2所示,该方法可以是编码器中的码率处理模块执行的方法,编码器从视频源端获取当前帧,并对当前帧进行编码,通过网络将编码后的当前帧发送给解码器,由解码器进行解码,得到当前帧,并通过接收显示端进行显示,具体地,该方法可以包括如下步骤:
步骤s21,当前帧识别分块。
可选地,可以对当前帧进行划分,得到多个宏块,提取每个宏块的基本像素数和高梯度像素数,并根据每个宏块的基本像素数和高梯度像素数,确定每个宏块的类型。
步骤s22,缓冲区饱和度计算。
可选地,可以根据缓冲区饱和度模型,计算得到当前的缓冲区饱和度,然后根据当前的缓冲区饱和度以及信道带宽,可以得到为当前帧分配的码率。
步骤s23,目标码率分配。
可选地,可以根据当前帧分配的码率,以及前一帧已编码产生的实际比特数,得到图像宏块的目标码率和文字宏块的目标码率。
步骤s24,量化参数计算及模型更新。
可选地,可以将图像宏块的目标码率和文字宏块的目标码率分别代入对应的量化参数模型,从而得到图像宏块的量化参数和文字宏块的量化参数,进而得到每个宏块的量化参数。进一步地,根据计算得到的量化参数,对量化参数模型中的复杂性度量、第一拟合参数和第二拟合参数进行更新。
通过上述方案,可以根据图像内容和信道带宽,利用预测技术自适应调整量化参数,计算过程简单,计算复杂度低,便于实施,可以很好的嵌入到实时视频传输系统中。
实施例2
根据本发明实施例,提供了一种图像数据码率的处理装置的实施例。
图3是根据本发明实施例的一种图像数据码率的处理装置的示意图,如图3所示,该装置包括:
划分单元31,用于对图像数据中的当前帧进行分块,得到多个宏块。
具体地,上述的图像数据可以是视频数据中的多帧图像,在本发明实施例中,以图像数据为yuv图像为例,进行详细说明。
可选地,在本发明上述实施例中,在对图像数据中的当前帧进行分块,得到多个宏块之前,该方法还包括如下步骤:获取图像数据的格式;判断图像数据的格式是否为预设格式;如果图像数据不是预设格式,则将图像数据的格式转换为预设格式。
具体地,上述的预设格式可以是yuv格式。
在一种可选的方案中,在获取到当前帧之后,首先判断图像数据是否为yuv格式,如果是,则将图像数据中的当前帧划分为16*16的宏块;如果不是,则进行格式转换,将图像数据转换为yuv格式,然后将图像数据中的当前帧划分为16*16的宏块。
获取单元33,用于获取多个宏块的类型,其中,类型包括:图像宏块和文字宏块。
在一种可选的方案中,可以根据每个宏块的内容,确定每个宏块是图像宏块还是文字宏块,从而得到每个宏块的类型。
处理单元35,用于根据多个宏块的类型,得到多个宏块的量化参数。
在一种可选的方案中,不同类型的宏块可以使用不同编码器,并且对应不同的量化参数。对于图像宏块,可以使用jpeg编码器进行编解码,图像宏块的量化参数可以是jpeg编码中的量化因子q;对于文字宏块,文字宏块涉及两个参数,分别为δ1和δ2,其中,可以设定δ1=4δ2。δ1和q越小,文字宏块和图像宏块的量化越精细,码率越大;δ1和q越大,文字宏块和图像宏块的量化越粗糙,码率越小。
编码单元37,用于根据多个宏块的量化参数对多个宏块进行编码,得到编码后的当前帧。
在一种可选的方案中,在得到每个宏块的量化参数之后,可以采用对应的编码器,对每个宏块进行编码,得到编码后的当前帧,并通过网络将编码后的当前帧发送给解码器,从而解码得到当前帧。
根据本发明上述实施例,通过划分单元对图像数据中的当前帧进行分块,得到多个宏块,通过获取单元获取多个宏块的类型,通过处理单元根据多个宏块的类型,得到多个宏块的量化参数,通过编码单元根据多个宏块的量化参数对多个宏块进行编码,得到编码后的当前帧,从而实现对图像数据码率的处理。容易注意到的是,由于根据宏块的类型,得到宏块的量化参数,即通过宏块的内容确定宏块的量化参数,进一步控制编码后的在当前帧的码率,计算过程简单、计算复杂度低,从而解决了现有技术中图像数据码率的处理方法采用率失真优化方法,导致计算复杂度高的技术问题。因此,通过本发明上述实施例提供的技术方案,可以达到简化计算过程,降低计算复杂度的技术效果,可以更好的嵌入到实时视频传输系统中。
可选地,在本发明上述实施例中,获取单元33包括:
获取模块,用于获取多个宏块的特征信息,其中,特征信息包括:基本像素数和高梯度像素数。
需要说明的是,由于人类视觉系统特性,对y分量的敏感性远大于u、v分量,因此在获取每个宏块的特征信息时,可以仅考虑y分量,即仅考虑每个像素的亮度值,其中,y分量像素值的取值区间为0~255。
具体地,上述的基本像素可以是宏块中y分量像素值被识别为基本像素值的像素;上述的高梯度像素可以是像素值与周围某一像素值的差值大于预设阈值的像素。
确定模块,用于根据多个宏块的特征信息,确定多个宏块的类型。
在一种可选的方案中,可以提取每个宏块的基本像素数和高梯度像素数这两个特征信息,根据提取到的特征信息,将宏块划分为图像宏块的文字宏块。
可选地,在本发明上述实施例中,获取模块包括:第一获取子模块,用于获取每个宏块中至少一个基本像素值;第一比较子模块,用于将每个宏块中每个像素的像素值与至少一个基本像素值进行比较,得到每个宏块的基本像素数;第二比较子模块,用于将每个宏块中每个像素的像素值与相邻像素的像素值进行比较,得到每个宏块的高梯度像素数。
可选地,在本发明上述实施例中,第一获取子模块包括:第一统计重子模块,用于统计每个宏块中所有像素的像素值的分布直方图;排序重子模块,用于根据分布直方图,按照每个像素值出现的次数进行降序排列;第一获取重子模块,用于从第一像素值开始,获取至少一个像素值作为基本像素值。
可选地,在本发明上述实施例中,第一比较子模块包括:第一计算重子模块,用于对于每个像素,计算每个像素的像素值与至少一个基本像素值的差值,得到每个像素对应的至少一个第一差值;第二计算重子模块,用于计算每个像素对应的至少一个第一差值的绝对值,得到每个像素对应的至少一个第一绝对值;第一判断重子模块,用于判断每个像素对应的至少一个第一绝对值是否小于等于第一预设绝对值;第一标记重子模块,用于如果第一像素对应的任意一个第一绝对值小于等于第一预设绝对值,则将第一像素标记为基本像素;第二统计重子模块,用于统计每个宏块中的基本像素的数量,得到每个宏块的基本像素数。
可选地,在本发明上述实施例中,第二比较子模块包括:包括:第三计算重子模块,用于对于每个像素,计算每个像素的像素值与相邻多个第二像素的像素值的差值,得到每个像素对应的多个第二差值,其中,第二像素为在水平方向和者垂直方向与每个像素相邻的像素;第四计算重子模块,用于计算每个像素对应的多个第二差值的绝对值,得到每个像素对应的多个第二绝对值;第二判断重子模块,用于判断每个像素对应的多个第二绝对值是否大于等于第二预设绝对值;如果第二像素对应的任意一个第二绝对值大于等于第二预设绝对值,则将第二像素标记为高梯度像素;第三统计重子模块,用于统计每个宏块中的高梯度像素的数量,得到每个宏块的高梯度像素数。
可选地,在本发明上述实施例中,确定模块包括:第三比较子模块,用于将每个宏块的基本像素数与预设基本像素数进行比较,并将每个宏块的高梯度像素数与第一高梯度像素数和第二高梯度像素数进行比较;第一确定子模块,用于如果第三宏块的基本像素数大于预设基本像素数,且第三宏块的高梯度像素数大于第一高梯度像素数,则确定第三宏块的类型为文字宏块;第二确定子模块,用于如果第一宏块的基本像素数大于预设基本像素数,且第一宏块的高梯度像素数小于第一高梯度像素数,则确定第一宏块的类型为图像宏块;第三确定子模块,用于如果第四宏块的基本像素数小于预设基本像素数,且第一宏块的高梯度像素数大于第二高梯度像素数,则确定第一宏块的类型为文字宏块;第四确定子模块,用于如果第二宏块的基本像素数小于预设基本像素数,且第二宏块的高梯度像素数小于第二高梯度像素数,则确定第二宏块的类型为图像宏块。
可选地,在本发明上述实施例中,处理单元35包括:第一获取模块,用于获取图像宏块的量化参数和文字宏块的量化参数;处理模块,用于根据多个宏块的类型、图像宏块的量化参数和文字宏块的量化参数,得到多个宏块的量化参数。
可选地,在本发明上述实施例中,第一获取模块包括:第二获取子模块,用于获取当前帧的码率;第三获取子模块,用于根据当前帧的码率,获取图像宏块的目标码率和文字宏块的目标码率;处理子模块,用于根据图像宏块的目标码率,得到图像宏块的量化参数,并根据文字宏块的目标码率,得到文字宏块的量化参数。
可选地,在本发明上述实施例中,第二获取子模块包括:第二获取重子模块,用于获取当前帧的信道可用带宽和当前缓冲区饱和度;比较重子模块,用于将当前缓冲区饱和度和预设值进行比较,得到比较结果;第一处理重子模块,用于根据比较结果、当前帧的信道可用带宽和预设帧率,得到当前帧的码率。
可选地,在本发明上述实施例中,第一处理重子模块还用于通过如下公式计算得到当前帧的码率:
其中,rc为当前帧的码率,w为当前缓冲区饱和度,r为当前帧的信道可用带宽,f为预设帧率,
可选地,在本发明上述实施例中,第二获取重子模块还用于获取历史缓冲区饱和度和前一帧的比特数;根据历史缓冲区饱和度、前一帧的比特数、当前帧的信道可用带宽和预设帧率,得到当前缓冲区饱和度。
可选地,在本发明上述实施例中,第二获取重子模块还用于通过如下公式计算得到当前缓冲区饱和度:
其中,wprev为历史缓冲区饱和度,g为前一帧的比特数。
可选地,在本发明上述实施例中,该装置还包括:第三判断重子模块,用于判断当前缓冲区饱和度是否超过信道的码率,其中,通过计算当前帧的信道可用带宽和预设帧率的比值,得到信道的码率;编码重子模块,用于如果当前缓冲区饱和度超过信道的码率,则通过最大量化参数进行量化编码,以降低当前缓冲区饱和度。
可选地,在本发明上述实施例中,第三获取子模块包括:第二处理重子模块,用于根据当前帧的码率、图像宏块的数量和文字宏块的数量,得到平均码率;第三处理重子模块,用于根据平均码率,得到图像宏块的码率和文字宏块的码率;第三获取重子模块,用于获取前一帧中图像宏块的平均比特数和前一帧中文字宏块的平均比特数,其中,图像宏块的平均比特数为前一帧中所有图像宏块的比特数与前一帧中宏块数量的比值,文字宏块的平均比特数为前一帧中所有文字宏块的比特数与前一帧中宏块数量的比值;第四处理重子模块,用于根据图像宏块的码率和前一帧中图像宏块的平均比特数,得到图像宏块的目标码率,并根据文字宏块的码率和前一帧中文字宏块的平均比特数,得到文字宏块的目标码率。
可选地,在本发明上述实施例中,第二处理重子模块还用于通过如下公式计算平均码率:
其中,r0为平均码率,text_mbcount为文字宏块的数量,picture_mbcount为图像宏块的数量。
可选地,在本发明上述实施例中,第三处理重子模块还用于通过如下公式计算图像宏块的码率和文字宏块的码率:
其中,rtpicture为图像宏块的码率,rttext为文字宏块的码率。
可选地,在本发明上述实施例中,第四处理重子模块还用于通过如下公式计算图像宏块的目标码率和文字宏块的目标码率:
其中,gpicture为前一帧中图像宏块的平均比特数,gtext为前一帧中文字宏块的平均比特数。
可选地,在本发明上述实施例中,该装置还包括:第四判断重子模块,用于判断图像宏块的目标码率和文字宏块的目标码率是否小于等于预设目标码率;第五处理重子模块,用于如果图像宏块的目标码率或文字宏块的目标码率大于预设目标码率,则将图像宏块的目标码率或文字宏块的目标码率变为预设目标码率。
可选地,在本发明上述实施例中,处理子模块包括:第四获取重子模块,用于获取图像宏块的复杂性度量、图像宏块的第一拟合参数、图像宏块的第二拟合参数、文字宏块的复杂性度量、文字宏块的第一拟合参数和文字宏块的第二拟合参数,其中,复杂性度量用于表征图像宏块或文字宏块中逃逸像素数量的平均值,逃逸像素为图像宏块或文字宏块中除基本像素之外的其他像素;第六处理重子模块,用于根据图像宏块的复杂性度量、图像宏块的第一拟合参数和图像宏块的第二拟合参数,得到图像宏块的量化参数,并根据文字宏块的复杂性度量、文字宏块的第一拟合参数和文字宏块的第二拟合参数,得到文字宏块的量化参数。
可选地,在本发明上述实施例中,第四获取重子模块还用于通过如下公式计算得到图像宏块的第二拟合参数:
其中,β为图像宏块的第二拟合参数,cpicture为图像宏块的复杂性度量。
第四获取重子模块还用于通过如下公式计算得到文字宏块的第二拟合参数:
其中,b为文字宏块的第二拟合参数,ctext为文字宏块的复杂性度量。
可选地,在本发明上述实施例中,第六处理重子模块还用于通过如下公式计算图像宏块的量化参数:
rpicture=cpicture*α*qpβ,
其中,α为图像宏块的第一拟合参数,qp为图像宏块的量化参数。
第六处理重子模块还用于通过如下公式计算文字宏块的量化参数:
其中,a为文字宏块的第一拟合参数,△1为文字宏块的量化参数。
可选地,在本发明上述实施例中,该装置还包括:修正重子模块,用于对图像宏块的量化参数和文字宏块的量化参数进行修正,得到修正后的图像宏块的量化参数和修正后的文字宏块的量化参数。
可选地,在本发明上述实施例中,修正重子模块还用于通过如下公式对图像宏块的量化参数进行修正,得到修正后的图像宏块的量化参数:
qp=min(max(qp,0.1),0.125)。
修正重子模块还用于通过如下公式对文字宏块的量化参数进行修正,得到修正后的文字宏块的量化参数:
△1=min(max(△1,2),8)。
可选地,在本发明上述实施例中,该装置还包括:第一更新子模块,用于根据当前帧中图像宏块的基本像素数,得到新的图像宏块的复杂性度量,并根据当前帧中文字宏块的基本像素数,得到新的文字宏块的复杂性度量;第二更新子模块,用于根据新的图像宏块的复杂性度量,得到新的图像宏块的第二拟合参数,并根据新的文字宏块的复杂性度量,得到新的文字宏块的第二拟合参数;第三更新子模块,用于根据图像宏块的复杂性度量、前一帧中图像宏块的平均比特数、图像宏块的量化参数、图像宏块的第二拟合参数、新的图像宏块的复杂性度量和新的图像宏块的第二拟合参数,得到新的图像宏块的第一拟合参数,并根据文字宏块的复杂性度量、前一帧中文字宏块的平均比特数、文字宏块的量化参数、文字宏块的第二拟合参数、新的文字宏块的复杂性度量和新的文字宏块的第二拟合参数,得到新的文字宏块的第一拟合参数。
可选地,在本发明上述实施例中,第三更新子模块还用于通过如下公式计算得到新的图像宏块的第一拟合参数:
其中,α′为新的图像宏块的第一拟合参数,cpicture′为新的图像宏块的复杂性度量,β′为新的图像宏块的第二拟合参数,μ为线性组合系数.
第三更新子模块还用于通过如下公式计算得到新的文字宏块的第一拟合参数:
其中,a′为新的文字宏块的第一拟合参数,ctext′为新的文字宏块的复杂性度量,b′为新的文字宏块的第二拟合参数。
实施例3
根据本发明实施例,提供了一种存储介质的实施例,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述实施例1中的图像数据码率的处理方法。
实施例4
根据本发明实施例,提供了一种处理器的实施例,处理器用于运行程序,其中,程序运行时执行上述实施例1中的图像数据码率的处理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。