1. 程式人生 > >MPEG4標準中的Advanced Simple Profile(ASP)完整的說明-04-3章

MPEG4標準中的Advanced Simple Profile(ASP)完整的說明-04-3章

82 頁共 99碼流中的引數如重建的差分運動向量MVDxMVDy要限定在範圍[lowhigh]內。另外,重建的運動向量MVxMVy的範圍也要在[lowhigh]內。而允許範圍則是依賴於引數vop_fcode,如下面表49所示: 49 –運動向量的範圍vop_fcode_forwardorvop_fcode_backwardmotion vector range inhalfsample units[low:high]motion vector range inhalfsample units(quarter_sample==1)[low:high]1 [-32,31] [-16,15.5]

2 [-64,63] [-32,31.5]3 [-128,127] [-64,63.5]4 [-256,255] [-128,127.5]5 [-512,511] [-256,255.5]6 [-1024,1023] [-512,511.5]7 [-2048,2047] [-1024,1023.5]變數r_size, f, MVDx, MVDy, high , low range 都是臨時變數,它們在本文的剩餘部分中不再被使用。引數horizontal_mv_data, vertical_mv_data, horizontal_mv_residual andvertical_mv_residual 是從碼流中提取恢復而得的引數。其中
horizontal_mv_data 為運動向量
水平分量資料,horizontal_mv_residual為水平運動向量殘差,vertical_mv_data 為運動向量垂直分量資料,vertical_mv_residual 為垂直運動向量殘差。變數vop_fcode 指的是vop_fcode_forward vop_fcode_backward,它們依各自的預測模式從碼流中恢復。P-VOP只有向前模式,而B-VOP則同時還有向後模式。如果當前巨集塊是場運動補償巨集塊,那麼兩個場的運動向量可以使用同一個預測運動向量PxPy)。在垂直方向,場運動向量的差分值用的是場座標,而PY 用的是幀座標,因此
場運動向量的絕對值可以由下面的式子得到:MVy = 2*( MVDyfield + PY / 2 )4.4.3 無限制運動補償只有在非短頭格式情況下(short_video_heaer==0),才允許使用無限制運動補償,即運動向量允許指到參考幀的外面。無限制運動補償是通過將邊界畫素值向各個方向擴充套件16 個像素來實現的。 14 畫素模式下,如果用來內插的樣值點位於參考幀的外面,則在使用邊界映象擴展前首先使用邊界值擴充套件。4.4.4 逐行模式P-VOP中的向量解碼過程和運動補償一個幀間巨集塊可以只有一個運動向量;也可以有四個運動向量,每個亮度塊都對應一個運動向量,這種模式也被稱為四向量模式。究竟是使用一個運動向量還是四個運動向量由碼流中的mcbpc變長碼字決定,準確來說是由mcbpc給出的mb_type決定。當mb_type等於01 時,只有一個運動向量,當mb_type等於1 時,有四個運動向量。為了解碼運動向量,運動向量預測值的水平和垂直分量分別使用從已解碼的相鄰巨集塊或PDF 檔案使用 "pdfFactory Pro" 試用版本建立www.fineprint.cnASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc 83 頁共 99塊得到的候選運動向量(MV1, MV2, MV3)通過中值濾波計算出來。每一個塊的候選預測器的空間位置如圖412所示。當整個巨集塊使用一個運動向量時,使用圖412 中的左上形;當使用視訊短頭格式時,整個巨集塊只由一個運動向量。 412 巨集塊中每一個塊的候選運動向量預測器MV1,MV2 MV3 的定義候選預測器的取值必須符合下面四個規則:第一, 如果候選預測器所在的鄰居巨集塊超出當前VOP 邊界或者當前視訊包(videopacket)邊界,它被認為是不合法的。在短頭格式下,如果它超出當前GOB的邊界(gob_header_enmpty等於0)時,也被認為是不合法的。第二, 如果有且僅有一個候選預測器不合法,那麼它被設定為0第三, 如果有且僅有兩個候選預測器不合法,它們被設定為第三個候選預測器的值。第四, 如果所有三個候選預測器都不合法,那麼它們都被設定為0三個候選運動向量的中值作為預測運動向量,即作Px PyPx Median MV x MV x MV xPy Median MV y MV y MV y==( , , )( , , )1 2 31 2 3舉例來說,如果MV1 = (-2, 3)MV2 = (1, 5)MV3 = (-1, 7),那麼Px = -1Py = 5。最終的運動向量使用前面所述數的一般運動向量的解碼過程得到。如果使用了四向量模式,每一個向量對應巨集塊中四個亮度塊的一個。色度塊的運動向量用的是同一個,它在碼流中是不傳輸的。它的值MVDCHR可以用下面的方法得到:如果當前巨集塊只有一個運動向量,記作(MVx, MVy)。如果是14 畫素模式,首先將運動向量的兩個分量除以2,得到MVx’ = MVx / 2MVy’=MVy / 2。注意用的是。然後將所得結果再除以4,此時得到得結果是整象素為單位的色度塊的運動向量,除法的結果分為整數部分和小數部分,整數部分不變,小數部分,去查下面的相應的表決定最終的取值。例如小數部分為14,查表413,得到的結果為12;小數部分為316,查表410可以得到應該取12,這裡都是整畫素單位。如果當前巨集塊有四個運動向量,如果是14 畫素模式,首先將各個分量除以2,用的除法是。然後將水平分量和垂直分量分別求和除以16,這樣得到的是整象素為單位的PDF 檔案使用 "pdfFactory Pro" 試用版本建立www.fineprint.cnASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc 84 頁共 99色度塊的運動向量。同樣按照上文提到的查表過程修改小數部分,得到最終的結果。對色度分量的內插,使用的是雙線性內插而不是使用濾波器,不管當前是不是14 畫素模式都是如此。 410 – 116畫素解析度的色度向量分量值的修改sixteenth pixel position 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //16resulting position 0 0 0 1 1 1 1 1 1 1 1 1 1 1 2 2 //2 411 – 112畫素解析度的色度向量分量值的修改twelfth pixel position 0 1 2 3 4 5 6 7 8 9 10 11 //12resulting position 0 0 0 1 1 1 1 1 1 1 2 2 //2 412 – 18畫素解析度的色度向量分量值的修改eighth pixel position 0 1 2 3 4 5 6 7 //8resulting position 0 0 1 1 1 1 1 2 //2 413 -- 14畫素解析度的色度向量分量值的修改fourth pixel position 0 1 2 3 //4resulting position 0 1 1 1 //2在得到亮度塊和色度塊的運動向量後,接著就是根據這些運動向量從參考幀中取出需要的巨集塊或塊,並對這些巨集塊或塊作相應的內插(如果需要的話)得到最終的參考巨集塊。這個過程在這裡就不詳細描述了,在看到後面B幀解碼過程,和場模式下運動向量的解碼過程時,可能會對這個過程有更深的理解。4.4.5 時域預測結構前向參考VOP 定義為過去的最近的已解碼的I-VOPP-VOP(vop_coded == 1),後向參考VOP被定義為將來的最近的已解碼的I-VOPP-VOP,此時忽略“vop_coded”的值。一個目標P-VOP用前向參考VOP作預測。一個目標B-VOP可以參考:l 前向和/或後向參考VOP,如果後向參考VOP“vop_coded == 1”l 只能參考前向VOP,如果後向參考VOP“vop_coded==0”時域預測結果如圖413 所描述:PDF 檔案使用 "pdfFactory Pro" 試用版本建立www.fineprint.cnASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc 85 頁共 99Object disappearsI0 P1 P2 P3 B4 P5 B6 P7 (vop_coded = 0)413 – 時域預測結構4.4.6 逐行模式下B-VOP的向量解碼和運動補償過程 B-VOP 中有三種類型的運動向量,分別被稱作16×16 的向前向量,16×16 的向後向量和直接模式的delta 向量。向量的解碼和相應的向量預測器有關。差分向量基本解碼過程同上述一般運動向量的差分向量的過程完全相同,除了直接模式的delta 向量的f_code是取1。重建的運動向量是差分運動向量加上相應的預測運動向量。delta 向量的預測運動向量永遠被設定為0,而前向和後向運動向量有著自己各自對應的預測器(這些預測器的值在每一個巨集塊行開始的時候被重置為0)。這些預測器在以下三種情形的時候被更新:l 當解碼完一個前向模式的巨集塊後,前向預測器(只有前向預測器)的值被設定為已解碼的前向運動向量的值;l 當解碼完一個後向模式的巨集塊後,後向預測器(只有後向預測器)的值被設定為已解碼的後向運動向量的值;l 當解碼完一個雙向模式的巨集塊後,前向和後向預測器分別使用相應型別的解碼向量(前向或後向)來更新。4.4.6.1 基本的運動補償過程所有ISO/IEC14496 的運動補償技術都是基於參考圖象ref[x][y]的尺寸為(widthheight的預測塊pred[x][y]的形成。當前巨集塊(或塊)在參考VOP 中的座標是(xy),已經解得的半象素精度的運動向量為(dx_halfpel,dy_halfpel)。運動補償的一般過程由以下的偽碼得到。14 畫素模式下,預測塊的產生見4.4.1.2 小節。其中component_width()component_height()函式給出了當前VOP的寬度和高度。實際上也就是VOL頭中的video_object_layer_widthvideo_object_layer_height 的值。/**************************************************************************** 這個函式用來在參考幀中取出座標為(x,y)的樣點值* 如果(x,y)超出幀邊界,則使用邊界值代替,這個函式實際上也就是實現了對無限制運動補償的支援**************************************************************************/clip_ref(ref, x, y){return(ref[MIN(MAX(x, 0), component_width(ref) - 1)] //參考取樣座標的確定[MIN(MAX(y, 0), component_height(ref) - 1)]);}mc(pred, /* prediction block */ref, /* reference component */PDF 檔案使用 "pdfFactory Pro" 試用版本建立www.fineprint.cnASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc 86 頁共 99x, y, /* ref block coords for MV=(0, 0) */width, height, /* reference block dimensions */dx_halfpel, dy_halfpel, /* half-pel resolution motion vector */rounding, /* rounding control (0 or 1 ) */pred_y0, /* field offset in pred blk (0 or 1) 場模式下引數對當前預測塊的頂場還是底場進行預測的標誌,頂場時為1底場為0 */

