深入剖析H.264幀間預測(P宏塊)



來自:http://blog.csdn.net/stpeace/article/details/8115392

工具:foreman_qcif.yuv, JM8.6, H.264visa. 下面僅討論P宏塊的亮度Y分量,爲簡便起見,只討論整數像素.

 

步驟1:用JM8.6編碼foreman_qcif.yuv的3幀(IPP), 得到test.264,用H.264visa打開test.264. 在第二幀中,用H.264visa選中第4行的第9個宏塊(宏塊共有9行11列),在H.264visa中該宏塊位置顯示爲: MB 41(8, 3)  

 

步驟2:先給出該宏塊的重要信息,然後對這個宏塊進行分析.

 

              用H.264visa提取的該宏塊的基本信息爲:

==== MB 41(8, 3) ====
    Location : (128, 48),
    Slice No. : 0
    Slice Type : P Slice
    MB Type : (4)P_8x8ref0
    NumMbPart : 4
    MbPartSize : (8, 8)
    Subblock Type:
       +-----------------+----------------+
       |    (2)P_L0_4x8  |    (1)P_L0_8x4 |
       +-----------------+----------------+
       |    (1)P_L0_8x4  |    (2)P_L0_4x8 |
       +-----------------+----------------+

****** Inter Info ******

Block(0, 0):
  (0,0) L0=MV(-11, 5),POC: 0,refIdx:0,DecNo: 1
  (1,0) L0=MV(-13,-3),POC: 0,refIdx:0,DecNo: 1

Block(1, 0):
  (0,0) L0=MV(-28, 0),POC: 0,refIdx:0,DecNo: 1
  (0,1) L0=MV(-10,-8),POC: 0,refIdx:0,DecNo: 1

Block(0, 1):
  (0,0) L0=MV(-7,-4),POC: 0,refIdx:0,DecNo: 1
  (0,1) L0=MV(-2, 0),POC: 0,refIdx:0,DecNo: 1

Block(1, 1):
  (0,0) L0=MV(-10,-6),POC: 0,refIdx:0,DecNo: 1
  (1,0) L0=MV(-14,-10),POC: 0,refIdx:0,DecNo: 1

 

 

 

            可以看到,其中一塊的實際運動矢量爲:(-7, 0)(說明-28/4=7, 0/4=0),該塊的預測值如下:

====================== Y Data ======================
+----------------+----------------+----------------+----------------+
|177,182,183,184,|182,184,186,185,|184,185,186,184,|187,195,201,202,|
|164,176,181,187,|184,185,187,185,|185,186,187,184,|191,198,201,201,|
|145,169,180,186,|185,186,187,185,|186,187,185,187,|195,199,201,200,|
|135,161,176,177,|187,187,185,188,|187,187,184,191,|198,199,201,199,|
+----------------+----------------+----------------+----------------+
|131,153,171,170,|188,187,184,185,|198,200,201,200,|201,202,202,203,|
|131,148,166,175,|182,189,186,174,|199,200,200,199,|202,203,203,203,|
|133,146,165,182,|176,186,185,169,|173,195,202,198,|201,203,203,202,|
|133,152,171,177,|177,177,171,154,|123,150,190,203,|200,200,201,201,|
+----------------+----------------+----------------+----------------+
|145,164,182,178,|169,150,132,138,|123,110,130,172,|201,200,198,199,|
|150,170,178,181,|184,148,105,130,|142,128,113,127,|172,196,201,199,|
|158,170,174,185,|197,179,144,126,|128,136,126,108,|127,165,205,211,|
|166,173,181,200,|204,209,196,150,|123,117,127,121,|108,123,169,202,|
+----------------+----------------+----------------+----------------+
|199,203,206,210,|199,199,202,203,|163,115,108,129,|121,110,116,155,|
|204,204,198,201,|202,203,205,211,|201,173,132,117,|129,129,112,116,|
|206,206,191,190,|208,209,207,209,|204,215,193,137,|117,129,127,116,|
|211,212,189,196,|213,207,207,208,|206,209,210,194,|137,112,120,127,|
+----------------+----------------+----------------+----------------+

 

         

          那麼這些預測值究竟是怎麼得來的呢?第二幀的參考幀是第一幀(幀間),所以該預測值是從第一幀中得來的,平移向量爲(-7, 0). 我們知道,幀間預測的參考值是參考塊的濾波後的值(這一點與幀內預測不同),下面給出第一幀的濾波後的值(該值又叫重建值):

====================== Y Data ======================
+----------------+----------------+----------------+----------------+
|183,184,185,186,|184,187,195,201,|202,201,201,202,|202,203,204,204,|
|184,185,186,187,|184,191,198,201,|201,201,201,202,|202,203,204,204,|
|185,186,187,185,|187,195,199,201,|200,200,202,202,|202,203,203,203,|
|187,187,187,184,|191,198,199,201,|199,200,203,203,|203,203,203,203,|
+----------------+----------------+----------------+----------------+
|178,186,188,183,|174,169,183,202,|198,200,202,203,|203,202,202,202,|
|168,180,189,185,|166,130,132,172,|199,202,200,201,|201,201,202,202,|
|170,180,180,173,|150,119,110,131,|174,197,198,199,|199,201,202,202,|
|180,180,171,158,|131,138,127,111,|131,167,197,206,|202,202,203,203,|
+----------------+----------------+----------------+----------------+
|178,179,184,165,|104,124,137,128,|114,124,167,208,|207,204,203,202,|
|173,180,196,187,|151,129,122,130,|120,110,124,159,|194,201,202,202,|
|176,197,203,207,|204,162,121,114,|124,123,110,116,|155,189,200,200,|
|188,208,202,204,|211,204,163,119,|115,132,128,116,|117,152,186,197,|
+----------------+----------------+----------------+----------------+
|206,200,213,203,|199,201,203,191,|138,116,122,123,|119,108,133,179,|
|206,200,199,202,|202,205,207,212,|189,144,119,121,|121,118,116,136,|
|206,201,185,201,|210,207,208,209,|209,207,164,116,|115,127,122,115,|
|214,202,185,210,|209,207,208,208,|210,222,204,163,|118,117,129,129,|
+----------------+----------------+----------------+----------------+

    

          

        可以看出,剛好是移動了7個像素. 以上就是幀間預測的基本原理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章