浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 其它綜合

H.263視頻編碼的碼率控制算法及硬件實現(xiàn)

發(fā)布時間:2008/6/5 0:00:00 訪問次數(shù):865

  摘 要:提出了一種h.263低碼率視頻壓縮編碼的自適應(yīng)碼率控制方法,這種方法可以用fpga來實現(xiàn),為了達到實時性的要求,對硬件實現(xiàn)的具體方法進行了優(yōu)化。所提出的碼率控制優(yōu)化方法已在h.263標準的硬件系統(tǒng)中實現(xiàn)。

  關(guān)鍵詞:fpga;h.263標準;碼率控制;視頻壓縮;幀層

1 引言

  輸出比特速率的控制是影響h.263低速率視頻編碼的一個重要問題,控制的好壞直接關(guān)系到解碼圖像的質(zhì)量與編碼器輸出比特速率的穩(wěn)定性。itu-th.263[1]建議本身對這部分算法是開放的。到目前為止,已提出了若干種比特速率的控制算法[2~4]。這些算法可以分為兩類,一類為前饋比特速率控制,另一類為反饋比特速率控制。前饋控制算法通過對各編碼單位編碼輸出比特數(shù)的預(yù)測,或用試驗迭代的方法,來確定相應(yīng)的量化步長,其主要弱點是常常需要很大的計算量,使得其應(yīng)用受到明顯的限制,因而很少被采用。相對來說,反饋控制算法的計算量是可以接受的,并已被廣泛應(yīng)用。itu-t相繼推出的tmn5模型和tmn8[2]模型就是一種反饋比特速率算法。tmn8是在tmn5的基礎(chǔ)上提出的,具有優(yōu)異的控制效果,很多試驗表明,以tmn8實現(xiàn)的系統(tǒng)可以穩(wěn)定地鎖定在既定碼率上,碼率的上下波動小于10%,并且tmn8模型的算法實現(xiàn)起來也不復(fù)雜。

  本文針對h.263視頻編碼器的結(jié)構(gòu),根據(jù)itu-t視頻編碼模型tmn-8中標準的碼率控制算法,提出了一種采用fpga實現(xiàn)碼率控制的硬件方法,碼率控制分別在宏塊層和圖像層進行。首先闡述了h.263的碼率控制算法,然后介紹了硬件實現(xiàn)及優(yōu)化方法,最后給出了仿真的結(jié)果。

