博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
H.264中IPCM宏块简介
阅读量:4142 次
发布时间:2019-05-25

本文共 754 字,大约阅读时间需要 2 分钟。

       在H.264中,一个宏块包括16*16个像素,I宏块有三种形式:

 

       1. 16个I4x4编码方式组成的宏块(为了方便,简称I4x4方式的宏块);

       2. I16x16宏块;

       3. IPCM宏块(特殊)

 

 

       为什么一个宏块有时要分成16个I4x4方式的宏块呢?

       因为分块越细,就越准确。

       所以I4x4编码方式适合编码那些纹理比较复杂的宏块,而I16x16编码方式就更加笼统,适合编码那些比较平滑的区域.

 

      在实验中也可以看出来:

      用JM8.6编码foreman视频,用H.264visa分析码流,可以发现,在第一帧中,只有5个I16x16宏块,而这5个宏块所在区域都非常平坦,像素值几乎没有什么差异.

 

      最特别的是IPCM宏块,这种宏块的脾气很古怪:

      a.不预测

      b. 没残差

      c. 不变换

      d.无量化等操作

 

     那怎么玩呢?它是直接传像素值,直接将最原始的yuv数据写入到码流中,可见IPCM的信息不会有任何损失,是完全无损的.

 

       想象一下:

      如果将视频的所有宏块都编码成IPCM宏块,会怎样呢?

      显然,此时H.264就是一个无损编码。

      当然,在现实中,很少有人这么做.

 

      那么,为什么要引入IPCM宏块呢?原因如下:

      (1). 在某些特别的情况下(这种情况极少),某种编码方式并不是data compressor而是data expander, 这时候,与其进行复杂的变换,还不如直接传输原始yuv数据;

      (2). 传输宏块所需要的代价有了一个上限,最大限度不得超过IPCM编码方式;

      (3).  该宏块可以实现无失真传输,从理论上来讲,H.264可以实现无失真传输.

 

      看最后一个问题:

      一般来说,如果视频的静止区域少,那么,在视频中,有如下关系式:

      I4x4方式的宏块数目 > I16x16宏块的数目 > IPCM宏块的数目.

 

 

转载地址:http://sczti.baihongyu.com/

你可能感兴趣的文章
svn out of date 无法更新到最新版本
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>
NGINX
查看>>
Qt文件夹选择对话框
查看>>
1062 Talent and Virtue (25 分)
查看>>
1061 Dating (20 分)
查看>>
1060 Are They Equal (25 分)
查看>>
83. Remove Duplicates from Sorted List(easy)
查看>>
88. Merge Sorted Array(easy)
查看>>
leetcode刷题191 位1的个数 Number of 1 Bits(简单) Python Java
查看>>
leetcode刷题198 打家劫舍 House Robber(简单) Python Java
查看>>
NG深度学习第一门课作业2 通过一个隐藏层的神经网络来做平面数据的分类
查看>>
leetcode刷题234 回文链表 Palindrome Linked List(简单) Python Java
查看>>