亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種HEVC低延時編碼碼率控制算法

        2019-04-01 09:10:06郭紅偉
        計算機應用與軟件 2019年3期
        關(guān)鍵詞:碼率控制算法編碼器

        郭紅偉 劉 帥

        1(紅河學院工學院 云南 蒙自 661100)2(電子科技大學信息與通信工程學院 四川 成都 611731)

        0 引 言

        高效視頻編碼HEVC(High Efficiency Video Coding)是ISO-IEC/MPEG和ITU-T/VCEG兩大國際標準化組織聯(lián)合制定的新一代視頻編碼標準[1],其基準檔次已于2013年1月正式發(fā)布。盡管其沿用了傳統(tǒng)視頻編碼標準的混合視頻編碼基本框架,但在各個編碼模塊上都進行了改進和革新。編碼的視頻在同等主觀質(zhì)量情況下,HEVC相比于上一代編碼標準H.264/AVC節(jié)省約一半的碼率。在視頻編碼的研究過程中,通常是事先設定量化參數(shù)QP進行編碼,根據(jù)編碼器輸出對各種編碼工具和編碼優(yōu)化技術(shù)進行定量分析比較。而在實際應用中,要根據(jù)存儲設備可提供的存儲空間、傳輸信道可提供的傳輸帶寬及傳輸延遲的限制等設定編碼器的輸出碼率。所以實際應用中的編碼器必須包含碼率控制模塊,每一代視頻編碼標準的制定過程中都推薦了相應的碼率控制算法[2]。

        HEVC標準制定過程中主要推薦了兩種碼率控制算法,即URQ(Unified Rate-Quantization)模型碼率控制算法[3]和R-λ模型碼率控制算法[4]。URQ模型是最早被采納進HEVC通用測試軟件HM的碼率控制算法,其利用已有帶寬、幀率、編碼結(jié)構(gòu)、圖像組GOP大小等相關(guān)參數(shù)確定各個GOP、編碼幀、最大編碼單元LCU的目標比特數(shù)。然后通過URQ模型計算編碼幀或LCU級的量化參數(shù)QP進行編碼。該算法的最終效果不太理想,通常編碼后生成的碼率與給定的目標碼率之間誤差較大,且編碼視頻的質(zhì)量明顯下降。文獻[4]提出雙曲模型能最好地描述HEVC編碼器的率失真關(guān)系。并基于雙曲模型設計了全新的Lambda域碼率控制算法,在碼率控制精度和率失真性能上都較URQ模型碼率控制有較大提高。HEVC標準發(fā)布后,針對HEVC標準實際應用的優(yōu)化和碼率控制持續(xù)成為研究關(guān)注的重點,已有許多改進的碼率控制算法被提出[5-10]。文獻[5]利用梯度來表征待編碼幀的復雜度,在R-λ模型框架下提出基于復雜度分析的Intra幀碼率控制算法。針對會話通信視頻編碼,文獻[6]根據(jù)視覺感興趣區(qū)域提出改善主觀編碼質(zhì)量的碼率控制算法。由于視頻場景切換時常引起碼率和編碼質(zhì)量的激烈波動,文獻[7]提出在場景切換發(fā)生時對碼率控制的參數(shù)以及編碼結(jié)構(gòu)做出相應調(diào)整,以改善R-λ模型碼率控制算法的性能。為了減小因碼率控制引起的輸出視頻質(zhì)量波動,文獻[8]提出恒定視頻質(zhì)量的碼率控制。然而,以上改進方法在率失真性能方面的提升都比較有限。為了在實施碼率控制的同時獲得更好的編碼器率失真性能,文獻[9-11]從全局率失真最優(yōu)化視角,提出R-λ模型下的最優(yōu)比特分配方法。目前,測試軟件HM中集成的碼率控制算法是文獻[4]與文獻[9]相結(jié)合的方法。

        針對HEVC的低延時編碼結(jié)構(gòu),本文提出一種Lambda域的三層(控制單元層、GOP層、幀層)碼率控制算法。相比較測試軟件HM中兩層(GOP層、幀層)的碼率控制,本文算法在碼率控制精度和率失真性能兩個方面都有顯著提高;相比較測試軟件HM中三層(GOP層、幀層、LCU層)的碼率控制,本文算法在碼率控制精度上略有降低,但極大地改善了編碼器的率失真性能。

        1 R-λ模型碼率控制算法

        碼率控制通常包括兩個步驟:比特分配和比特率控制。比特分配過程是根據(jù)緩存器充盈度和視頻序列特性為每一個GOP、待編碼幀或待編碼基本單元分配適當?shù)哪繕吮忍兀槐忍芈士刂七^程是利用碼率模型根據(jù)目標比特計算量化參數(shù)進行編碼,使編碼器輸出比特數(shù)盡可能等于預先分配的目標比特。

        1.1 R-λ模型

        視頻編碼中,量化參數(shù)QP直接決定預測殘差的編碼比特數(shù),是影響編碼器輸出碼率的主要參數(shù)。編碼同一視頻序列時,QP設置越大,則輸出碼率越??;反之,QP設置越小,則輸出碼率越大。然而,由于HEVC采用靈活的四叉樹CU和TU劃分結(jié)構(gòu)及其他越來越復雜的編碼工具,碼流中模式和運動等非殘差信息所占比特開銷越來越大,而量化僅對殘差信息有效。因此在HEVC中建立QP與碼率R的模型進行比特控制不夠精確。根據(jù)視頻編碼的率失真理論,拉格朗日乘子λ是編碼視頻率失真曲線上某一點的切線的斜率的絕對值。理論上每一個拉格朗日乘子唯一的對應一組碼率和失真,能極好地用于控制編碼比特數(shù)。

        文獻[4]提出,在HEVC編碼標準中雙曲函數(shù)形式的率失真函數(shù)能較好地描述編碼器率失真特性,即:

        D(R)=CR-K

        (1)

        式中:D是編碼失真,用均方誤差MSE(Mean Square Error)表示;R是編碼比特數(shù),用每像素消耗比特bpp(bits per pixel)表示;C和K是與序列特性相關(guān)的模型參數(shù)。如前文所述,拉格朗日乘子λ是R-D曲線的斜率的絕對值,由式(1)得:

        (2)

        式中:α和β是與序列內(nèi)容和編碼結(jié)構(gòu)相關(guān)的參數(shù),初始值設為3.200 3和-1.367,編碼過程中,根據(jù)已編碼幀的信息進行更新。

        獲得拉格朗日乘子λ后,計算量化參數(shù)QP進行編碼:

        QP=4.200 5×ln(λ)+13.712 2

        (3)

        1.2 比特分配

        HEVC推薦的R-λ模型碼率控制方法可執(zhí)行在幀級或LCU級,設目標碼率為、幀率為,則平均每幀可用的比特數(shù)表示為:

        (4)

        分配給待編碼GOP的目標比特數(shù)如下:

        (5)

        式中:SW是用于平滑比特分配的滑動窗。

        當前GOP中分配給待編碼幀的目標比特數(shù)如下:

        (6)

        式中:ωPic表示編碼幀比特分配權(quán)重;CodedGOP表示編碼當前GOP已消耗的比特數(shù)。

        測試軟件HM中幀層的比特分配有三種可選方式,即等比特分配、固定比率的比特分配和自適應比特分配。其中:等比特分配時,GOP中每一幀的比特分配權(quán)重相等;固定比率比特分配時,根據(jù)幀級的目標bpp和編碼結(jié)構(gòu),GOP中每一幀的比特分配權(quán)重為某一固定比例值。由文獻[9]提出的自適應比特分配方式則根據(jù)幀級的目標bpp、編碼結(jié)構(gòu)和待編碼幀的特性自適應調(diào)整每一個GOP中幀級的比特分配權(quán)重,其碼率控制精度和編碼性能是三種比特分配中最好的。

        2 碼率控制算法設計

        針對不同視頻業(yè)務的應用,HEVC編碼器的編碼配置可選擇全I幀AI(All-intra)結(jié)構(gòu)、低延時LD(Low-delay)結(jié)構(gòu)、隨機介入RA(Random-access)結(jié)構(gòu)。由于不同編碼配置具有不同的編碼參考結(jié)構(gòu),相應的碼率控制應充分考慮其率失真依賴性,使碼率控制下的編碼視頻失真最小。本文討論低延時編碼配置下的碼率控制。

        2.1 HEVC的低延時編碼結(jié)構(gòu)分析

        如圖1所示,HEVC的低延時編碼結(jié)構(gòu)中,GOP的大小默認設置為4,序列起始幀編碼為I幀,并被作為一個單獨的GOP處理,其余GOP中為B/P幀,幀的層級為3、2、3、1,其中層級為1的幀稱為關(guān)鍵幀。圖1中的箭頭表示參考關(guān)系,在分級編碼結(jié)構(gòu)中,當前編碼幀會選擇其前一已編碼幀和其他最鄰近的3個已編碼關(guān)鍵幀作為參考幀。然而,編碼剛開始時由于可參考的已編碼幀數(shù)不足4幀,起始幀后的第一個GOP中非關(guān)鍵幀(層級為2和3的幀)將被3次作為參考幀,第二個GOP中的非關(guān)鍵幀會被2次作為參考幀,之后的GOP中的非關(guān)鍵幀則只會被其后一幀參考1次。因此,從編碼中時域失真?zhèn)鞑サ囊暯强紤],改善視頻起始幀和前兩個GOP中編碼幀的編碼質(zhì)量,將有利于提高編碼視頻的整體率失真性能。

        圖1 低延時編碼結(jié)構(gòu)

        2.2 R-λ模型參數(shù)更新的改進

        編碼過程中,由于編碼幀復雜度及參考結(jié)構(gòu)的變化,每一編碼幀的R-λ模型參數(shù)(α和β)并不相同。在編碼下一幀前還不能得到它的率失真關(guān)系,R-λ碼率控制算法中[4,9],待編碼幀的R-λ模型參數(shù)采用與其屬于同一層級且最鄰近的已編碼幀信息進行估算。由于傳統(tǒng)方法的模型參數(shù)更新只利用了已編碼幀的實際編碼比特Rreal和拉格朗日乘子λreal,其參數(shù)更新的收斂速度和準確度都不夠理想,從而影響了碼率控制的性能。實際上,編碼完一幀后,可以獲得已編碼幀的信息包括實際編碼比特Rreal、拉格朗日乘子λreal還有編碼失真Dreal。鑒于此,由式(1)、式(2)的R-D函數(shù)和R-λ函數(shù)可直接推導得更新后的R-D模型參數(shù)為:

        (7)

        (8)

        然后,R-λ模型參數(shù)αnew=Cnew·Knew、βnew=-Knew-1。

        2.3 低延時編碼碼率控制算法

        通常碼率控制由GOP層、幀層和基本單元層的比特控制組成,基本單元層的比特控制是為了達到更高的比特控制精度。然而由于基本單元層的碼率模型參數(shù)的估計誤差較大,編碼過程中經(jīng)常由于圖像中前面編碼的基本單元消耗太多比特使后面編碼的基本單元預算不足,導致編碼幀質(zhì)量下降,影響了整個視頻序列的編碼質(zhì)量。因此,本文的碼率控制算法不使用基本單元層的比特控制。本文碼率控制算法采用控制單元層、GOP層和幀層的比特率控制。為了便于描述,表1列出本節(jié)中所使用的符號及其含義。

        表1 算法描述采用的符號及其含義

        續(xù)表1

        編碼起始幀后,視頻剩余序列被劃分為多個連續(xù)的控制單元,一個控制單元大小約為視頻一秒鐘的幀數(shù)。用CW表示控制單元大小,則:

        CW=FR%NGOP==0?FR:(FR/NGOP)×NGOP

        (9)

        式(9)使控制單元大小等于GOP大小的整數(shù)倍,用了程序語言表述??刂茊卧獙雍虶OP層的比特分配如下:

        (10)

        (11)

        編碼完一個控制單元后,其比特消耗誤差會加到下一個控制單元,從而使編碼整個序列的比特等于預算的總比特。若為第一個控制單元,則RLeftPreCW等于0;若為最后一個控制單元,則CW=min{CW,NLeft}。由于編碼一個GOP消耗的實際比特不可能恰好等于預算值,若采用和控制單元層一樣的方式直接把已編碼GOP的比特消耗誤差加到下一個GOP的比特預算,會使GOP級比特出現(xiàn)較大波動。因此,式(11)中的滑動窗SW用于平滑GOP層比特分配,使得編碼比特消耗變化和編碼圖片的質(zhì)量更加平滑。本文算法中,SW設置為16,且SW=min{SW,NCWLeft}。幀層的比特分配方式采用文獻[9]的自適應比特分配方法,當前GOP中各幀的比特分配權(quán)重ωPic由上一已編碼GOP的編碼信息計算得到,但本文算法中使用了2.2節(jié)描述的改進R-λ模型。待編碼幀的目標比特由編碼當前GOP前預分配的目標比特和編碼前一幀后預分配的目標比特加權(quán)確定:

        TPic=θ×TAPic+(1-θ)×TBPicθ∈[0,1]

        (12)

        式中:

        (13)

        (14)

        控制單元內(nèi)剩余未編碼幀NCWLeft多于8幀時,式(12)中常數(shù)θ取值為0.5;當NCWLeft小于或等于8幀時,取值為1。

        算法流程如圖2所示。

        圖2 算法流程圖

        具體的步驟描述為:

        (1) 讀取編碼器配置文件及輸入視頻序列,并對碼率控制參數(shù)初始化。

        (2) 編碼視頻序列起始幀。

        (3) 由式(10)進行控制單元層比特分配,并初始化控制單元層參數(shù)NCWcoded=0,CodedCW=0。

        (4) 由式(11)進行GOP層比特分配,采用改進的R-λ模型和文獻[9]的方法確定GOP中各幀的比特分配權(quán)重ωPic,根據(jù)式(14)預分配編碼前GOP中各幀目標比特,初始化GOP層參數(shù)使CodedGOP=0。

        (5) 由式(12)、式(13) 進行幀層比特分配。

        (6) 由式(2)計算待編碼幀的拉格朗日乘子λ,由式(3) 計算待編碼幀的量化參數(shù)QP。

        (7) 編碼一幀,并根據(jù)式(7)、式(8)更新R-λ模型參數(shù),更新GOP層參數(shù)CodedGOP=CodedGOP+RActPic。

        (8) 判斷已編碼幀是否是GOP中最后一幀,若不是則跳轉(zhuǎn)至步驟(5);若是則跳轉(zhuǎn)至步驟(9)。

        (9) 更新控制單元層參數(shù)NCWcoded=NCWcoded+NGOP,CodedCW=CodedCW+RActGOP。

        (10) 判斷已編碼GOP是否是控制單元中最后一個GOP,若不是則跳轉(zhuǎn)至步驟(4);若是則跳轉(zhuǎn)至步驟(11)。

        (11) 判斷已編碼控制單元是否是序列中最后一個控制單元,若不是則計算控制單元比特誤差RLeftPreCW=TCW-RActCW,并跳轉(zhuǎn)至步驟(3);若是則跳轉(zhuǎn)至步驟(12)。

        (12) 編碼結(jié)束。

        3 實驗及結(jié)果分析

        將本文碼率控制算法集成到HEVC編碼器的參考軟件HM16.7 中,以驗證算法的性能。測試選用提案JCTVC-L1100[12]建議的ClassB、ClassC、ClassD、ClassE中全部16個視頻序列,編碼器配置文件采用encoder_lowdelay_main.cfg。參考軟件HM16.7在不開啟碼率控制情況下,以固定量化參數(shù)QP等于37、32、27、22編碼各測試序列,每個被編碼測試序列輸出從低到高的4個碼率作為碼率控制實驗的目標碼率。

        碼率控制的目標是要使編碼器輸出碼率近似等于目標碼率情況下,編碼視頻失真最小。所以碼率精確性和率失真性能是評價碼率控制的兩個主要性能指標。碼率精確性用碼率相對誤差描述,定義為:

        (15)

        式中:Rtar是目標碼率;Ract是實際編碼碼率;RErr越小,表示碼率控制精確性越好。本實驗比較的算法是HM16.7中采用自適應比特分配的R-λ碼率控制算法[9]。其中:不開啟LCU層比特控制記作HEVC幀層率控;開啟LCU層比特控制時記作HEVC LCU層率控。

        表2給出了從4種不同的分辨率中選取的4個測試視頻序列在3種碼率控制方法下的實驗數(shù)據(jù),表中第4列、第7列和第10列分別是3種算法編碼視頻Y分量的PSNR值。在相同目標碼率下,本文算法編碼視頻的PSNR最大。另外,本文算法的平均碼率誤差是0.054%,低于HEVC LCU層率控的平均碼率誤差0.075%和HEVC幀層率控的平均碼率誤差0.127%。

        表2 3種碼率控制算法的實驗結(jié)果

        為了公平地比較算法的率失真性能,以不開啟碼率控制的HM16.7為基準,計算三種碼率控制算法的BD-Rate。BD-Rate表示在同樣的客觀質(zhì)量下,測試算法相對于基準的碼率節(jié)省,BD-Rate值為負,則說明碼率節(jié)省;BD-Rate值為正,則說明碼率增加。由于篇幅所限,這里不單獨列出16個序列的測試結(jié)果,表3給出了ClassB、ClassC、ClassD、ClassE數(shù)據(jù)平均值。HEVC 幀層率控的平均BD-Rate為0.3%,小于HEVC LCU層率控的0.6%,這與前文所述一致。LCU層比特控制能達到更高的碼率控制精度,但降低了編碼器率失真性能。本文算法對ClassB、ClassC、ClassD、ClassE的BD-Rate均是負值,平均為-2.6%,說明本文算法的率失真性能不僅優(yōu)于HEVC幀層率控和HEVC LCU層率控,而且還優(yōu)于不開啟碼率控制時的HM16.7。碼率控制精確性方面,本文算法和HEVC LCU層率控的平均碼率相對誤差均小于0.1%,而HEVC幀層率控的平均碼率相對誤差是0.185%。

        表3 碼率控制算法的性能比較 %

        另外,圖3中是測試序列Kimono和 Johnny的R-D曲線??梢钥吹剑疚乃惴◤牡痛a率到高碼率均具有最好的率失真性能。

        (a) Kimono(1080p)

        (b) Johnny(720p)圖3 率失真曲線對比

        圖4給出了測試序列Cactus前100幀GOP編碼比特和編碼幀PSNR的比較。本文算法和HEVC幀層率控對序列起始幀的編碼策略一致,故兩種方法編碼的第0 GOP或第0幀消耗比特數(shù)和PSNR相同。然而,HEVC幀層率控對前幾個GOP分配較少的比特,致使其編碼幀PSNR急劇下降,造成較大的時域質(zhì)量波動。本文算法考慮了低延時編碼結(jié)構(gòu)中前兩個GOP編碼質(zhì)量對后續(xù)編碼幀具有更重要的率失真依賴性,從而為其分配了相對較多的比特,不僅提高了編碼視頻的率失真性能,同時減小了編碼視頻的時域質(zhì)量波動。

        圖4 序列Cactus前100幀GOP的編碼比特和編碼幀的PSNR

        4 結(jié) 語

        碼率控制作為視頻編碼控制中的重要環(huán)節(jié),是編碼器不可缺少的組成部分,合理有效的碼率控制方法能夠在保證視頻質(zhì)量的同時提高信道的利用率或滿足存儲需求。本文首先回顧了HEVC推薦的基于R-λ模型碼率控制算法,然后提出一種HEVC低延時編碼碼率控制算法。本文算法在比特分配過程中充分考慮了低延時編碼結(jié)構(gòu)的時域率失真依賴關(guān)系,并采用控制單元層、GOP層和幀層的比特控制策略,R-λ模型的參數(shù)更新利用了已編碼幀的實際比特、拉格朗日乘子和編碼失真等信息??刂茊卧獙拥谋忍乜刂仆ㄟ^調(diào)整下一個控制單元的目標比特數(shù)來填補已編碼控制單元的比特誤差,從而使視頻的實際編碼碼率近似等于目標碼率。實驗結(jié)果證明,本文算法在碼率精度和R-D性能方面都取得了較好的效果。

        猜你喜歡
        碼率控制算法編碼器
        基于FPGA的同步機軸角編碼器
        基于狀態(tài)機的視頻碼率自適應算法
        計算機應用(2018年7期)2018-08-27 10:42:40
        基于ARM+FPGA的模塊化同步控制算法研究
        基于PRBS檢測的8B/IOB編碼器設計
        JESD204B接口協(xié)議中的8B10B編碼器設計
        電子器件(2015年5期)2015-12-29 08:42:24
        基于場景突變的碼率控制算法
        X264多線程下碼率控制算法的優(yōu)化
        計算機工程(2015年8期)2015-07-03 12:19:56
        一種優(yōu)化的基于ARM Cortex-M3電池組均衡控制算法應用
        多光譜圖像壓縮的聯(lián)合碼率分配—碼率控制方法
        宇航學報(2014年2期)2014-12-15 02:49:06
        多總線式光電編碼器的設計與應用
        欧美怡红院免费全部视频| 国产大片在线观看91| 中文字幕一区乱码在线观看| 日本道免费一区二区三区日韩精品| 日韩av激情在线观看| 99久久人人爽亚洲精品美女| 中文字幕乱偷乱码亚洲| 黑人一区二区三区高清视频| 野花视频在线观看免费| 草色噜噜噜av在线观看香蕉| 中文字幕一区二区三区乱码| 连续高潮喷水无码| 女优视频一区二区三区在线观看| 亚洲国产精品悠悠久久琪琪| 又粗又黑又大的吊av| 午夜成人无码福利免费视频| 亚洲成a人片在线观看导航| 成人免费播放片高清在线观看| 户外精品一区二区三区| 久久不见久久见免费影院| 看国产黄大片在线观看| 激情 一区二区| 免费看黄片视频在线观看| 色哟哟亚洲色精一区二区| 黑色丝袜秘书夹住巨龙摩擦| 无码日韩AⅤ一区二区三区| 精品久久日产国产一区| 日本第一影院一区二区| 黑人巨茎大战俄罗斯美女| 男人边吻奶边挵进去视频| 亚洲综合国产成人丁香五月小说| 一区二区三区中文字幕在线观看| 精品香蕉99久久久久网站| 无套内射无矿码免费看黄| 亚洲一区二区三区久久不卡| 国产视频免费一区二区| 免费观看国产短视频的方法| 老师粉嫩小泬喷水视频90| 国产高清国内精品福利99久久| 日韩亚洲在线一区二区| 国产在线无码一区二区三区视频|