H.264的兩個概念:DC系數和AC系數。 MV預測過程詳解(附圖)

在做熵編碼之前,先明確兩個概念:DC系數和AC系數。
量化后得到的仍是64個系數,量化并沒有改變系數的性質。大家知到DCT變換是將數據域從時(空)域變換到頻域,在頻域平面上變換系數是二維頻域變量u和v的函數。對應于u=0,v=0的系數,稱做直流分量,即DC系數,其余63個系數稱做AC系數,即交流分量。

DC系數:對應于u=0,v=0的系數,稱做直流分量,即DC系數。
AC系數:其余63個系數稱做AC系數,即交流分量。

===========第一步:確定相鄰塊===========

? ?? ?MV 預測以宏塊分割(或亞宏塊分割,如果宏塊存在亞分割)為單位,同一個宏塊分割(或亞宏塊分割)內所有 4*4 塊 MV 預測值相同。以每個宏塊分割(或亞宏塊分割)的左上角像素 pixel1 和右上角像素 pixel2 為參考點來確定相鄰塊則:
? ?? ?pixel1 左側相鄰像素所在 4*4 塊為當前宏塊分割(或亞宏塊分割)的相鄰塊 A
? ?? ?pixel1 上方相鄰像素所在 4*4 塊為當前宏塊分割(或亞宏塊分割)的相鄰塊 B
? ?? ?pixel2 右上對角線像素所在 4*4 塊為當前宏塊分割(或亞宏塊分割)的相鄰塊 C
? ?? ?pixel1 左上對角線像素所在 4*4 塊為當前宏塊分割(或亞宏塊分割)的相鄰塊 D

MV預測示意圖



? ?? ?以最復雜的 8*8 宏塊分割類型為例(此時只存在亞宏塊分割),分析如下:
? ?? ?假設圖中黑色框表示宏塊、每個綠色框表示一個 4*4 塊、每個紅色框表示一個 8*8 塊。當前宏塊的宏塊分割模式為 8*8(如圖中紅色線),其亞宏塊分割模式分別為:第一個 8*8 塊為 8*8,第二個 8*8 塊為 4*4(如圖中藍色線),第三個 8*8 塊為 4*8(如圖中藍色線),第四個 8*8 塊為 8*4(如圖中藍色線)。則按照上述方法來確定相鄰塊的方法如下:
? ?? ?第一個預測對象為第一個 8*8 塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 7 號 4*4 塊,B 為 2 號 4*4 塊,C 為 4 號 4*4 塊,D 為 1 號 4*4 塊。9、14、15 與 8 具有相同 MV 預測值
? ?? ?第二個預測對象為第二個 8*8 塊的第一個 4*4 塊,即 10 號塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 9 號4*4塊,B 為 4 號4*4塊,C 為 5 號 4*4 塊, D 為 3 號 4*4 塊
? ?? ?第三個預測對象為第二個 8*8 塊的第二個 4*4 塊,即 11 號塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 10 號4*4塊,B 為 5 號4*4塊,C 為 6 號 4*4 塊,D 為 4 號 4*4 塊
? ?? ?第四個預測對象為第二個 8*8 塊的第三個 4*4 塊,即 16 號塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 15 號4*4塊,B 為 10 號4*4塊,C 為 11 號 4*4 塊,D 為 9 號 4*4 塊
? ?? ?第五個預測對象為第二個 8*8 塊的第四個 4*4 塊,即 17 號塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 16 號4*4塊,B 為 11 號4*4塊,C 為 12 號 4*4 塊,D 為 10 號 4*4 塊
? ?? ?第六個預測對象為第三個 8*8 塊的第一個 4*8 塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 19 號 4*4 塊,B 為 14 號 4*4 塊,C 為 15 號 4*4 塊,D 為 13 號 4*4 塊。26 與 20 具有相同 MV 預測值
? ?? ?第七個預測對象為第三個 8*8 塊的第二個 4*8 塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 20 號 4*4 塊,B 為 15 號 4*4 塊,C 為 16 號 4*4 塊,D 為 14 號 4*4 塊。27 與 21 具有相同 MV 預測值
? ?? ?第八個預測對象為第四個 8*8 塊的第一個 8*4 塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 21 號 4*4 塊,B 為 16 號 4*4 塊,C 為 18 號 4*4 塊,D 為 15 號 4*4 塊。23 與 22 具有相同 MV 預測值
? ???第九個預測對象為第四個 8*8 塊的第二個 8*4 塊,以其左上角像素 pixel1 和右上角像素 pixel2 為參考點,則:A 為 27 號 4*4 塊,B 為 22 號 4*4 塊,C 為 24 號 4*4 塊,D 為 21 號 4*4 塊。29 與 28 具有相同 MV 預測值



===========第二步:確定 A、B、C 的可用性===========

根據 A、B、C 所在宏塊是否存在或者是否允許參與預測來判斷。如果 C 不可用,采用 D 代替 C




===========第三步:預測 MV ===========