2 碼率控制算法

  h.263系統(tǒng)的碼率控制分2個層次實現(xiàn),一是改變量化步長,二是跳幀。碼率控制的過程可以用圖1來形象地說明。當控制器檢測到發(fā)送緩沖器中存放的碼流高于或者低于一定的門限時,控制器根據(jù)相應(yīng)的算法改變量化步長,使發(fā)送緩沖器中的碼流穩(wěn)定在一定的數(shù)量。當編碼器產(chǎn)生碼流的碼率很大,超出了量化器的控制范圍,將采用跳幀的方法來解決。

  改變量化步長,是微觀的宏塊級控制,控制量是量化步長因子q。h.263標準規(guī)定:q分為32級,其值分別為0~31。q越小,量化越精細,圖像質(zhì)量就越高,而產(chǎn)生的碼流也越長。一個宏塊內(nèi)具有相同的q,所以對于q來說最小的變化單位是宏塊。當一個宏塊編碼結(jié)束時,如果截至到目前編碼器所產(chǎn)生的碼流小于一個門限,那么碼率控制模塊就根據(jù)一定的算法減少q;而對于量化器來說,q變小則量化后的系數(shù)中非零系數(shù)增多,編碼器輸出的碼流就增加。如果截至到目前編碼器所產(chǎn)生的碼流大于一個門限,那么碼率控制模塊就增加q,q變大則量化后的系數(shù)中非零系數(shù)減少,編碼器輸出的碼流就減少。按照這種方法,在一定程度上使發(fā)送給發(fā)送緩沖器的碼流維持恒定,也就達到了控制碼率的目的。改變量化步長實現(xiàn)起來比較復(fù)雜。根據(jù)統(tǒng)計的碼流比特數(shù),通過復(fù)雜的計算,在每個宏塊結(jié)束時,計算下一個宏塊的量化步長因子q(qp)。用ptype表示幀類型,幀類型為幀內(nèi)幀時用i幀表示,否則用p幀表示。

 
  其中,mean_qp為上一幀每個宏塊平均的量化步長;bits_prev_pic為上一幀產(chǎn)生的比特數(shù);target_bpf為上一幀結(jié)束時計算出來的本幀應(yīng)該產(chǎn)生的比特數(shù);target_bpf_prev為上一個target_bpf;bits_prev_macro為本幀截至當前宏塊所產(chǎn)生的比特數(shù);mbnum為已編碼宏塊在本幀所有宏塊中所占的比例,用小數(shù)表示;target_bps是設(shè)定的發(fā)送碼率。

  對于跳幀算法,是實現(xiàn)宏觀的幀級控制,控制量是tr。tr以跳幀或不跳幀來達到減少或增加碼流的目的。一幀編碼結(jié)束時,根據(jù)當前發(fā)送緩沖器內(nèi)的比特數(shù)與跳幀的門限進行比較,判斷是否需要跳幀。如果發(fā)送緩沖器內(nèi)的比特數(shù)大于跳幀的門限時,說明發(fā)送緩沖器已經(jīng)不能接受更多的碼流了,所以接下來的幀不用編碼,發(fā)送緩沖器用空出的時間來發(fā)送碼流,減少庫存,這樣就發(fā)生了跳幀;反之,則不需要跳幀。值得注意的是在整個過程中,從發(fā)送緩沖器發(fā)出的碼流一直是按照一定的速率發(fā)出的,也就是說碼率是恒定的,改變的是發(fā)送緩沖器的庫存。

  跳幀的控制量是h.263標準碼流中幀頭的tr。tr是一個8位的指示位,表明了本幀的序號,范圍是0~255,當超過255時,從0重新開始。在一般沒有跳幀的情況下,tr是連續(xù)地從0~255變化。但當發(fā)生跳幀時,tr將發(fā)生不連續(xù)地跳變。如:當前幀的tr是112,在當前幀結(jié)束時計算得出下一幀要跳幀,那么等待跳幀結(jié)束后的下一幀的tr是115。這樣譯碼器可以知道δtr是3(δtr代表譯碼器對當前幀的顯示次數(shù)),那么譯碼器就將本幀圖像顯示3次,即跳了2幀。

  跳幀是在每一幀編碼結(jié)束時發(fā)生的。這時,統(tǒng)計完這一幀共產(chǎn)生的比特數(shù)(用bits_prev_pic表示)、上一幀結(jié)束時發(fā)送緩沖器的比特數(shù)(用bits_in_buffer表示)。跳幀門限用threshold表示,threshold等于設(shè)定的發(fā)送碼率(target_bps)除以設(shè)定的幀頻(target_fps)的商,threshold必須是個整數(shù)。

  摘 要:提出了一種h.263低碼率視頻壓縮編碼的自適應(yīng)碼率控制方法,這種方法可以用fpga來實現(xiàn),為了達到實時性的要求,對硬件實現(xiàn)的具體方法進行了優(yōu)化。所提出的碼率控制優(yōu)化方法已在h.263標準的硬件系統(tǒng)中實現(xiàn)。

  關(guān)鍵詞:fpga;h.263標準;碼率控制;視頻壓縮;幀層

1 引言

  輸出比特速率的控制是影響h.263低速率視頻編碼的一個重要問題,控制的好壞直接關(guān)系到解碼圖像的質(zhì)量與編碼器輸出比特速率的穩(wěn)定性。itu-th.263[1]建議本身對這部分算法是開放的。到目前為止,已提出了若干種比特速率的控制算法[2~4]。這些算法可以分為兩類,一類為前饋比特速率控制,另一類為反饋比特速率控制。前饋控制算法通過對各編碼單位編碼輸出比特數(shù)的預(yù)測,或用試驗迭代的方法,來確定相應(yīng)的量化步長,其主要弱點是常常需要很大的計算量,使得其應(yīng)用受到明顯的限制,因而很少被采用。相對來說,反饋控制算法的計算量是可以接受的,并已被廣泛應(yīng)用。itu-t相繼推出的tmn5模型和tmn8[2]模型就是一種反饋比特速率算法。tmn8是在tmn5的基礎(chǔ)上提出的,具有優(yōu)異的控制效果,很多試驗表明,以tmn8實現(xiàn)的系統(tǒng)可以穩(wěn)定地鎖定在既定碼率上,碼率的上下波動小于10%,并且tmn8模型的算法實現(xiàn)起來也不復(fù)雜。

  本文針對h.263視頻編碼器的結(jié)構(gòu),根據(jù)itu-t視頻編碼模型tmn-8中標準的碼率控制算法,提出了一種采用fpga實現(xiàn)碼率控制的硬件方法,碼率控制分別在宏塊層和圖像層進行。首先闡述了h.263的碼率控制算法,然后介紹了硬件實現(xiàn)及優(yōu)化方法,最后給出了仿真的結(jié)果。

