本發(fā)明屬于多媒體數(shù)據(jù)通信領域,涉及視頻信號傳輸方法,尤其涉及一種基于視頻復雜度的統(tǒng)計復用方法。
背景技術:
視頻信號數(shù)字化后數(shù)據(jù)帶寬很高,通常在20MB/秒以上,因此視頻壓縮技術是計算機處理視頻的前提,在大量應用中,帶寬的限制不可避免,視頻壓縮需要充分利用帶寬來進行。在目前多媒體傳輸應用中,視頻序列往往會被分別編碼,在一個總帶寬的限制下進行傳輸。然而,如果不同視頻序列以平均的碼率進行壓縮,其解壓后的視頻的質量將會層次不齊,我們往往更希望他們的質量接近與一致,給簡單的序列分配更少的帶寬,同時給復雜的序列分配更多的帶寬,這種動態(tài)分配技術被稱為統(tǒng)計復用。
現(xiàn)有統(tǒng)計復用方法包括兩大類,第一類是使峰值信噪比(PSNR)的總和最小,第二類是使所有序列PSNR的方差最小。目前,第二類統(tǒng)計復用方法使用的統(tǒng)計復用分配模型采用的是根據(jù)序列復雜度直接按比例進行分配,該分配模型缺乏理論依據(jù),根據(jù)現(xiàn)有分配模型,不同路的序列在PSNR上仍有較大的方差,分配效果不好。為了闡述現(xiàn)有分配模型的具體步驟,定義變量如下表所示:
表1 現(xiàn)有分配模型中的變量和相應的意義
現(xiàn)有的第二類統(tǒng)計復用方法中,碼率分配的具體過程如下:
當編碼完第k個SGOP時,按如下步驟對第k+1個SGOP進行編碼:
1)計算得到不同序列的下一個SGOP的總復雜度
2)根據(jù)分配模型(式1)進行計算,得到第k+1個SGOP分配的碼率
(式1)
3)根據(jù)得到的進行碼率控制,并且對第k+1個SGOP進行編碼;
當編碼完第k+1個SGOP之后,繼續(xù)重復上述步驟1)~3),直到編碼結束。
式1的分配模型中,針對其中的復雜度有多種預估方法,常用的預估方法包括式2中的復雜度估計算法(參見Boroczky,L.;Ngai,A.Y.;Westermann,E.F.,“Joint rate control with look-ahead for multi-program video coding”,Circuits and Systems for Video Technology,IEEE Transactions on,Volume:10,Issue:7,Pages:1159-1163,2000):
(式2)
式2中,參數(shù)NMB為一幀中塊的個數(shù);activMB(p)為第p個塊的標準差,具體通過式3計算得到:
(式3)
式3中,參數(shù)lum(i,j)表示該塊中第(i,j)位置處的亮度像素值;參數(shù)表示該塊的亮度像素均值。
統(tǒng)計復用的兩大類方法中,第一類方法使PSNR的總和最小,但該方法并不能解決不同序列質量不一致的難題,并且,在大量應用中,用戶往往關注的是某一視頻的質量,而不能同時去看多個視頻;第二類方法使所有序列PSNR的方差最小,這類方法是解決上述問題的類型。但是,第二類方法目前使用的分配模型(式1)根據(jù)預估的復雜度分配碼率缺乏理論依據(jù),按照式1的分配方式,無法證明可以達到使不同序列PSNR的方差最小化;同時,算法的分配非常依賴于復雜度預估得到的其準確程度一旦出現(xiàn)偏差,比如遇到場景切換等情況,對算法的分配會帶來很大的影響,同時每個復雜度預估的方法也都存在若干序列不符合的情況,導致該分配方法的最終結果缺乏魯棒性。因此,根據(jù)現(xiàn)有分配模型,不同路的序列在PSNR上仍有較大的方差,分配效果并不好,而且缺乏魯棒性。
技術實現(xiàn)要素:
為了克服上述現(xiàn)有技術的不足,本發(fā)明提供一種基于視頻復雜度的統(tǒng)計復用方法和碼率分配方法,通過建立理論性強的統(tǒng)計復用分配模型進行分配獲得碼率;該方法中的算法復雜 度很低并且具有很好的魯棒性。
本文中,統(tǒng)計復用(Statistic Multiplex)也簡稱為Multiplex(多路復用)。
本發(fā)明提供的技術方案是:
一種基于視頻復雜度的統(tǒng)計復用方法,針對N個視頻序列,每個SGOP包括所有視頻序列中同時進行碼率分配的多個相鄰幀;通過碼流復雜度分析得到每個視頻序列的碼流復雜度,第i個視頻序列在第k個SGOP中的復雜度記為
假設目前已經編碼了k個SGOP,則通過如下步驟對第k+1個SGOP進行編碼:
1)編碼第k個SGOP時,得到視頻序列在第k個SGOP中的的失真與碼率信息;第i個視頻序列在第k個SGOP中的失真與碼率分別記為和
2)計算得到視頻序列在第k個和第k+1個SGOP中的碼流復雜度信息,所述的第i個視頻序列在第k個和第k+1個SGOP中的碼流復雜度分別記為和
3)將視頻序列在第k個和第k+1個SGOP中的碼流復雜度信息和視頻序列在第k個SGOP中的失真與碼率信息和作為碼率分配模型的輸入,按照碼率分配方法分配碼率,得到視頻序列在第k+1個SGOP的碼率;第i個視頻序列在第k+1個SGOP中的碼率記為
4)根據(jù)得到的進行碼率控制,并且對視頻序列的第k+1個SGOP進行編碼;
編碼完第k+1個SGOP之后,繼續(xù)重復上述步驟1)~4),直到編碼結束。
針對上述基于視頻復雜度的統(tǒng)計復用方法,步驟3)所述碼率分配模型為式21:
其中, (式21)
式21中,Rc為多路視頻序列的總帶寬;和分別為第i個視頻序列在第k個和第k+1個SGOP中的碼率;和分別為第i個視頻序列在第k個和第k+1個SGOP中的碼流復雜度;為第i個視頻序列在第k個SGOP中的失真參數(shù)。
針對上述碼率分配模型式21,其中,所述失真參數(shù)可通過絕對誤差和、平均絕對差值、Hadamard變換后再絕對值求和、差值的平方和、平均平方誤差計算方法中的一種計算得到。
上述基于視頻復雜度的統(tǒng)計復用方法,步驟3)所述碼率分配方法具體包括如下步驟:
21)統(tǒng)計復用的目標函數(shù)為式4:
(式4)
式4中,參數(shù)Rc表示多路序列的總帶寬;參數(shù)表示第i個序列在第k個SGOP中編碼后的碼率;參數(shù)表示第i個序列在第k個SGOP中編碼后的失真,通過使用重構后圖像與原始圖像像素之間的均方誤差計算得到;參數(shù)表示所有序列在第k個SGOP中編碼后的失真平均值;參數(shù)N表示統(tǒng)計復用中同時需要進行分配的序列個數(shù);
22)通過拉格朗日系數(shù)定義和R-Q關系模型,得到R-D的關系式為式11:
(式11)
式11中,D為失真;R為碼率;C為視頻復雜度;參數(shù)σ是一個常數(shù)定值,其值根據(jù)序列不同而改變;
23)假設已經編碼了k個SGOP,正在對第k+1個SGOP進行碼率分配,根據(jù)步驟21)所述統(tǒng)計復用的目標函數(shù),設定最優(yōu)分配為:分配使得序列中的第k+1個SGOP的失真相等,且碼率之和等于總帶寬;
24)根據(jù)步驟22)所述R-D關系,將參數(shù)σ設定為:相同序列的兩個相鄰的SGOP的σ值相近;用前一個SGOP得到的σ值估算得到相同序列的下一個SGOP的σ值;
25)通過式18估算,分配得到第i個序列在第k+1個SGOP的碼率
其中,
式18和式181中,為第i個序列在第k+1個SGOP中的碼率;表示的估算值;Rc為多路序列的總帶寬;為第i個序列在第k個SGOP中的碼率;為第i個序列在第k個SGOP中的失真;和分別為第i個序列在第k個和第k+1個SGOP中的碼流復雜度。
針對上述基于視頻復雜度的統(tǒng)計復用方法,如果失真參數(shù)D難以計算,也可以使用量化 步長QPstep代替D,即步驟3)所述碼率分配模型為式22:
其中, (式22)
式22中,Rc為多路視頻序列的總帶寬;和分別為第i個視頻序列在第k個和第k+1個SGOP中的碼率;和分別為第i個視頻序列在第k個和第k+1個SGOP中的碼流復雜度;參數(shù)為量化步長。
式22中,參數(shù)表示量化步長QPstep。這里使用量化步長QPstep代替失真參數(shù)D計算得到碼率。
針對上述基于視頻復雜度的統(tǒng)計復用方法,步驟2)所述碼流復雜度具體通過式2計算得到:
(式2)
式2中,參數(shù)NMB為一幀中塊的個數(shù);activMB(p)為第p個塊的標準差,具體通過式3計算得到:
(式3)
式3中,參數(shù)lum(i,j)表示該塊中第(i,j)位置處的亮度像素值;參數(shù)表示該塊的亮度像素均值。
本發(fā)明提供方法采用上述碼率分配模型,經測試可節(jié)省大于60%的方差,而且,該分配模型不完全依賴于復雜度預估的精確度,不同復雜度對最終結果的影響很小。
與現(xiàn)有技術相比,本發(fā)明的有益效果是:
現(xiàn)有的碼率分配模型根據(jù)預估的復雜度分配碼率,實際上難以達到使不同序列PSNR的方差最小化;同時,分配方法依賴于預估得到的復雜度,其準確程度一旦出現(xiàn)偏差,比如遇到場景切換等情況,對算法的分配會帶來很大的影響,同時每個復雜度預估的方法也都存在若干序列不符合的情況,導致該分配方法的最終結果缺乏魯棒性。因此,根據(jù)現(xiàn)有分配模型得到的分配效果并不好,不同路的序列在PSNR上仍有較大的方差,而且方法缺乏魯棒性。
本發(fā)明提供一種基于視頻復雜度的統(tǒng)計復用方法和碼率分配方法,通過建立基于視頻復雜度的分配模型進行分配獲得碼率;該分配方式具有理論依據(jù),較之現(xiàn)有技術中直接根據(jù)視頻復雜度比例進行分配的模型大大提高了魯棒性以及分配效率。從實驗結果來看,可節(jié)省大于60%的方差,視頻之間PSNR的方差平均縮小65.56%;同時,在場景切換時能夠即使預測場景變換,保證了圖像質量穩(wěn)定性;該分配模型不完全依賴于復雜度預估的精確度,不同復雜度對最終結果的影響很小;另外,本發(fā)明方法的算法復雜度很低并且具有很好的魯棒性。
附圖說明
圖1是本發(fā)明提供的基于視頻復雜度的統(tǒng)計復用方法的流程框圖。
圖2是本發(fā)明實施例中碼率-編碼后的失真(R-D)關系擬合效果圖;
其中,橫軸為碼率R,縱軸為1/MSE(1/D);(a)-(d)分別對應不同序列BasketballPass、BlowingBubbles、FourPeople和ParkScene的R-D關系擬合結果。
具體實施方式
下面結合附圖,通過實施例進一步描述本發(fā)明,但不以任何方式限制本發(fā)明的范圍。
本發(fā)明提供的基于視頻復雜度的統(tǒng)計復用方法的方法流程見圖1,如圖1中所示,多路視頻序列輸入之后,通過碼流復雜度分析器求的碼流的復雜度并傳送給統(tǒng)計復用分配器,同時,之前已經編碼后的失真與碼率信息也反饋給統(tǒng)計復用分配器,根據(jù)這些信息進行分配碼率給不同的編碼器,由編碼器進行編碼后輸出。具體地,該方法的實施過程如下:
視頻序列1~N經過碼流復雜度分析器進行復雜度分析,得到視頻序列的碼流復雜度,第k個SGOP中的第i個序列的碼流復雜度記為傳送給統(tǒng)計復用分配器;SGOP表示所有序列在一次統(tǒng)計復用中,需要同時進行碼率分配的若干相鄰幀;C和R分別表示第i個序列在第k個SGOP中的復雜度和碼率;假設目前已經編碼了k個SGOP,則通過如下步驟對第k+1個SGOP進行編碼:
1)由編碼器輸出得到第k個SGOP中的每個序列的失真與碼率信息;對于第k個SGOP中的第i個序列,其失真與碼率分別記為和輸出的第k個SGOP中的每個序列的失真與碼率信息傳給統(tǒng)計復用分配器;2)碼流復雜度分析器計算得到第k個和第k+1個SGOP中每個序列的碼流復雜度信息(對于第k個和第k+1個SGOP中的第i個序列的碼流復雜度,分別記為和將其傳給統(tǒng)計復用分配器;
3)統(tǒng)計復用分配器利用第k個和第k+1個SGOP中每個序列的碼流復雜度信息(對于第k個和第k+1個SGOP中的第i個序列的碼流復雜度,分別記為和和第k個SGOP中的每個序列的失真與碼率信息(第k個SGOP中的第i個序列的失真與碼率分別記為和傳給編碼器;;
本實施例采用如下碼率分配模型分配碼率,該模型的輸入不僅利用了當前待分配SGOP的復雜度估算值(根據(jù)式1計算得到)作為輸入,還使用了上一個SGOP編碼后得到的失真參數(shù)、量化步長、碼率以及復雜度預估值作為輸入:
其中, (式21)
4)根據(jù)得到的進行碼率控制,并且對第k+1個SGOP進行編碼。
當編碼完第k+1個SGOP之后,繼續(xù)重復上述步驟1)~4),直到編碼結束。
針對上述基于視頻復雜度的統(tǒng)計復用方法,本發(fā)明的核心是建立新的碼率分配模型并使用與現(xiàn)有方法不同的輸入進行碼率分配,使得分配得到的碼率精度更高且更穩(wěn)定。建立碼率分配模型具體過程如下:
21)上述基于視頻復雜度的統(tǒng)計復用方法,考慮統(tǒng)計復用的目標函數(shù)式4:
(式4)
式4中,參數(shù)Rc表示多路序列的總帶寬;參數(shù)表示第k個SGOP中第i個序列編碼后的碼率;參數(shù)表示第k個SGOP中第i個序列編碼后的失真,這里的失真我們使用重構后圖像與原始圖像像素之間的均方誤差(MSE)計算得到;參數(shù)表示第k個SGOP中所有序列編碼后的失真平均值;參數(shù)N表示統(tǒng)計復用中同時需要進行分配的序列個數(shù)。
22)通過拉格朗日系數(shù)定義和R-Q關系模型,得到碼率R與量化步長Q和視頻復雜度C的關系,得到R-D的一個線性關系式;
視頻編碼標準中,率失真優(yōu)化中所用到的拉格朗日系數(shù)定義如下:
(式5)
式5中,參數(shù)λ表示拉格朗日系數(shù);參數(shù)D表示編碼后的失真;參數(shù)R表示編碼后所用碼率。在編碼器中,拉格朗日系數(shù)的具體計算方法如下:
λ=cQ2 (式6)
式6中,參數(shù)Q表示量化步長(QPstep);參數(shù)c為常數(shù)定值。
一個經典的二次R-Q模型定義如下:
(式7)
式7中,參數(shù)R表示編碼后所用碼率,參數(shù)Q表示量化步長(QPstep),參數(shù)C表示視頻復雜度,參數(shù)a和b均為常數(shù)定值,其值根據(jù)序列不同而改變。由于式7是根據(jù)泰勒級數(shù)展開得到的,因此我們也可以用一次式代替式7,得到式8:
(式8)
結合式6和式8,我們得到:
(式9)
式9中,參數(shù)k是一個常數(shù)定值,其值根據(jù)序列不同而改變。將拉格朗日系數(shù)定義式(式5)代入式9,得到式10:
(式10)
通過式10,我們求得R-D的關系式為式11:
(式11)
式11中,參數(shù)σ是一個常數(shù)定值,其值根據(jù)序列不同而改變。為了驗證式11,我們在HEVC的參考軟件HM16.0中,對4個視頻編碼聯(lián)合組(Joint Collaborative Team on Video Coding(JCT-VC))建議序列進行測試,量化系數(shù)QP設置為17,22,27,32,37,42和47,統(tǒng)計其D與R,其中D用MSE計算,R用比特率計算,結果如圖2所示。圖中,橫軸為R,縱軸為1/D,可以看到其擬合情況很好。
23)假設已經編碼了k個SGOP,正在對第k+1個SGOP進行碼率分配,根據(jù)統(tǒng)計復用的目標函數(shù),設定最優(yōu)分配為:分配使得第k+1的SGOP中每個序列的失真相等,且碼率之和等于總帶寬;
接下來,假設我們已經編碼了k個SGOP,正在對第k+1個SGOP進行碼率分配,我們根據(jù)統(tǒng)計復用的目標函數(shù)式4,可以得到最優(yōu)分配如式12所示:
(式12)
式12表明,最優(yōu)分配即分配使得第k+1的SGOP中每個序列的失真相等,且碼率之和等于總帶寬。
24)根據(jù)R-D關系,將關系式中根據(jù)序列不同而改變的常數(shù)定值參數(shù)σ設定為:相同序列的兩個相鄰的SGOP的值相近,估算得到相同序列的所有SGOP的值相等;
根據(jù)之前推得的表示R-D關系的式11,得到第k個SGOP中R-D關系如下,
(式13)
考慮到根據(jù)序列特點變化,因此我們假定相同序列的兩個相鄰的SGOP的值相近,可以估算第k+1個SGOP的為:
(式14)
式14中,參數(shù)表示的估算值。
25)估算得到第k+1個SGOP的碼率
將式14和式13結合,可以估算第k+1個SGOP的為式15:
(式15)
式15中,參數(shù)和分別表示和的估算值。
考慮到我們希望第k+1的SGOP中每個序列的失真相等,我們將式15中所有序列的求和,得到式16:
(式16)
式16中,Rc是表1中的總帶寬,總帶寬等于每個序列分配的帶寬之和i代表不列編號;k為SGOP編號;由于每個序列的失真相同,用表示;
把式15除以式16,得到式17:
(式17)
最后,將式14代入式17,最終得到碼率分配為式18:
(式18)
其中,
(式181)
這里的計算可以通過式2進行計算得到:
(式2)
本實施例中,通過測試實例中采用的視頻編碼聯(lián)合組JCT-VC測試序列的分類和相關參數(shù)設置(表2)進行計算得到。
在實際應用過程中,公式18中的失真參數(shù)D可以使用不同的計算方式,如絕對誤差和(SAD)計算方式、平均絕對差值(MAD)計算方式、Hadamard變換后再絕對值求和(SATD)計算方式、差值的平方和(SSE)計算方式、平均平方誤差(MSE)計算方式等,表4列出采用上述不同失真參數(shù)計算方式計算相鄰兩幀的失真參數(shù)D的具體方法:
表4 采用上述不同失真參數(shù)計算方式計算相鄰兩幀的失真參數(shù)D的具體方法
表4中,參數(shù)NP表示一幀中像素的個數(shù),參數(shù)表示第k幀的第i個像素的亮度值,參數(shù)表示第k幀的第i個像素經過哈達瑪變換后的值。
如果失真參數(shù)D難以計算,也可以使用量化步長QPstep代替D,即:
(式18)
其中,
(式182)
式182中,參數(shù)表示量化步長QPstep。這里使用量化步長QPstep代替失真參數(shù)D,即式182可以用來代替式181,計算得到碼率。
本實施例在具體實施中,將本發(fā)明提出的統(tǒng)計復用方法與現(xiàn)有的統(tǒng)計復用方法的測試效果進行比較,以驗證方法的效果。將本發(fā)明提出的分配模型(式18)與現(xiàn)有分配模型(式1)同時集成在HEVC參考軟件HM16.0中,使用Low Delay設置,同時打開幀級碼控與宏塊級碼控開關,SGOP長度設置為10幀,幀率為25幀/秒。測試序列為視頻編碼聯(lián)合組(Joint Collaborative Team on Video Coding(JCT-VC))推薦的6類(Class A-Class F)序列,按這6類序列分別進行測試,具體分類及一些設置見表2。
表2 測試實例中采用的JCT-VC測試序列的分類和相關參數(shù)設置
其中,式18中,D使用MSE,R使用比特率計算。式18中的由式2得到,評價指標設為失真的方差,失真的方差通過式19計算得到:
(式19)
式19中,參數(shù)Variancek表示第k個SGOP的評價指標(即方差),參數(shù)表示第k個SGOP中第i個序列編碼后得到的MSE值,參數(shù)表示第k個SGOP中所有序列編碼后得到的MSE平均值,N表示序列總數(shù)。
測試結果統(tǒng)計失真方差如表3:
表3 通過不同方法的測試結果統(tǒng)計得到的失真方差及平均值
其中,節(jié)省方差通過式20計算得到:
(式20)
從表3可以看出,本發(fā)明提供方法采用的碼率分配模型節(jié)省了71.88%的方差,并且該分配模型不完全依賴于復雜度預估的精確度,不同復雜度對最終結果的影響很小。
需要注意的是,公布實施例的目的在于幫助進一步理解本發(fā)明,但是本領域的技術人員可以理解:在不脫離本發(fā)明及所附權利要求的精神和范圍內,各種替換和修改都是可能的。因此,本發(fā)明不應局限于實施例所公開的內容,本發(fā)明要求保護的范圍以權利要求書界定的范圍為準。