1、如果 A、B、C 三個參考塊中只有一個與當前預測對象為同一參考幀,則選取該參考塊的 MV 作為最終 MV 預測值
2、當前宏塊是否為 8*16 或者 16*8 分割:
(1)、如果當前宏塊為 8*16 分割類型:
? ?? ?? ? 對于左邊 8*16 分割,如果 A 與當前分割為同一參考幀,則采用 A 的 MV 為該分割的最終 MV 預測值
? ?? ?? ? 對于右邊 8*16 分割,如果 C 與當前分割為同一參考幀,則采用 C 的 MV 為該分割的最終 MV 預測值
(2)、如果當前宏塊為 16*8 分割類型:
? ?? ?? ? 對于上邊 16*8 分割,如果 B 與當前分割為同一參考幀,則采用 B 的 MV 為該分割的最終 MV 預測值
? ?? ?? ? 對于下邊 16*8 分割,如果 A 與當前分割為同一參考幀,則采用 A 的 MV 為該分割的最終 MV 預測值
3、其余情況并且 B、C 中有一個可用或者兩者都可用,則采用中值預測(取 A、B、C 三者中MV的中值為最終 MV 預測值)
4、其余情況并且 B、C 皆不可用,則采用 A 的 MV 為最終 MV 預測值


【注】:1、宏塊分割時的相鄰塊確定方法與第一步所述過程雷同:16*16 相當于 8*8,8*16、16*8 分別相當于 4*8、8*4
? ?? ?? ?? ?2、對于不可用的相鄰塊,其 MV 仍然可能參與 MV 預測,但其值為 0。例如:A 不可用,B、C 可用,則最終可能仍然是在 A、B、C 中取中值,但此時 A 的 MV 為 0;
? ?? ?? ?? ?3、對于不可用的相鄰塊,其參考幀索引被設置為 -1,即必然與當前預測對象非同一參考幀;
? ?? ?? ?? ?4、可以驗證:同時滿足第三步的第一、第二兩種情況時,按第一種情況計算 MV 預測值與按第二種情況計算 MV 預測值等效;
? ?? ?? ?? ?5、該預測過程即為標準 8.4.1.3 小節的內容,在 JM86 中對應的代碼為 SetMotionVectorPredictor 函數;
? ?? ?? ?? ?6、MBAFF 情況下的相鄰塊均指對應位置(co-locate)塊。

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

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

相關文章

1028. List Sorting (25)

題目鏈接:http://www.patest.cn/contests/pat-a-practise/1028 題目: 1028. List Sorting (25) 時間限制200 ms內存限制65536 kB代碼長度限制16000 B判題程序Standard作者CHEN, YueExcel can sort records according to any column. Now you are suppose…

【后端開發】分析抖音后臺架構

最后分享抖音美女爬蟲 https://github.com/wangshub/Douyin-Bot

看日本如何用IoT打造智能工廠

在技術、市場、政策等方面因素的推動下,全球正在掀起一股智能制造的熱潮,越來越多的國家大力推進智能工廠的建設。有機構預測,未來五年智能工廠領域的投資將促進生產力增長27%,預計到2022年年底,21%的工廠將會成為智能…

HTML標題

HTML標題 通過 <h1>、<h2>、<h3>、<h4>、<h5>、<h6>,標簽可以在網頁上定義6種級別的標題。 6種級別的標題表示文檔的6級目錄層級關系&#xff0c;比如說&#xff1a; <h1>用作主標題&#xff08;最重要的&#xff09;&#xff0c;其…

264中 POC的計算方法

作者&#xff1a;jogh.264 參考代碼 JM86 一參數說明 這一節闡述的是encoder.cfg 中的參數對編碼過程的影響 要注意的是encoder.cfg 中的參數跟input 結構體中的變量是一一對應的 ? StartFrame&#xff1a;從視頻流的第幾幀開始編碼 ? FramesToBeEncoded&#xff1a;指明…

c++ 測試串口速率_納米軟件案例之電流控制測試系統

項目背景西安某機電研究所電流控制測試系統軟件需要用記錄儀設置采樣速率對電流數據進行采集&#xff0c;并能夠進行數據實時顯示、保存。為更好的分析實驗現象&#xff0c;需要歷史測試數據可查詢并顯示。目前采用的傳統的手動測試&#xff0c;測試操作繁雜。數據保存困難&…

【Sublime】使用 Sublime 工具時運行python文件