相關推薦

MPEG4標準Advanced Simple ProfileASP完整的說明-03-4

第 50 頁共 99頁表 3-19 I-VOP和P-VOP中cbpy的變長碼錶Code cbpy(intra-MB)(1234)cbpy(inter-MB),(1234)0011 000011110010 1 000111100010 0 001011011001 001111000001 1 0100101

MPEG4標準Advanced Simple ProfileASP完整的說明-04-1

第四章 解碼流程這一章對MPEG4 ASP的解碼流程作一個完整的介紹。首先給出解碼框圖,然後按照解碼的先後順序對每一個功能模組進行詳細的說明。4.1. 解碼框圖碼流解析運動向量解碼運動補償VLC IZZIACDC IQ IDCTVOP重建(ADD)重建VOP運動資料紋理資料圖4-1 MPEG4 ASP的解碼流

MPEG4標準Advanced Simple ProfileASP完整的說明-04-2

第 73 頁共 99頁InverseQuantisationArithmeticSaturationQF[v][u] F''[v][u] F'[v][u] F[v][u]quant_scale_codeW[w][v][u]MismatchControl圖 4-7 逆量化的過程4.3.4.1 第一種反量化方法第

MPEG4標準Advanced Simple ProfileASP完整的說明-04-3

第 82 頁共 99頁碼流中的引數如重建的差分運動向量MVDx和MVDy要限定在範圍[low:high]內。另外,重建的運動向量MVx和MVy的範圍也要在[low:high]內。而允許範圍則是依賴於引數vop_fcode,如下面表4-9所示:表 4-9 –運動向量的範圍vop_fcode_forwardorv

