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

文档序号:11157405阅读:来源:国知局

技术特征:

1.一种适用于无人机SPI接口视频码率控制方法,其特征在于包括下述步骤:

步骤1:缓冲区正常工作的要求为t时刻缓冲区内已缓存的视频流大小等于0~t时间段内流入缓冲区的视频流总量减去0~t时间段内流出缓冲区的视频流的总量,即满足式(1)

<mrow> <mi>B</mi> <mi>u</mi> <mi>f</mi> <mi>f</mi> <mi>e</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> <mo>=</mo> <msubsup> <mo>&Integral;</mo> <mn>0</mn> <mrow> <mo>+</mo> <mi>&infin;</mi> </mrow> </msubsup> <mi>I</mi> <mi>n</mi> <mi>p</mi> <mi>u</mi> <mi>t</mi> <mo>_</mo> <mi>r</mi> <mi>a</mi> <mi>t</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> <mi>d</mi> <mi>t</mi> <mo>-</mo> <msubsup> <mo>&Integral;</mo> <mn>0</mn> <mrow> <mo>+</mo> <mi>&infin;</mi> </mrow> </msubsup> <mi>O</mi> <mi>u</mi> <mi>t</mi> <mi>p</mi> <mi>u</mi> <mi>t</mi> <mo>_</mo> <mi>r</mi> <mi>a</mi> <mi>t</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> <mi>d</mi> <mi>t</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

式(1)中,Buffer(t)表示t时刻缓冲区缓存视频数据的总量,Input_rate(t)表示t时刻已编码的视频流入SPI缓冲区的速度,即当前编码器的输出码率,Output_rate(t)表示t时刻视频流出SPI缓冲区的速度,即SPI接口的视频传输速度;

步骤2:根据目标码率计算初始量化参数

根据单位像素的平均目标比特数确定初始量化参数QP0,其计算公式如下:

<mrow> <msub> <mi>QP</mi> <mn>0</mn> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mn>33</mn> </mtd> <mtd> <mrow> <mi>b</mi> <mi>p</mi> <mi>p</mi> <mo>&lt;</mo> <mi>l</mi> <mn>1</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>29</mn> </mtd> <mtd> <mrow> <mi>l</mi> <mn>1</mn> <mo>&lt;</mo> <mi>b</mi> <mi>p</mi> <mi>p</mi> <mo>&lt;</mo> <mi>l</mi> <mn>2</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>24</mn> </mtd> <mtd> <mrow> <mi>l</mi> <mn>2</mn> <mo>&lt;</mo> <mi>b</mi> <mi>p</mi> <mi>p</mi> <mo>&lt;</mo> <mi>l</mi> <mn>3</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>19</mn> </mtd> <mtd> <mrow> <mi>b</mi> <mi>p</mi> <mi>p</mi> <mo>&gt;</mo> <mi>l</mi> <mn>3</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

其中l1,l2,l3是预定的阈值,l1,l2,l3的设置参数表1:

表1

图像大小l1l2l3QCIF0.10.30.6CIF0.20.61.2大于CIF0.61.42.4

表1中CIF为Common Intermediate Format,QCIF为Quarter Common Intermediate Format,其中CIF和QCIF都是一种通用视频格式,CIF尺寸大小为352×288像素,QCIF尺寸大小为176×144像素;

公式(2)图像中每个像素点所占的比特数bpp由下式确定:

<mrow> <mi>b</mi> <mi>p</mi> <mi>p</mi> <mo>=</mo> <mfrac> <mrow> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mn>1</mn> <mo>,</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>F</mi> <mi>r</mi> </msub> <mo>&times;</mo> <mi>w</mi> <mi>i</mi> <mi>d</mi> <mi>t</mi> <mi>h</mi> <mo>&times;</mo> <mi>h</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>t</mi> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

公式(3)中u(n1,1)表示起始可用信道带宽,n1,1表示第1个GOP的第1帧,Fr为编码时的帧率,单位为帧/秒,记为fps,width表示图像宽度,height表示图像高度,width和height单位均为像素;