使用 Sublime 工具時報Decode error - output not utf-8解決辦法 在菜單中tools中第四項編譯系統 內最后一項增添新的編譯系統 自動新建 Python.sublime-build文件,并添加"encoding":"cp936"這一行,保存即可 使用python2 則注釋encoding改為utf-8 {&quo…

智慧城市這份試卷 國外城市怎么答題?

在近五年&#xff0c;國內智慧城市建設的熱潮一直增無減。據媒體梳理&#xff0c;透過各地政府工作報告和“十三五”規劃發現&#xff0c;我國95%的副省級城市、76%的地級城市&#xff0c;總計超過500個城市&#xff0c;均在政府工作報告或“十三五”規劃中明確提出&#xff0c…

HTML段落,換行,字符實體

HTML段落,換行,字符實體 html段落 <p>標簽定義一個文本段落&#xff0c;一個段落含有默認的上下間距&#xff0c;段落之間會用這種默認間距隔開&#xff0c;代碼如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"&g…

【python】有意思的python小項目GitHub地址匯總

Licence_plate_recognize 車牌識別 Djang-Stu 基于python的Django框架學生信息管理系統 sklearn-machine-learning 數據分析-機器學習-深度學習【個人學習筆記】 movie_analysis 對電影影評分析生成詞云 spider_doubanTOP 爬取豆瓣電影top250/爬取豆瓣圖書top250 yuyin_re…

CBP詳解

cbp一共6bit&#xff0c;高2bit表示cbpc(2&#xff1a;cb、cr中至少一個4x4塊的AC系數不全為0&#xff1b;1&#xff1a;cb、cr中至少一個2x2的DC系數不全為0&#xff1b;0&#xff1a;所有色度系數全0&#xff09; 低4bit分別表示4個8x8亮度塊&#xff0c;其中從最低一位開始的…

R 包的安裝,使用,更新

R包的使用方法 包就是提供了種類繁多的函數&#xff0c;當然還有它的一些數據集&#xff0c;可以使用這些函數來操作這些數據集&#xff0c;來學習使用。 library()&#xff0c;當前的工作環境里&#xff0c;可以使用的包 包的幫助文檔&#xff1a;help(package"包名"…

nginx 電子書_13本免費的電子書,拿走,不謝

傻白甜程序員13本電子書的清單01《PyTorch官方教程中文版》傻白甜程序員中&#xff0c;后臺回復“pytorch”獲取02《Think Python》傻白甜程序員中&#xff0c;后臺回復“ThinkPython”獲取03《走向分布式》傻白甜程序員中&#xff0c;后臺回復“分布式”獲取04《Nginx教程&…

Redis數據類型:字符串

2019獨角獸企業重金招聘Python工程師標準>>> 概要 字符串類型是Redis最基本的數據類型&#xff0c;能夠存儲任何形式的字符串&#xff0c;單個健值最大能夠存放512兆的數據&#xff0c;據傳將來會放開512M的限制。 命令 設置值&#xff1a;set foo bar 獲取值&#…

HTML塊,含樣式的標簽

HTML塊,含樣式的標簽 html塊 div標簽 塊元素&#xff0c;表示一塊內容&#xff0c;沒有具體的語義。span標簽 行內元素&#xff0c;表示一行中的一小段內容&#xff0c;沒有具體的語義。 含樣式和語義的標簽 em標簽 行內元素&#xff0c;表示語氣中的強調詞i標簽 行內元素…

【docker】docker虛擬容器的使用大全

Docker容器詳解 Docker是基于Go語言開發的開源應用容器引擎&#xff0c;遵從Apache Licence 2.0協議&#xff0c;可以讓開發者打包應用以及應用的依賴包到一個可移植的容器中&#xff0c;然后發布到各種發行版本的Linux系統上。 Docker簡介 軟件開發中最為麻煩的事情可能就是…

【樹莓派】修改樹莓派盒子MAC地址

用樹莓派盒子&#xff0c;在某些客戶方實施過程中&#xff0c;不同客戶的網絡環境對樹莓派盒子的要求不同&#xff0c;網絡管理配置要求MAC地址和IP綁定。 一種情況下&#xff0c;查詢盒子的MAC地址&#xff0c;添加到網絡管理的路由規則中即可&#xff1b; 另一種情況下&#…

編程隨想 關系圖_IT什么崗位比較好找工作?一張金字塔圖就能明白

IT(Internet Technology)互聯網技術是指在計算機技術的基礎上開發建立的一種信息技術。IT行業這些年一直很火爆&#xff0c; 對于IT就業崗位的選擇一直也都是熱門話題。一、IT人才總體供需金字塔型人才需求和市場供應關系圖&#xff1a;人才供需圖一般IT 行業供需關系可以比喻為…

諾基亞收購了阿朗:那與 TCL 的“阿爾卡特”品牌授權協議到期后咱辦?

在被諾基亞收購之后&#xff0c;“阿爾卡特-朗訊”的牌子算是被這家芬蘭公司收入囊中。尷尬的是&#xff0c;TCL 很早就獲得了“阿爾卡特”這個智能手機品牌的授權。當然&#xff0c;對于因為錯抱了微軟 Windows Phone 這條大腿、以致于多年后再借著 HMD Global 重返 Android 智…

【Django】django使用原生SQL的方法(附加說說為什么ORM上不了大臺面)

執行自定義SQL語言&#xff1a; from django.db import connection ? cursorconnection.cursor() ? # 插入操作 cursor.execute("insert into hello_author(name) values(傳說中的申小五)") ? # 更新操作 cursor.execute("update hello_author set nameabc w…