h.264中的jvt.g012演算法採用的二次r—q模型如下:
這一模型用於基本單元的量化引數計算,其中r代表編碼量化係數所需的碼字位數,q指基本單元的量化步長,mad通過以下線性**模型進行**:
其中madcb和madpb代表當前基本單元和前一幀相應位置處的mad,a1,a2是模型係數,在每乙個基本單元的最後乙個巨集塊處理中通過線性回歸的方法進行更新。
jvt的位元速率控制比以往的標準更加困難。因為量化引數不僅在位元速率控制演算法中使用而且在率失真優化中應用,從而導致一種稱為「雞與蛋"的悖論(chicken and egg dilemma):為了在當前幀的巨集塊中應用率失真優化,首先要有乙個量化引數,這個量化引數通過計算當前幀的mad(mean absolute difference)得到。然而,只有在率失真優化以後才能得到當前幀的mad。並且編碼處理所使用的通道頻寬可能是恆定的,也可能是可變的。必須同時考慮恆定位元率(constant bit rate,cbr)和可變位元率(variable bit rate,vbr)兩種情況。目前的位元速率控制機制大多針對恆定位元速率的情況.
如上所述,在h.264標準的位元速率控制中存在兩個問題:
1.在執行rdo之前,mad是未知的。
2.雖然在運動補償後可以獲得每個編碼模式的mad,但最佳編碼模式仍然未知,所以不能決定哪個mad可以用於估計qp。
ma等人提出了乙個新的h.264位元速率控制方案,該方案沒有考慮qp與mad之間的相關性,但它不是single—pass位元速率控制演算法。雖然該演算法可以實現目標位元數且沒有明顯的位元變動,但執行rdo要花費2倍的時間,對巨集塊而言這樣的時i司複雜度是不可接受的。
h.264中的位元速率控制方法是以提案jvt—g012為藍本的。jvt.g012提案通過引入基本單元和線形模型的概念,提出一種自適應基本單元層位元速率控制方案。基本單元可能是一幀、片或巨集塊。並提出了一種線性模型,通過前一幀相應位置的基本單元**當前基本單元mad。為闡述g012提案,本文首先對其中的關鍵技術進行分析。
1。基本單元的定義
假設某一幀由nmbpic個巨集塊組成,那麼定義基本單元為乙個由nmbpic個巨集塊中連續的nmbunit個巨集塊所組成的組。那麼在該幀中的總的基本單元的個數為:
nunit=nmbpic/nmbunit
需要注意的是,如果採用了比較大的基本單元,那麼psnr可以達到乙個較高的值,同時位元的波動也會增大。另一方面,如果採用了比較小的基本單元,位元的波動會比較的小,但是相應的會帶來psnr的損失。
2.流量往返模型(fluid tramc model)
3.mad的線性**模型
這裡,該演算法乙個線性模型來**當前幀中的基本單元的mad值,它的參
**模型引數a1和a2更新方法分為三步,如下所述:
第一步一資料點選擇:資料點是用於更新模型引數,資料點的數量以及質量對於模型的準確性有著重要的影響。通常而言,資料點越多,模型越準確。在jm86模型中,採用滑動視窗機制進行資料點的選擇,視窗大小通常為20。
第二步一計算模型引數:根據選中的資料點,演算法收集**的mad和實際mad的值,採用線性回歸的方法,計算得到a1和a2。
第三步一去除壞的資料點:在得到al和a2之後,根據滑動視窗中資料點的參考值,用a1和a2形成的**模型計算資料點的**值,然後將得到的值與資料點的原始**值比較,計算誤差,如果誤差大於一定的值(jm中取誤差的均值),則將該資料點去除,用更新後的資料點重新計算模型引數al和a2。
h 264位元速率控制
h.264的碼流傳輸是基於目前有限的網路頻寬來進行的,以目前的壓縮效率來說,運動不算劇烈 細節不多的影像,在720p的情況下,1000kbps壓縮損耗較少 psnr較大 能達到比較好的觀賞效果,1080p則需要2000kbps。當然,隨著影象運動劇烈程度加大,細節增多的情況,則需要更大的bps來保證...
h 264位元速率控制
h.264的碼流傳輸是基於目前有限的網路頻寬來進行的,以目前的壓縮效率來說,運動不算劇烈 細節不多的影像,在720p的情況下,1000kbps壓縮損耗較少 psnr較大 能達到比較好的觀賞效果,1080p則需要2000kbps。當然,隨著影象運動劇烈程度加大,細節增多的情況,則需要更大的bps來保證...
h 264位元速率控制
h.264的碼流傳輸是基於目前有限的網路頻寬來進行的,以目前的壓縮效率來說,運動不算劇烈 細節不多的影像,在720p的情況下,1000kbps壓縮損耗較少 psnr較大 能達到比較好的觀賞效果,1080p則需要2000kbps。當然,隨著影象運動劇烈程度加大,細節增多的情況,則需要更大的bps來保證...