GOP第一帧为I帧,其余均为P帧,对于图像组(Group of Picture,GOP),起始量化参数由式(4)确定:

<mrow> <mover> <mrow> <msub> <mi>QP</mi> <mi>i</mi> </msub> </mrow> <mo>&OverBar;</mo> </mover> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>=</mo> <mi>m</mi> <mi>i</mi> <mi>n</mi> <mo>{</mo> <msub> <mi>QP</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>+</mo> <mn>2</mn> <mo>,</mo> <mfrac> <mrow> <mi>T</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>l</mi> <mi>Q</mi> <mi>P</mi> <mi>f</mi> <mi>o</mi> <mi>r</mi> <mi>P</mi> <mi>P</mi> <mi>i</mi> <mi>c</mi> <mi>t</mi> <mi>u</mi> <mi>r</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>-</mo> <mi>m</mi> <mi>i</mi> <mi>n</mi> <mo>{</mo> <mn>2</mn> <mo>,</mo> <mfrac> <msub> <mi>N</mi> <mrow> <mi>g</mi> <mi>o</mi> <mi>p</mi> </mrow> </msub> <mn>15</mn> </mfrac> <mo>}</mo> <mo>}</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>

其中,表示除第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):

<mrow> <msub> <mi>QP</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>=</mo> <mi>m</mi> <mi>a</mi> <mi>x</mi> <mo>{</mo> <msub> <mi>QP</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mn>2</mn> <mo>,</mo> <mover> <mrow> <msub> <mi>QP</mi> <mi>i</mi> </msub> </mrow> <mo>&OverBar;</mo> </mover> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>}</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

步骤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)计算:

<mrow> <mi>T</mi> <mi>b</mi> <mi>l</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>T</mi> <mi>b</mi> <mi>l</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mfrac> <mrow> <mi>T</mi> <mi>b</mi> <mi>l</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mn>2</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

其中,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帧应分配的目标比特数取决于目标缓冲区大小、帧率、可用信道带宽和实际缓冲区大小,计算公式如下:

<mrow> <mover> <mi>f</mi> <mo>&OverBar;</mo> </mover> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <msub> <mi>F</mi> <mi>r</mi> </msub> </mfrac> <mo>+</mo> <mi>&gamma;</mi> <mrow> <mo>(</mo> <mi>T</mi> <mi>b</mi> <mi>l</mi> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> <mo>-</mo> <msub> <mi>B</mi> <mi>c</mi> </msub> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>8</mn> <mo>)</mo> </mrow> </mrow>

其中表示第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)计算:

<mrow> <msub> <mi>T</mi> <mi>r</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mn>0</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <msub> <mi>F</mi> <mi>r</mi> </msub> </mfrac> <mo>&times;</mo> <msub> <mi>N</mi> <mrow> <mi>g</mi> <mi>o</mi> <mi>p</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>B</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>,</mo> <msub> <mi>N</mi> <mrow> <mi>g</mi> <mi>o</mi> <mi>p</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>

其中Tr(ni,0)表示第i个GOP分配的比特数,u(ni,1)表示第i个GOP起始可用信道带宽,Ngop表示第i个GOP中的总帧数,Bc(ni-1,Ngop)表示编码完第(i-1)个GOP后虚拟缓冲区实际大小;

根据公式(9)计算剩余可用比特数,当信道带宽随时间变化时,剩余比特数Tr(ni,j)通过下式计算:

<mrow> <msub> <mi>T</mi> <mi>r</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>T</mi> <mi>r</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mrow> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mi>u</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <msub> <mi>F</mi> <mi>r</mi> </msub> </mfrac> <mrow> <mo>(</mo> <msub> <mi>N</mi> <mrow> <mi>g</mi> <mi>o</mi> <mi>p</mi> </mrow> </msub> <mo>-</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <mi>A</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>10</mn> <mo>)</mo> </mrow> </mrow>

其中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):