Python 3.x的6種標準物件型別之——Number數值資料型別

整型(int) 通常被稱為整型或整數,包含正負,不含小數點,同時沒有大小限制。 (如1,2,3,-6,5555等) 支援正常的數學運算,但在整數的除法(/)中,計算結果不會為整數 print(153/51) >>> 3.0 若想在整數的除法中

ASP.NET Core的依賴注入2:依賴注入DI

IoC主要體現了這樣一種設計思想:通過將一組通用流程的控制從應用轉移到框架之中以實現對流程的複用,同時採用“好萊塢原則”是應用程式以被動的方式實現對流程的定製。我們可以採用若干設計模式以不同的方式實現IoC,比如我們在上面介紹的模板方法、工廠方法和抽象工廠,接下來我們介紹一種更為有價值的IoC模式,即依賴注入

ASP.NET Core的依賴注入1:控制反轉IoC

ASP.NET Core在啟動以及後續針對每個請求的處理過程中的各個環節都需要相應的元件提供相應的服務,為了方便對這些元件進行定製,ASP.NET通過定義介面的方式對它們進行了“標準化”,我們將這些標準化的元件稱為服務,ASP.NET在內部專門維護了一個DI容器來提供所需的服務。要了解這個DI容器以及現實其中

ASP.NET Core的依賴注入4: 建構函式的選擇與服務生命週期管理