2 碼率控制算法

  h.263系統(tǒng)的碼率控制分2個層次實現(xiàn),一是改變量化步長,二是跳幀。碼率控制的過程可以用圖1來形象地說明。當控制器檢測到發(fā)送緩沖器中存放的碼流高于或者低于一定的門限時,控制器根據(jù)相應(yīng)的算法改變量化步長,使發(fā)送緩沖器中的碼流穩(wěn)定在一定的數(shù)量。當編碼器產(chǎn)生碼流的碼率很大,超出了量化器的控制范圍,將采用跳幀的方法來解決。

  改變量化步長,是微觀的宏塊級控制,控制量是量化步長因子q。h.263標準規(guī)定:q分為32級,其值分別為0~31。q越小,量化越精細,圖像質(zhì)量就越高,而產(chǎn)生的碼流也越長。一個宏塊內(nèi)具有相同的q,所以對于q來說最小的變化單位是宏塊。當一個宏塊編碼結(jié)束時,如果截至到目前編碼器所產(chǎn)生的碼流小于一個門限,那么碼率控制模塊就根據(jù)一定的算法減少q;而對于量化器來說,q變小則量化后的系數(shù)中非零系數(shù)增多,編碼器輸出的碼流就增加。如果截至到目前編碼器所產(chǎn)生的碼流大于一個門限,那么碼率控制模塊就增加q,q變大則量化后的系數(shù)中非零系數(shù)減少,編碼器輸出的碼流就減少。按照這種方法,在一定程度上使發(fā)送給發(fā)送緩沖器的碼流維持恒定,也就達到了控制碼率的目的。改變量化步長實現(xiàn)起來比較復(fù)雜。根據(jù)統(tǒng)計的碼流比特數(shù),通過復(fù)雜的計算,在每個宏塊結(jié)束時,計算下一個宏塊的量化步長因子q(qp)。用ptype表示幀類型,幀類型為幀內(nèi)幀時用i幀表示,否則用p幀表示。

 
  其中,mean_qp為上一幀每個宏塊平均的量化步長;bits_prev_pic為上一幀產(chǎn)生的比特數(shù);target_bpf為上一幀結(jié)束時計算出來的本幀應(yīng)該產(chǎn)生的比特數(shù);target_bpf_prev為上一個target_bpf;bits_prev_macro為本幀截至當前宏塊所產(chǎn)生的比特數(shù);mbnum為已編碼宏塊在本幀所有宏塊中所占的比例,用小數(shù)表示;target_bps是設(shè)定的發(fā)送碼率。

  對于跳幀算法,是實現(xiàn)宏觀的幀級控制,控制量是tr。tr以跳幀或不跳幀來達到減少或增加碼流的目的。一幀編碼結(jié)束時,根據(jù)當前發(fā)送緩沖器內(nèi)的比特數(shù)與跳幀的門限進行比較,判斷是否需要跳幀。如果發(fā)送緩沖器內(nèi)的比特數(shù)大于跳幀的門限時,說明發(fā)送緩沖器已經(jīng)不能接受更多的碼流了,所以接下來的幀不用編碼,發(fā)送緩沖器用空出的時間來發(fā)送碼流,減少庫存,這樣就發(fā)生了跳幀;反之,則不需要跳幀。值得注意的是在整個過程中,從發(fā)送緩沖器發(fā)出的碼流一直是按照一定的速率發(fā)出的,也就是說碼率是恒定的,改變的是發(fā)送緩沖器的庫存。

  跳幀的控制量是h.263標準碼流中幀頭的tr。tr是一個8位的指示位,表明了本幀的序號,范圍是0~255,當超過255時,從0重新開始。在一般沒有跳幀的情況下,tr是連續(xù)地從0~255變化。但當發(fā)生跳幀時,tr將發(fā)生不連續(xù)地跳變。如:當前幀的tr是112,在當前幀結(jié)束時計算得出下一幀要跳幀,那么等待跳幀結(jié)束后的下一幀的tr是115。這樣譯碼器可以知道δtr是3(δtr代表譯碼器對當前幀的顯示次數(shù)),那么譯碼器就將本幀圖像顯示3次,即跳了2幀。

  跳幀是在每一幀編碼結(jié)束時發(fā)生的。這時,統(tǒng)計完這一幀共產(chǎn)生的比特數(shù)(用bits_prev_pic表示)、上一幀結(jié)束時發(fā)送緩沖器的比特數(shù)(用bits_in_buffer表示)。跳幀門限用threshold表示,threshold等于設(shè)定的發(fā)送碼率(target_bps)除以設(shè)定的幀頻(target_fps)的商,threshold必須是個整數(shù)。

相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

羅盤誤差及補償
    造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!