<mrow> <mover> <mi>f</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msub> <mi>T</mi> <mi>r</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>N</mi> <mrow> <mi>p</mi> <mo>,</mo> <mi>r</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>j</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>12</mn> <mo>)</mo> </mrow> </mrow>

其中表示第i个GOP的第j个P帧的目标比特数,Np,r(j-1)表示未编码的第(j-1)个P帧数目,当前P帧图像的目标比特数由的加权组合计算得到:

<mrow> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>&beta;</mi> <mo>&times;</mo> <mover> <mi>f</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&beta;</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <mover> <mi>f</mi> <mo>&OverBar;</mo> </mover> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>13</mn> <mo>)</mo> </mrow> </mrow>

其中β是0至1之间的任意常数;

为了满足假想的解码器HRD(Hypothetical Reference Decoder)要求,目标比特数作如下限制:

<mrow> <mtable> <mtr> <mtd> <mrow> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>max</mi> <mo>{</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mi>L</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>}</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>min</mi> <mo>{</mo> <mi>f</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mi>U</mi> <mrow> <mo>(</mo> <msub> <mi>n</mi> <mrow> <mi>i</mi> <mo>,</mo> <mi>j</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>}</mo> </mrow> </mtd> </mtr> </mtable> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>14</mn> <mo>)</mo> </mrow> </mrow>

即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:确定帧级量化参数QP

P帧量化参数的计算如下:

设定当前帧的量化参数QPpc,当前帧为I帧或者是紧接I帧之后的第一个P帧时QPpc=QP0

否则,根据MADPi=a1*MADPi-1+a2,a1,a2为预测模型的两个参数,初始值分别为a1=1,a2=0,MADPi代表当前基本单元相应位置处的MAD,MADPi-1代表前一帧相应位置处的MAD,用前一帧的实际平均绝对差MAD(Mean Absolute Difference)来预测当前帧的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(Rate Distortion Optimized),得出每个宏块的最佳编码模式,最后对模型参数进行更新;

步骤5:跳帧控制

比特数多少来表示运动复杂度作为跳帧衡量的标准,第i个P帧的运动复杂度Ci用下式来表示:

<mrow> <msub> <mi>C</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <msub> <mi>B</mi> <mrow> <mi>p</mi> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mrow> <mfrac> <mn>1</mn> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </mfrac> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>B</mi> <mi>j</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>17</mn> <mo>)</mo> </mrow> </mrow>

其中Bp,i为第i个P帧根据(i-1)帧线性预测所得到的P帧比特数,Bp,i=αiBi-1,αi初始值为1,Bi-1为已编码的第(i-1)帧的实际比特数,αi为相邻两帧分配比特的变化因子,Bj(j=1,2,...,i)是已编帧的实际比特数,同时,在比特数分配完毕后,αi将进行更新,更新公式为

<mrow> <msub> <mi>&alpha;</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mfrac> <msub> <mi>B</mi> <mi>i</mi> </msub> <msub> <mi>B</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mfrac> <mo>&CenterDot;</mo> <msub> <mi>&alpha;</mi> <mi>i</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>18</mn> <mo>)</mo> </mrow> </mrow>

判定相邻两帧图像是否发生场景切换的方法如下式所示:

<mrow> <msub> <mi>T</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>B</mi> <mrow> <mi>p</mi> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>B</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow> <msub> <mi>B</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>19</mn> <mo>)</mo> </mrow> </mrow>

其中:Ti为场景切换变化因子,对Ti设定一个阈值ε,阈值ε为0到1的常数;

当Ti>ε时,判定该帧发生场景切换,由于发生场景切换时编码比特数会发生急增,容易超过缓冲区的上溢阈值ω,当缓冲器上溢,就判定P帧为跳帧,具体步骤如下:

采用GOP的结构为IPPPP...,即图像序列的第一帧为I帧,后面是连续的P帧,设定缓存容量的百分比为ω123,且ω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的值为多少都将此帧判定为跳帧。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1