ServiceProvider最終提供的服務例項都是根據對應的ServiceDescriptor建立的,對於一個具體的ServiceDescriptor物件來說,如果它的ImplementationInstance和ImplementationFactory屬性均為Null,那麼ServiceProvider

ASP.NET Core的依賴注入5:ServicePrvider實現揭祕【補充漏掉的細節】

到目前為止,我們定義的ServiceProvider已經實現了基本的服務提供和回收功能,但是依然漏掉了一些必需的細節特性。這些特性包括如何針對IServiceProvider介面提供一個ServiceProvider物件,何建立ServiceScope,以及如何提供一個服務例項的集合。 一、提供一個Serv

ASP.NET Core的依賴注入5: ServiceProvider實現揭祕 【總體設計 】

本系列前面的文章我們主要以程式設計的角度對ASP.NET Core的依賴注入系統進行了詳細的介紹,如果讀者朋友們對這些內容具有深刻的理解,我相信你們已經可以正確是使用這些與依賴注入相關的API了。如果你還對這個依賴注入系統底層的實現原理具有好奇心,可以繼續閱讀這一節的內容。 目錄一、ServiceCall

ASP.NET Core的依賴注入5: ServiceProvider實現揭祕 【解讀ServiceCallSite 】

通過上一篇的介紹我們應該對實現在ServiceProvider的總體設計有了一個大致的瞭解,但是我們刻意迴避一個重要的話題,即服務例項最終究竟是採用何種方式提供出來的。ServiceProvider最終採用何種方式提供我們所需的服務例項取決於最終選擇了怎樣的ServiceCallSite,而服務註冊是採用的S

ANSI C標準標準預定義巨集整理備用

#include 包含一個原始碼檔案 #define 定義巨集 #undef 取消定義巨集 #if 如果條件為真,則編譯下面的程式碼 #elif 如果前面的#if不為真,則編譯下面的程式碼 #endif 結束一個#if...#elif條件編譯塊 #ifdef 如果已經定義了某個巨集,則編譯下面的程式碼 #i

asp.net類公共類DBHelpC#

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configura

ASP.NET應用程式使用身份模擬Impersonation

摘要 預設情況下,ASP.NET應用程式以本機的ASPNET帳號執行,該帳號屬於普通使用者組,許可權受到一定的限制,以保障ASP.NET應用程式執行的安全。但是有時需要某個ASP.NET應用程式或者程式中的某段程式碼執行需要特定許可權的操作,比如某個檔案的存取,這時就需要給

asp.net網頁實現tabPage功能

  我是個.net新手,所以我寫的東西在好些高手們看來似乎比較粗淺,還請大家海涵!並希望大家多多指導、多提意見,我會十分感激的,謝謝!   前幾天在做一個專案時,專案經理非要讓我在asp.net網頁中實現類似Windows Form程式中類似TabControl(TabPag

opencv標準霍夫線變換HoughLines和統計霍夫變換HoughLinesP

一、下面首先對HoughLines函式進行講解:  void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0,

ASP.NET Core使用EF CoreMySqlCode First

mys lambda core context gin etc roo nim 建數據庫 ⒈添加依賴   MySql.Data.EntityFrameworkCore ⒉在appsettings.json配置文件中配置數據庫連接字符串 1 { 2 "Lo

8ASP.NET Core 的MVC路由

1.前言 ASP.NET Core MVC使用路由中介軟體來匹配傳入請求的URL並將它們對映到操作(Action方法)。路由在啟動程式碼(Startup.Configure方法)或屬性(Controller Action屬性)中定義。路由描述應如何將URL路徑與操作(Action方法)相匹配。它還用於在響應

9ASP.NET Core 的MVC路由

 1.URL生成 MVC應用程式可以使用路由的URL生成功能,生成指向操作(Action)的URL連結。 IUrlHelper 介面用於生成URL,是MVC與路由之間的基礎部分。在控制器、檢視和檢視元件中,可通過Url屬性找到IUrlHelper的例項。在此示例中,將通過Controller.Ur

11ASP.NET Core 的配置一Configuration

1.前言 ASP.NET Core在應用程式上引入Microsoft.Extensions.Configuration配置,可以支援多種方式配置,包括命令列配置、環境變數配置、檔案配置、記憶體配置,自定義配置等等。下面我們就其中幾個配置來聊聊。 2.命令列配置 CommandLineConfigurat