碼率控制技術原理

引起編碼器的輸出比特碼率波動的原因主要有兩個。首先,數字視頻信號中包含了大量的時域和空域冗余,編碼器的主要任務就是去除這些冗余。由于時間冗余和空間冗余是隨機的,從而造成編碼器輸出比特率波動。另一個原因是變長編碼,變長編碼根據某個事件(如零游程)的發生概率來設計碼字。事件發生的概率越大,其編碼碼字越短,反之亦然,從而引起編碼器輸出比特率的變化。由于視頻應用的要求和目的不同,根據輸出碼率是否要求恒定,傳輸碼流的信道可分為兩種類型,即可變比特率的碼率控制VBR(Variable Bit Rate)和恒定比特率的碼率控制CBR(Constant Bit Rate)。在變比特率信道下,可以為更高的運動量或更詳細的紋理信息分配更多的帶寬,從而獲得更高效的帶寬共享,有利于獲得恒定圖像質量,同時有利于動態分配可用帶寬。這種動態帶寬分配需要一種碼率控制機制,可以根據時變網絡條件和需求,調整并限定各視頻源的輸出業務量。
??????? 然而,諸如公共交換電話網絡PSTN(Public Switched TelephoneNetwork)固定帶寬信道卻常用固定比特率傳送信息。為了獲得固定速率的視頻比特流傳輸,在視頻編碼器和信道間采用了緩沖器來平滑比特率的波動。緩沖器的引入雖然有利于平滑碼流,然而,它也引入了一定的延遲。同時,在很多視頻序列中,比特率波動會持續幾幀,從而需要一個大緩沖器來緩沖長時間的波動。這種長時緩沖使得視頻業務不能達到實時傳輸,因此,除了緩沖視頻數據,需要采用其他措施來減少編碼器的突發量。最常用的技術是調整一些編碼參數作為緩沖器飽和度的函數,如反饋控制

??????? 碼率控制中的性能指標有碼率、緩沖延時、緩沖區狀態等。在碼率控制系統中,校正裝置為碼率控制器。它負責收集碼率、延時和緩沖區狀態信息并調節編碼參數,使得性能指標維持在給定水平上。緩沖區起平滑碼率波動的作用。在編碼端,數據輸入緩沖區的碼率是變化的,而輸出端則取決于碼率控制模式。在恒定碼率模式下,輸出碼率維持不變;在可變碼率模式下,輸出碼率允許在一定的范圍內波動。理論上講,當緩沖區無限大時,延時長短和緩沖區大小成正比。對實時視頻通信系統而言,延時要求比較苛刻,延時越小越好。這就是說長期的碼率波動不能通過加大緩沖區的方式消除。

