一种适用于无人机SPI接口视频码率控制方法与流程

文档序号:11157405阅读:919来源:国知局
一种适用于无人机SPI接口视频码率控制方法与制造工艺
本发明涉及无人机领域,尤其是一种视频码率控制方法。
背景技术
:随着无人机在现代战争中应用越来越多,其在战场情报侦察、指挥和控制中也开始发挥重要作用。这些都需要无人机视频处理系统能够提供清晰可靠的视频图像。早期的无人机视频处理系统采用JPEG2000对采集到的视频进行压缩,虽然这种方法已经能够提供不错的图像质量,但缺点是压缩后的视频数据量较大,对带宽有限的无线传输信道造成巨大的压力。我们需要的无人机视频处理系统应能够尽可能以恒定码率输出数据到数据链复接设备,便于与机载任务数据以及其他遥测数据进行复接和处理。近年来研究人员和技术人员也设计出了一些无人机视频处理系统,但是还没有很好的解决实时性问题和压缩编码数据按照信道带宽要求以恒定速率通过SPI接口传输的问题。由于无人机机载视频处理系统的压缩数据要与机载任务数据以及其他遥测数据进行复接,通过无线信道传输到地面指挥中心进行处理。因此,需要设计缓冲区码率控制机制,使视频处理系统尽可能以恒定码率输出数据到数据链复接设备,便于与机载任务数据以及其他遥测数据进行复接和处理。技术实现要素:为了克服现有技术的不足,根据串行外设接口(SerialPeripheralInterface,SPI)接口特性以及网络流媒体数据服务端处理机制,本发明提出了一种适用于无人机SPI接口视频码率控制方法,以实际工程需求为背景,通过分析、研究在输出端和视频传输复接接口之间划分一块内存作为缓冲区,通过实时调整量化因子、编码器的输入帧率和缓冲区占有率门限来控制输出码率,完成编码控制机制和数据处理缓冲机制,解决视频压缩数据恒定可控问题,满足无线信道预留带宽的目的。本发明的适用于实时应用的无人机SPI接口视频码率控制方法包括了以下步骤:步骤1:缓冲区正常工作的要求为t时刻缓冲区内已缓存的视频流大小等于0~t时间段内流入缓冲区的视频流总量减去0~t时间段内流出缓冲区的视频流的总量,即满足式(1)式(1)中,Buffer(t)表示t时刻缓冲区缓存视频数据的总量,Input_rate(t)表示t时刻已编码的视频流入SPI缓冲区的速度,即当前编码器的输出码率,Output_rate(t)表示t时刻视频流出SPI缓冲区的速度,即SPI接口的视频传输速度;步骤2:根据目标码率计算初始量化参数根据单位像素的平均目标比特数确定初始量化参数QP0,其计算公式如下:其中l1,l2,l3是预定的阈值,l1,l2,l3的设置参数表1:表1图像大小l1l2l3QCIF0.10.30.6CIF0.20.61.2大于CIF0.61.42.4表1中CIF为CommonIntermediateFormat,QCIF为QuarterCommonIntermediateFormat,其中CIF和QCIF都是一种通用视频格式,CIF尺寸大小为352×288像素,QCIF尺寸大小为176×144像素;公式(2)图像中每个像素点所占的比特数bpp由下式确定:公式(3)中u(n1,1)表示起始可用信道带宽,n1,1表示第1个GOP的第1帧,Fr为编码时的帧率,单位为帧/秒,记为fps,width表示图像宽度,height表示图像高度,width和height单位均为像素;GOP第一帧为I帧,其余均为P帧,对于图像组(GroupofPicture,GOP),起始量化参数由式(4)确定:其中,表示除第1个I帧之外的第i个GOP的起始量化参数,QPi-1(1)表示除第1个I帧之外的第(i-1)个GOP的起始量化参数,Np(i-1)表示第(i-1)个GOP中P帧个数,TotalQPforPPicture(i-1)表示第(i-1)个GOP中所有P帧量化参数之和,Ngop是第i个GOP中的总帧数;公式(4)的代入公式(5),与QPi-1(1)-2相比求出最大值,即可求出迭代后的QPi(1):步骤3:根据目标缓冲区大小,确定当前P帧图像的目标比特数在第i个GOP的第一个P帧编码完成后,目标缓冲区大小的起始值依照下式确定:Tbl(ni,2)=Bc(ni,2)(6)其中Tbl(ni,2)是第i个GOP的第一个P帧编码完成后,目标缓冲区大小的起始值,Bc(ni,2)是第i个GOP的第一个P帧编码完成后实际缓冲区大小;随后的P帧的目标缓冲区大小按照式(7)计算:其中,Tbl(ni,2)表示第i个GOP的第一个P帧编码完成后,目标缓冲区大小的起始值;Tbl(ni,j)表示第i个GOP的第(j-1)个P帧编码完成后,目标缓冲区大小的值;Tbl(ni,j+1)表示第i个GOP的第j个P帧编码完成后,目标缓冲区大小的值;Np表示第i个GOP中P帧的总帧数;第i个GOP的第j个P帧应分配的目标比特数取决于目标缓冲区大小、帧率、可用信道带宽和实际缓冲区大小,计算公式如下:其中表示第i个GOP的第j个P帧应分配的目标比特数,u(ni,j)表示第i个GOP的第j个P帧应分配的可用信道带宽,γ是常数,Tbl(ni,j)表示第i个GOP的第j-1个P帧应分配的目标缓冲区大小,Bc(ni,j)表示第i个GOP的第j-1个P帧应分配的实际缓冲区大小;对于第i个GOP开始编码时,分配的比特数由式(9)计算:其中Tr(ni,0)表示第i个GOP分配的比特数,u(ni,1)表示第i个GOP起始可用信道带宽,Ngop表示第i个GOP中的总帧数,Bc(ni-1,Ngop)表示编码完第(i-1)个GOP后虚拟缓冲区实际大小;根据公式(9)计算剩余可用比特数,当信道带宽随时间变化时,剩余比特数Tr(ni,j)通过下式计算:其中Tr(ni,j)表示第i个GOP的第j个P帧的剩余比特数,Tr(ni,j-1)表示第i个GOP的第(j-1)个P帧的剩余比特数,u(ni,j-1)表示第i个GOP的第j-1个P帧应分配的可用信道带宽,A(ni,j-1)表示第i个GOP的第j-1个P帧实际编码比特数;当信道带宽恒定时,当前帧的剩余比特数通过下式计算:Tr(ni,j)=Tr(ni,j-1)-A(ni,j-1)(11)有公式(12):其中表示第i个GOP的第j个P帧的目标比特数,Np,r(j-1)表示未编码的第(j-1)个P帧数目,当前P帧图像的目标比特数由和的加权组合计算得到:其中β是0至1之间的任意常数;为了满足假想的解码器HRD(HypotheticalReferenceDecoder)要求,目标比特数作如下限制:即L(ni,j)<f(ni,j)<U(ni,j),其中,f(ni,j)表示目标比特数,U(ni,j)和L(ni,j)分别表示为保证缓冲区既不上溢又不下溢时,编码图像n所产生的比特数的上界和下界,其中,U(ni,j)为比特数的上界,L(ni,j)为比特数的下界;步骤4:确定帧级量化参数QPP帧量化参数的计算如下:设定当前帧的量化参数QPpc,当前帧为I帧或者是紧接I帧之后的第一个P帧时QPpc=QP0;否则,根据MADPi=a1*MADPi-1+a2,a1,a2为预测模型的两个参数,初始值分别为a1=1,a2=0,MADPi代表当前基本单元相应位置处的MAD,MADPi-1代表前一帧相应位置处的MAD,用前一帧的实际平均绝对差MAD(MeanAbsoluteDifference)来预测当前帧的MAD,按照二次率失真模型,计算出当前帧的量化参数QPpc,为了保证视频质量的连续性,相邻两帧量化参数的差值应不大于2,则量化参数作如下调整:QPpc=min{QPpp+2,max{QPpp-2,QPpc}}(15)其中QPpp为前一帧量化参数,由H.264标准可知,量化参数的取值范围为0~51,所有对量化参数作进一步的限制:QPpc=min{51,max{1,QPpc}}(16)用式(16)求得的量化参数对当前帧的每个宏块执行率失真优化RDO(RateDistortionOptimized),得出每个宏块的最佳编码模式,最后对模型参数进行更新;步骤5:跳帧控制比特数多少来表示运动复杂度作为跳帧衡量的标准,第i个P帧的运动复杂度Ci用下式来表示:其中Bp,i为第i个P帧根据(i-1)帧线性预测所得到的P帧比特数,Bp,i=αiBi-1,αi初始值为1,Bi-1为已编码的第(i-1)帧的实际比特数,αi为相邻两帧分配比特的变化因子,Bj(j=1,2,...,i)是已编帧的实际比特数,同时,在比特数分配完毕后,αi将进行更新,更新公式为判定相邻两帧图像是否发生场景切换的方法如下式所示:其中:Ti为场景切换变化因子,对Ti设定一个阈值ε,阈值ε为0到1的常数;当Ti>ε时,判定该帧发生场景切换,由于发生场景切换时编码比特数会发生急增,容易超过缓冲区的上溢阈值ω,当缓冲器上溢,就判定P帧为跳帧,具体步骤如下:采用GOP的结构为IPPPP...,即图像序列的第一帧为I帧,后面是连续的P帧,设定缓存容量的百分比为ω1,ω2,ω3,且ω1<ω2<ω3,同时设定图像的运动复杂度为a,b,c,且满足0<a<b<c<1,a、b和c均为固定值;ωi为当前编码帧的缓冲区满度;当ωi<ω1则认为当前帧为静止图像,跳过此帧;当ω1<ωi<ω2时:若Ci<a,则认为当前帧为静止图像,跳过此帧;若a<Ci<b,则认为当前帧为运动缓慢图像,跳过此帧,若Ci>b,则认为当前图像为运动剧烈图像,需要编码当前帧;当ω2<ωi<ω3时:若Ci<b,则认为当前帧为静止图像,跳过此帧;若b<Ci<c,则认为当前帧为运动缓慢图像,跳过此帧,若Ci>c,则认为当前图像为运动剧烈图像,需要编码当前帧;当ωi>ω3时:若Ci<c,则认为当前帧为静止图像,跳过此帧;若Ci>c,则认为当前图像为运动剧烈图像,需要编码当前帧;同时,当缓冲区满度ωi超过90%以后,无论Ci的值为多少都将此帧判定为跳帧。本发明的有益效果是由于采用一种适用于无人机SPI接口视频码率控制方法,在编码器的输出端和视频传输复接接口的之间划分一块内存作为缓冲区,通过实时调整量化因子、编码器的输入帧率和缓冲区占有率门限来控制输出码率,完成了编码控制机制和数据处理缓冲机制,解决了视频压缩数据恒定可控问题,满足无线信道预留带宽。附图说明图1为本发明码率控制流程图。具体实施方式下面结合附图和实施例对本发明进一步说明。为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明,为更清楚地表述本发明的内容,首先对一些术语加以说明:(1)I帧:I帧称为帧内编码帧,I帧是一个能够完全记载这一帧全部图像数据的帧,即可单独解码。(2)P帧:P帧称为前向预测帧,是根据与前一帧图像的比较,去掉与前帧相似的数据而构成的帧。(3)GOP:即图像组(GroupofPicture),图像压缩一般是以GOP为一个单元的。一般情况下一个图像组(GOP)由15帧组成,包含I帧和B、P帧等三种编码类型,图像帧编码的顺序为:IPBBPBB…IPBB…,在实时多媒体通信等情况下,一般采用IPPP…IPPP…结构。选取编码器编码帧率的范围是15~30,本发明为缓冲区设定占有率的门限即缓存容量的取值范围为下限为65%,上限为85%。本发明的适用于实时应用的无人机SPI接口视频码率控制方法包括了以下步骤:步骤1:缓冲区正常工作的要求为t时刻缓冲区内已缓存的视频流大小等于0~t时间段内流入缓冲区的视频流总量减去0~t时间段内流出缓冲区的视频流的总量,即满足式(1)式(1)中,Buffer(t)表示t时刻缓冲区缓存视频数据的总量,Input_rate(t)表示t时刻已编码的视频流入SPI缓冲区的速度,即当前编码器的输出码率,Output_rate(t)表示t时刻视频流出SPI缓冲区的速度,即SPI接口的视频传输速度;为防止缓冲区溢出,应该确保Buffer(t)的值不能超过缓冲区的容量上限。等式(1)中,Output_rate(t)是恒定的,则只能通过调节Input_rate(t)的大小确保缓冲区内t时刻的数据总量不超过缓冲区容量上限使缓冲区正常工作。Input_rate(t)是视频编码器的输出码率,在视频编码器的内部,通过实时调整量化参数、编码器的输入帧率和缓冲区占有率门限来控制输出码率。步骤2:根据目标码率计算初始量化参数根据单位像素的平均目标比特数确定初始量化参数QP0,其计算公式如下:其中l1,l2,l3是预定的阈值,l1,l2,l3的设置参数表1:表1图像大小l1l2l3QCIF0.10.30.6CIF0.20.61.2大于CIF0.61.42.4表1中CIF为CommonIntermediateFormat,QCIF为QuarterCommonIntermediateFormat,其中CIF和QCIF都是一种通用视频格式,CIF尺寸大小为352×288像素,QCIF尺寸大小为176×144像素;公式(2)图像中每个像素点所占的比特数bpp由下式确定:公式(3)中u(n1,1)表示起始可用信道带宽,n1,1表示第1个GOP的第1帧,Fr为编码时的帧率,单位为帧/秒,记为fps,width表示图像宽度,height表示图像高度,width和height单位均为像素;GOP第一帧为I帧,其余均为P帧,对于图像组(GroupofPicture,GOP),起始量化参数由式(4)确定:其中,表示除第1个I帧之外的第i个GOP的起始量化参数,QPi-1(1)表示除第1个I帧之外的第(i-1)个GOP的起始量化参数,Np(i-1)表示第(i-1)个GOP中P帧个数,TotalQPforPPicture(i-1)表示第(i-1)个GOP中所有P帧量化参数之和,Ngop是第i个GOP中的总帧数;公式(4)的代入公式(5),与QPi-1(1)-2相比求出最大值,即可求出迭代后的QPi(1):步骤3:根据目标缓冲区大小,确定当前P帧图像的目标比特数要计算当前P帧的目标比特数,必须首先计算出当前GOP中P帧的目标缓冲区大小,而目标缓冲区大小的设置是根据第一个即时解码更新帧(IDR)和第一个存储帧的编码比特数以及平均图像复杂度来进行的。由于每个GOP的第一个P帧的量化参数已在GOP层码率控制中得到,此处只需要计算每个GOP中其他P帧的目标缓冲区大小。在第i个GOP的第一个P帧编码完成后,目标缓冲区大小的起始值依照下式确定:Tbl(ni,2)=Bc(ni,2)(6)其中Tbl(ni,2)是第i个GOP的第一个P帧编码完成后,目标缓冲区大小的起始值,Bc(ni,2)是第i个GOP的第一个P帧编码完成后实际缓冲区大小;随后的P帧的目标缓冲区大小按照式(7)计算:其中,Tbl(ni,2)表示第i个GOP的第一个P帧编码完成后,目标缓冲区大小的起始值;Tbl(ni,j)表示第i个GOP的第(j-1)个P帧编码完成后,目标缓冲区大小的值;Tbl(ni,j+1)表示第i个GOP的第j个P帧编码完成后,目标缓冲区大小的值;Np表示第i个GOP中P帧的总帧数;根据线性理论分析,第i个GOP的第j个P帧应分配的目标比特数取决于目标缓冲区大小、帧率、可用信道带宽和实际缓冲区大小,计算公式如下:其中表示第i个GOP的第j个P帧应分配的目标比特数,u(ni,j)表示第i个GOP的第j个P帧应分配的可用信道带宽,γ是常数,Tbl(ni,j)表示第i个GOP的第j-1个P帧应分配的目标缓冲区大小,Bc(ni,j)表示第i个GOP的第j-1个P帧应分配的实际缓冲区大小;对于第i个GOP开始编码时,分配的比特数由式(9)计算:其中Tr(ni,0)表示第i个GOP分配的比特数,u(ni,1)表示第i个GOP起始可用信道带宽,Ngop表示第i个GOP中的总帧数,Bc(ni-1,Ngop)表示编码完第(i-1)个GOP后虚拟缓冲区实际大小;根据公式(9)计算剩余可用比特数,当信道带宽随时间变化时,剩余比特数Tr(ni,j)通过下式计算:其中Tr(ni,j)表示第i个GOP的第j个P帧的剩余比特数,Tr(ni,j-1)表示第i个GOP的第(j-1)个P帧的剩余比特数,u(ni,j-1)表示第i个GOP的第j-1个P帧应分配的可用信道带宽,A(ni,j-1)表示第i个GOP的第j-1个P帧实际编码比特数;当信道带宽恒定时,当前帧的剩余比特数通过下式计算:Tr(ni,j)=Tr(ni,j-1)-A(ni,j-1)(11)有公式(12):其中表示第i个GOP的第j个P帧的目标比特数,Np,r(j-1)表示未编码的第(j-1)个P帧数目,当前P帧图像的目标比特数由和的加权组合计算得到:其中β是0至1之间的任意常数,本发明取为0.9;为了满足假想的解码器HRD(HypotheticalReferenceDecoder)要求,目标比特数作如下限制:即L(ni,j)<f(ni,j)<U(ni,j),其中,f(ni,j)表示目标比特数,U(ni,j)和L(ni,j)分别表示为保证缓冲区既不上溢又不下溢时,编码图像n所产生的比特数的上界和下界,其中,U(ni,j)为比特数的上界,L(ni,j)为比特数的下界;步骤4:确定帧级量化参数QPP帧量化参数的计算如下:设定当前帧的量化参数QPpc,当前帧为I帧或者是紧接I帧之后的第一个P帧时QPpc=QP0;否则,根据MADPi=a1*MADPi-1+a2,a1,a2为预测模型的两个参数,初始值分别为a1=1,a2=0,MADPi代表当前基本单元相应位置处的MAD,MADPi-1代表前一帧相应位置处的MAD,用前一帧的实际平均绝对差MAD(MeanAbsoluteDifference)来预测当前帧的MAD,按照二次率失真模型,计算出当前帧的量化参数QPpc,为了保证视频质量的连续性,相邻两帧量化参数的差值应不大于2,则量化参数作如下调整:QPpc=min{QPpp+2,max{QPpp-2,QPpc}}(15)其中QPpp为前一帧量化参数,由H.264标准可知,量化参数的取值范围为0~51,所有对量化参数作进一步的限制:QPpc=min{51,max{1,QPpc}}(16)用式(16)求得的量化参数对当前帧的每个宏块执行率失真优化RDO(RateDistortionOptimized),得出每个宏块的最佳编码模式,最后对模型参数进行更新;步骤5:跳帧控制考虑到MAD值不能很好的表示运动复杂度的问题,并依据比特分布遵循以下的法则:高运动复杂度图像对应高比特数,低运动复杂度图像对应低比特数,以比特数多少来表示运动复杂度作为跳帧衡量的标准,第i个P帧的运动复杂度Ci用下式来表示:其中Bp,i为第i个P帧根据(i-1)帧线性预测所得到的P帧比特数,Bp,i=αiBi-1,αi初始值为1,Bi-1为已编码的第(i-1)帧的实际比特数,αi为相邻两帧分配比特的变化因子,Bj(j=1,2,...,i)是已编帧的实际比特数,同时,在比特数分配完毕后,αi进行更新,更新公式为为了更好地对缓冲区的占有量进行控制,获得高质量的图像质量,将场景切换所带来的编码比特数急增的图像考虑进来,给出的判定相邻两帧图像是否发生场景切换的方法如下式所示:其中:Ti为场景切换变化因子,对Ti设定一个阈值ε,阈值ε为0到1的常数;当Ti>ε时,就判定该帧发生场景切换,由于发生场景切换时编码比特数会发生急增,容易超过缓冲区的上溢阈值ω,所以为了防止缓冲器上溢,就判定该帧为跳帧。由于相邻两帧的相关性非常强,将场景切换的GOP的第1个P帧跳过,虽然这样做会丢失一些图像细节,导致图像质量略有下降,但是本发明能够更加有效的控制缓冲区的占有量,能够获取更稳定的图像质量。具体步骤如下:采用GOP的结构为IPPPP...,即图像序列的第一帧为I帧,后面是连续的P帧,设定缓存容量的百分比为ω1,ω2,ω3,且ω1<ω2<ω3,同时设定图像的运动复杂度为a,b,c,且满足0<a<b<c<1,a、b和c均为固定值;ωi为当前编码帧的缓冲区满度;当ωi<ω1则认为当前帧为静止图像,跳过此帧;当ω1<ωi<ω2时:若Ci<a,则认为当前帧为静止图像,跳过此帧;若a<Ci<b,则认为当前帧为运动缓慢图像,跳过此帧,若Ci>b,则认为当前图像为运动剧烈图像,需要编码当前帧;当ω2<ωi<ω3时:若Ci<b,则认为当前帧为静止图像,跳过此帧;若b<Ci<c,则认为当前帧为运动缓慢图像,跳过此帧,若Ci>c,则认为当前图像为运动剧烈图像,需要编码当前帧;当ωi>ω3时:若Ci<c,则认为当前帧为静止图像,跳过此帧;若Ci>c,则认为当前图像为运动剧烈图像,需要编码当前帧;同时,当缓冲区满度ωi超过90%以后,无论Ci的值为多少都将此帧判定为跳帧。由于I帧和前面几个P帧对于运动补偿的估计比较重要,跳过这些帧容易影响到后面的帧,因此,本发明从第3个P帧,即第4帧开始;而对前3帧的处理方法是:对I帧不采取跳帧,对第1个和第2个P帧只有当缓冲器的占用量达到90%时才跳过。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1