H.264編解碼流程

編碼:

藍色的前向編碼流程:
以宏塊為輸入單位介紹優于以幀為單位介紹。

Fn為即將進行編碼的宏塊,由原始圖像中16*16像素構成。每個宏塊要么采用幀內模式編碼,要么采用幀間模式編碼。不管是哪種編碼模式,預測宏塊P都是基于重建幀生成的。在幀內模式中,預測宏塊P是由當前幀經過編碼、解碼和重建生成的(注意,采用未經過濾波的樣本uF`n來生成P)。在幀間模式中,預測宏塊是通過一個或者多個參考幀經過運動補償預測生成的。在圖中,參考幀就是之前編碼得到的幀F`n-1;不過,并不只是一個參考幀,每個預測宏塊P都是由一個或者兩個,之前或者之后的,已經經過編碼和重建所生成的幀中的對應宏塊所生成的。

當前宏塊減去預測宏塊P生成殘差宏塊Dn。殘差宏塊Dn經過變換、量化后生成X,由一系列變換量化系數組成。然后,對這些系數進行重排序和熵編碼。熵編碼生成的系數,附上解碼宏塊所需要的附加信息生成壓縮比特流,(附加信息有宏塊預測模式,量化步長,描述如何對宏塊進行運動補償的運動矢量信息,等等)。壓縮比特流被傳到網絡抽象層(NAL)以發射或者儲存。

粉紅色的重建流程:
為了生成重建幀以編碼以后的宏塊,將量化后的宏塊殘差系數X進行解碼。系數X經過反量化,反變換生成殘差宏塊Dn`。此時的殘差宏塊與原先的殘差宏塊Dn并不相同,原因是在量化過程中引入了失真。所以,Dn`是變形了的Dn。

預測宏塊P與Dn`相加生成重建宏塊uF`n(原宏塊的變形了的宏塊)。為了減小塊效應失真,引入了專門的濾波器。濾波之后的宏塊就是重建宏塊F`n,一系列的重建宏塊組成了參考幀。(實際上,這里的參考幀,與解碼端生成的最終圖像完全一致)

解碼:
從NAL中,解碼器取得壓縮比特流。數據元素經過熵解碼和重排序生成一系列量化后的系數X。經過反量化和反變換生成Dn`(與編碼端的Dn`一致)。使用從比特流中解碼出來的頭信息,解碼器生成預測宏塊P,與先前在編碼器中生成的預測宏塊P一致。P與Dn`相加生成uF`n,然后經過濾波,生成解碼宏塊F`n。

從兩幅圖表和上面的討論可以發現:編碼器的重建流程的目的是為了確保編碼端和解碼端使用一致的參考幀來生成預測宏塊P。如果參考幀不一致,那么編碼端和解碼端的預測宏塊P就不一致,導致在編碼端和解碼端之間生成漸增的誤差或者“漂移”。

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

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

相關文章

遠程管理服務器的具體操作方法

遠程是管理服務器最常見的一種方式,租用服務器也好,把服務器托管給服務商也好,肯定不會經常去機房辦公,有什么問題的話大家都是選擇遠程服務器。其實遠程服務器就跟我們遠程電腦是一樣的,具體需要怎么操作可能有的人還…

python中的OS模塊

OS模塊 OS 操作系統的簡稱 os模塊就是對操作系統進行操作,使用該模塊必須先導入模塊: import osos模塊中的函數 getcwd() 功能:獲取當前的工作目錄 格式:os.getcwd() 返回值:路徑字符串chdir() 功能:修改…

JavaWeb基礎—dbutils的簡單入門

簡明入門教程,參考:https://www.cnblogs.com/CQY1183344265/p/5854418.html 進行此章節之前,介紹一個JdbcUtils的再次的簡單封裝 (例如后面需要構造QueryRunner時得到數據源等的簡便的操作) package cn.itcast.jdbcuti…

macos安裝vscode_VS Code 代碼編輯器入門指南:核心組件與概念

作者:思考問題的熊寫在前面如果當電腦只能裝一個軟件還需要盡量不影響日常學習工作時,不知道你的選擇會是什么。我把這個看似「荒誕」的問題理解為「All-in-One」的升級版拷問。這個問題陪伴了我很久,每用一個軟件我都會想想它對我究竟有多不…

環路濾波一些概念

熵編碼需要編碼的數據如下: 熵編碼需要編碼的數據如下:

【深度學習】TensorFlow之卷積神經網絡

卷積神經網絡的概念 在多層感知器(Multilayer Perceptrons,簡稱MLP)中,每一層的神經元都連接到下一層的所有神經元。一般稱這種類型的層為完全連接。 多層感知器示例 反向傳播 幾個人站成一排第一個人看一幅畫(輸入數…

python中的zip模塊

zip壓縮 引入模塊: import zipfilezip文件格式是通用的文檔壓縮標準,在ziplib模塊中,使用ZipFile類來操作zip文件,下面具體介紹一下: zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) 功能:…

[LeetCode] 35. Search Insert Position

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You may assume no duplicates in the array. Here are few examples.[1,3,5,6], 5 → 2[1,3,5,6], 2 → 1[1…

golang 的交叉編譯

為什么80%的碼農都做不了架構師?>>> Go是一門編譯型語言,所以在不同平臺上,需要編譯生成不同格式的二進制包。 由于Go 1.5對跨平臺編譯有了一些改進,包括統一了編譯器、鏈接器等。 編譯時候只需要指定兩個參數&#x…

【深度學習】Cifar-10-探究不同的改進策略對分類準確率提高

cifar10數據集上進行圖片分類,基于tensorflow框架, 旨在探究不同的改進策略對分類準確率的影響,如何一步步得提高準確率 一、問題描述 當我們在處理圖像識別或者圖像分類或者其他機器學習任務的時候,我們總是迷茫于做出哪些改進…

Acer 4750 安裝黑蘋果_黑蘋果 MacOS 10.15 Catalina安裝教程

一、準備工作一個8G以上的U盤(安裝 10.15 Catalina 必須要16G及以上的U盤 );Mac OS鏡像、TransMac(刻錄工具)、DiskGenius(分區工具)、EasyUEFI(引導工區)、EFI驅動文件。安裝工具獲取方式:關注公眾號【遠景論壇】,回復:黑蘋果二、…

幀內16*16模式的宏塊數據傳輸順序

如果宏塊以16*16幀內模式編碼,那么塊-1首先被傳輸,攜帶的信息是每個4*4亮度塊的DC系數。然后,亮度殘差塊0-15被傳輸(此時,16*16幀內宏塊的DC系數為零)。對于亮度分量Cb和Cr,16和17塊攜帶DC系數的…

ceph中查看一個rbd的image的真實存儲位置

1、新建一個image存儲 rbd create hzb-mysql --size 2048 2、查看hzb-mysql的所有對象 一個rbd image實際上包含了多個對象(默認情況下是image_size/4M) [rootcc ~]# rbd info hzb-mysql rbd image hzb-mysql:size 2048 MB in 512 objectsorder 22 (4096…

python中的shutil模塊

shutil模塊 引入: import shutil copy() 功能:復制文件 格式:shutil.copy(來源文件,目標地址) 返回值:復制之后的路徑copy2() 功能:復制文件,保留元數據 格式:shutil.copy2(來源文件,目標地址…

亞馬遜低調收購Biba 或下月發布視頻消息服務

北京時間11月24日消息,據外媒報道,收購Twitch和Elemental Technologies似乎只是亞馬遜通過收購深耕視頻服務市場戰略的兩個元素。去年,亞馬遜還低調收購了創業公司Biba Systems,后者開發和運營面向企業用戶的視頻消息應用。消息人…

【tensorflow】static_rnn與dynamic_rnn的區別

static_rnn和dynamic_rnn的區別主要在于實現不同。 static_rnn會把RNN展平,用空間換時間。 gpu會吃不消(個人測試結果) dynamic_rnn則是使用for或者while循環。 調用static_rnn實際上是生成了rnn按時間序列展開之后的圖。打開tensorboard你…

pcie1 4 速度_太陽系行星們誰轉得最快?八大行星自轉速度排行榜,地球排第五...

不知道大家有沒有玩兒過陀螺呢?玩兒陀螺的技術如果很好的話,它可以在地上飛快地旋轉并且能夠旋轉很長的時間。有趣的是,宇宙中的很多星球就像陀螺一樣繞著一個中心軸旋轉著。這就是星球的自轉。在太陽系中有八顆大行星,它們都在自…

python中時間模塊

時間日期相關的模塊 calendar 日歷模塊time   時間模塊datetime 日期時間模塊timeit   時間檢測模塊 日歷模塊 calendar() 功能:獲取指定年份的日歷字符串 格式:calendar.calendar(年份,w2,l1,c6,m3) 返回值&…

硬盤接口詳細解釋

硬盤是電腦主要的存儲媒介之一,由一個或者多個鋁制或者玻璃制的碟片組成。碟片外覆蓋有鐵磁性材料。硬盤有固態硬盤(SSD 盤,新式硬盤)、機械硬盤(HDD 傳統硬盤)、混合硬盤(HHD 一塊基于傳統機械…

【Keras】30 秒上手 Keras+實例對mnist手寫數字進行識別準確率達99%以上

本文我們將學習使用Keras一步一步搭建一個卷積神經網絡。具體來說,我們將使用卷積神經網絡對手寫數字(MNIST數據集)進行識別,并達到99%以上的正確率。 為什么選擇Keras呢? 主要是因為簡單方便。更多細節請看:https://keras.io/ …