??????? 由于傳輸帶寬和存儲空間的限制,視頻應用對壓縮比有較高的要求。無損編碼所能提供的壓縮比遠不能滿足實際視頻應用的需求,但如果我們能夠接受某種程度的失真,高的壓縮比也不難獲得。人眼視覺系統對高頻信號變化不敏感,部分高頻信息丟失不會降低主觀視頻質量,主流的視頻編碼算法正是采用了量化方法消除視頻信號的生理視覺冗余,獲得比無損壓縮更高的壓縮比而又不會帶來視頻質量的顯著降低。率失真(RateDistortion理論旨在描述編碼失真度(Distortion,重構誤差)和編碼數據速率的關系。該理論建立在圖像是連續的基礎上,在有限數據速率下,由于存在量化誤差,必然存在失真。盡管率失真理論沒有給出最優編碼器,但它還是給出了容許失真條件下信息壓縮允許的下界。當使用有損編碼方法時,重構圖像g(x,y)和原始圖像f(x,y)存在差別。一般地,失真度D函數形式可以根據需要任意選取,例如平方代價函數、絕對代價函數等。在圖像編碼中,D常用均方差形式表示:

?

?

??????? 當D=O時,編碼對應于無損壓縮,輸入碼率應大于或等于信源熵H(X);若D一為最大允許失真,則相應碼率下限為R(D一)。典型的率失真曲線R—D如圖3.1所示。R(D’)為D’的凸遞減函數。

?

?

??????? 率失真優化主要用于模式選擇。在H.264視頻標準中,有以下幾種模式:INTRA.4x4,INTRA.16x16,SKIP,INTER—16×16,INTER.16×8,INTER.8×16,INTER.8×8。
假設圖像序列S被分割為K個不同的塊4,相應的像素用6t來表示。編碼6t所選擇的編碼模式%分為幀間編碼和幀內編碼。每種編碼模式都包括預測編碼的模式和編碼參數。其中編碼參數包括變換系數和量化參數等。對于幀間模式,編碼參數還包括一個或多個運動矢量。

??? 在對圖像序列S進行基于塊的混和視頻編碼時,對于每塊選取的編碼模式應該使編碼后的Lagrange代價函數J(S,II九)達到最小。編碼后比特流的比特率和失真度與時間和空間有著密切聯系,而不僅僅是和編碼模式有關,但當且僅當為每個塊Sk所選定的編碼模式使得代價函數J(S,IIX)最小時,編碼器得到最優化。
??? 編碼控制模式中,宏塊分割模式的判決與幀間模式運動估計的最佳比特分配這兩個問題將會被分別處理。在Lagrange參數A'MODE與量化參數選定后,H.264/AVC編碼器通過最小化Lagrange代價函數實現對每一個宏塊編碼模式的選定。對于宏塊St,模式Ik,拉格朗日模型選擇公式為:

對于INTRA模式,失真是重建宏塊s與原始宏塊s的平方差(SSD),按下式計算:

?

?

??????? 對于SKIP模式,DReC禾RReC不取決于當前量化參數的值,DReC由當前宏塊與參考以前幀的宏塊的SSD計算得到,RREC約為1bit/宏塊。對于INTER模式,它的拉格朗日代價函數計算較為復雜,這是由于多種塊模式和多參考幀的運動估計。給定拉格朗日常數.t,MOTION,宏塊Si拉格朗日代價函數
如下式:

?

?


其中,M為所有可能的編碼模式,失真按下式計算:

拉格朗日常數的選擇如下:

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455670.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python如何安裝pip

pip的安裝操作 pip簡介 pip 是一個現代的,通用的 Python 包管理工具。提供了對Python 包的查找、下載、安裝、卸載的功能。 環境搭建 安裝pip首先要安裝python,可以參考python安裝教程 安裝完python后,可以在cmd中輸入pip list 測試一下pip是否默認附帶著安裝,若…

【排序算法】python 十大經典排序算法(全網最詳)

排序算法可以分為內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序算法有:插入排序、希爾排序、選擇排序…

最新海康攝像機、NVR、流媒體服務器、回放取流RTSP地址規則說明

本文檔主要介紹海康威視設備預覽、回放、流媒體取流的RTSP URL和IE直接預覽、回放的HTTP URL。RTSP為取流協議,取到碼流后需要解碼顯示,可以通過VLC播放器進行測試,IE等瀏覽器網頁不支持RTSP協議直接取流預覽或者回放。網頁上需要跳過登錄界面…

pug模板引擎(原jade)

前面的話 為什么要引入pug,pug有什么特別之處呢?有一些嵌套層次較深的頁面,可能會出現巢狀嵌套,如下圖所示 在后期維護和修改時,一不小心少了一個尖括號,或者某個標簽的開始和閉合沒有對應上,就…

python安裝環境傻瓜式安裝_前后端分離——前端開發環境傻瓜式一步到位 nodejs ruby python nginx 安裝搭建配置...

前端開發環境一步到位 一、準備工作 nodejs安裝 安裝:next->next.... Ruby安裝 安裝:next->next.... 需要配置到path:將安裝目錄復制到環境變量中,跟jdk環境變量配置一樣。 注意下一步:Python安裝 安裝&#xff…

【Python】Python學到什么程度可以面試工作?------持續更新 ...

前言: 從事python學習,有爬蟲、web后臺、深度學習相關經驗, 坐標北京歡迎騷擾。 本答案力求簡潔和直擊重點,代碼部分使用Python3,更詳細的解釋請Google,回答有誤請務必提醒答主,我將及時改正。…

H.264的碼率控制算法

H.264的碼率控制算法采用了多種技術,其中包括自適應基本單元層(Adaptive Basic Unit Layer)、流量往返模型(Fluid Traffic Model)、線性MAD模型、二次率失真模型等。并且采用了分層碼率控制策略,共分為三層:GOP層、幀層和基本單元…

消息中間件Client模塊劃分

上圖是之間討論確定的系統架構(后續內容會按照這個架構來敘述),其中: 客戶端包含Producer和Consumer兩大塊 客戶端需要和NameServer交互來獲取元數據 客戶端需要和Broker交互來讀寫消息 Client模塊劃分 1. 網絡模塊 第一個仍然是…

詳解HashMap數據結構實現

HashMap的設計是由數組加鏈表的符合數據結構,在這里用自己的語言以及結合源碼去總結一下,如果有不對的地方希望評論指正,先拱手謝謝。 HashMap是日常中非常常用的一種數據結構,我們要想深入了解學習任何一門技術,都是要…

java web開發學習手冊_Java 人必備學習手冊開發下載!

今天給大家分享一套 5000 頁的 Java 學習手冊,新鮮出爐!此手冊內容專注 Java技術,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git,…

Django初次體驗

Django初次體驗 關于django的安裝,寶寶們可以參考django簡介以及安裝 Django框架的搭建 在終端中進入需要建立項目的目錄 執行: django-admin startproject mysite其中,mysite是項目目錄名,可以自定義 我們來看看startprojec…

【LeetCode-面試算法經典-Java實現】【002-Add Two Numbers (單鏈表表示的兩個數相加)】...

【002-Add Two Numbers (單鏈表表示的兩個數相加)】 原題 You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked…

關鍵幀 關于decode_one_frame函數

田克平(94338047) 16:57:34能自己設置某幀為關鍵幀嗎? 抱柱者(86311414) 16:57:59to 田克平可以 田克平(94338047) 17:00:00呵呵,把丟包后的下一幀設置為I幀可以嗎?來處理丟幀現象 ☆雪天/kf☆(279373002) 17:00:42這個難度大了 田克平(94338…

不出現php version網頁_php冷知識 - 從命令行參數列表中獲取選項

分享一個php的冷知識 - ,從命令行參數列表中獲取選項用到的函數是getopt 說明函數簽名是這樣的getopt ( string $options [, array $longopts [, int &$optind ]] ) : array|bool false解析傳入腳本的選項,成功返回數組,解析失敗返回fals…

【機器學習】opencv-攝像頭中的人臉采集

本次在視頻識別的程度上增添了攝像頭實時識別, 區別在于: # v cv2.VideoCapture(./dzd2.mp4) v cv2.VideoCapture(0) import numpy as npimport cv2face_detector cv2.CascadeClassifier(./haarcascade_frontalface_alt2.xml) # v cv2.VideoCapt…

[計算機視覺][神經網絡與深度學習]Faster R-CNN配置及其訓練教程2

faster-rcnn分為matlab版本和python版本,首先記錄弄python版本的環境搭建過程.matlab版本見另一篇:faster-rcnn(testing): ubuntu14.04caffecuda7.5cudnn5.1.3opencv3.0matlabR2014a環境搭建記錄 首先,進入官方github網站:https://github.com/rbgirshick/py-faster-…

modbus從站模擬軟件_作為工控電氣人,你知道我們必備的軟件有哪些嗎?

作為工控電氣人,你知道我們必備的軟件有哪些嗎?今天我就來給大家介紹一下,工控電氣人常用的幾款軟件,有了它們,我們的工作學習將會更易上手,效率翻倍。以下介紹主要是分為電工常用軟件,PLC編程軟…

錯誤檢測dP-bitstream-ei_flag runRestrictRef

JM86模型,對于錯誤檢測,dP->bitstream->ei_flag在什么情況下置1?還是無錯的時候dP->bitstream->ei_flag0,有錯時dP->bitstream->ei_flag等于一個較大的無效值? 看下所有給 dP->bitstream->ei_…

【數據分析】豆瓣電影Top250爬取的數據的可視化分析

豆瓣Top250網址 將之前爬取到的豆瓣電影進行簡單的可視化: 數據列表保存為CSV格式,如圖 導入數據 做好準備 #!-*- coding:utf-8 -*- import pandas as pd import numpy as np import matplotlib.pylab as plt import re from numpy import rank from bu…

sqlmap的二次開發

1、sqlmapapi的幫助信息。 -s 啟動sqlmap作為服務器 -h 指定sqlmap作為服務器的IP地址,默認127.0.0.1 -p 指定sqlmap服務器的端口,默認端口為8775 2、啟動服務 瀏覽器訪問: 3、api介紹:sqlmap項目下的api.py文件含有所有的api adm…