本發明涉及無人機領域,尤其是一種視頻碼率控制方法。
背景技術:
:隨著無人機在現代戰爭中應用越來越多,其在戰場情報偵察、指揮和控制中也開始發揮重要作用。這些都需要無人機視頻處理系統能夠提供清晰可靠的視頻圖像。早期的無人機視頻處理系統采用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