H264学习(二)编码方法和编码工具简介
H264 FRExt
- H264最初版本只支持8bit量化,4:2:0色度采样,后来有一些应用 要求数据精度超过8bit/sample;色度要求使用4:2:2或者4:4:4;高分辨率或超高分辨率编码;超高保真度或部分无损编码。04年出现了fidenlity range extension
H264编码方法
- 采用块结构的混合编码框架,整个结构分为网络抽象层(NAL)和视频编码层(VCL)
- 每一帧分为一个或多个条带slice,每个条带包含多个宏块
- 宏块是H264基本编码单元
- H264对宏块的编码
- 宏块编码提供了更灵活的编码方式,相比于之前一个宏块或半个宏块的编码方式,提供了更高的预测精度
- 每一个宏块分割成多种不同大小的子块进行预测
- 帧内预测采用的块大小可能为16*16或者4*4
- 帧间预测或者运动补偿采用的块有7中不同的形状:16*16;8*8;16*8;8*4;4*8;4*4;8*16
- 针对预测残差数据进行变换编码的变换块大小为4*4或者8*8
- 效率更高的熵编码方法:CAVLC和CABAC
H264采用的编码工具
- 帧内预测:
- 根据当前相邻像素可能有相同的性质,利用相邻像素的相关性,采用新的帧内预测模式。使用空间域的左方与上方相邻像素预测当前编码的像素值,只对实际值和预测值的差值进行编码。以往的标准的帧内预测,是直接把像素快的数值进行变换,导致I帧包含大量信息,预测效率不高。MPEG-4、H263帧内预测数据由变换域实现
- 如果一个宏块为帧内宏块,亮度分量有两种分割模式一个是16*16像素块,或者是16个 4*4像素块。对于每个4*4像素块,共有9中预测模式,对于16*16像素块,共定义4中预测模式。
- 宏块中有2个8*8色度分量,有4种预测模式
- 帧间预测
- 采用运动补偿预测的方式
- 支持的帧间预测类型 P slice Bslice
- 更多种的块分割模式:从16*16到4*4 Mtype 16*16(0) 16*8(上0下1) 8*16(左0右1) 8*8(0 1 2 3);8*8type再继续分割成 8*8 8*4 4*8 4*4。每个区域包含自己的运动矢量,当选用区域较大时,用于表示运动矢量和区域选取的数据量减少,但运动补偿后的残差会增大,选用小区域,残差减小,预测更精确,用于表示运动矢量和区域选取的数据量增大。大区域适合反映帧间同质部分,小区域适合表现帧间细节部分。
- 更高的运动矢量精度:亮度MV可达1/4像素 MV的亚像素插值
- 变换和量化编码
- 对图像和残差数据采用4*4整数DCT变换,并不是像MPEG-2和MPEG-4那样采用8×8 DCT 的浮点数变换。
- 采用标量量化
- 扫描顺序:如果块是按帧模式编码的,那么就使用之字形扫描,如果是按场模式编码的,就是用场扫描。
- 无损熵编码
- 熵编码,无损。各种编码信息损失都来自量化
- 经典的熵编码算法:haffman、香浓-费诺编码
- h264针对不同的语法元素制定了不同的熵编码算法:(之前采用)UVLC指数哥伦布编码,CAVLC和CABAC
- 其他技术
- 环路去块滤波器:基于内容的抗块效应滤波器,当边界上两边图像差较小则使用滤波器使差别平滑掉,若边界上图像特征明显则不使用滤波器,这样,既减弱块效应的影响,又避免滤掉图像的内容。同时在相同主观质量下使比特率减小5%-10%。H264对块效应滤波是基于4×4块边界的,16×16的亮度块有4条边界和4条垂直边界进行滤波,而8×8的色度分量只需要对其2条边界和2条垂直边界进行滤波
- 帧/场编码:把一帧图像拆成两场图像,其中一场采用帧内编码,而另一场则利用前一场的信息,进行运动补偿编码,提高压缩效率。在剧烈水平方向运动的场景下,图像的一些部分采用帧模式编码,另一部分采用场模式编码,H264支持在宏块级自适应的场帧编码模式转换。
- SI、Sp帧:switching P和switch I
- 码率控制
- 面向IP和无线环境
- 除了利用量化步长的改变来适应信道码率外,还常利用数据分割的方法来应对信道码率的变化。
- 数据分割的概念是在编码器中生成具有不同优先级的视频数据以支持网络中的服务质量,例如采用基于语法的数据分割(syntaxbaseddatapartitioning,将每帧数据按其重要性分为几部分,允许在缓冲区溢出时丢弃不太重要的信息,还可以采用类似的时间数据分割temporaldatapartitioning)
H264学习(二)编码方法和编码工具简介相关推荐
- AV1标准特色编码工具简介
文章目录 1. 编码单元划分结构 2. 帧内预测技术 3. 帧间预测技术 4. 变换 5. 环内滤波和编码后处理 作为新一代性能优异的开源编码标准,AV1收到越来越多企业的青睐.AV1编码标准继承自G ...
- H264学习二:H.264/AVC编码标准
目录 一. H.264/AVC标准 二. H.264视频编码方法简介 H.264对一个宏块的编码 帧内预测 补充 一. H.264/AVC标准 发起者:ITU-T的VCEG(Video Coding ...
- 二维码 编码原理简介
一.什么是二维码: 二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上) 分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常 ...
- 我的2022和2023(技术总结、开发工具简介和未来展望)
文章目录 前言 1. 常用网址的总结 2. 技术总结 2.1 网络方面的总结 2.1.1 Segmentation:Unet++ 2.1.2 Segmentation:SegFormer 2.1.3 ...
- win7出现多重网络导致的不能上网netsh工具简介
一.问题及解决方案 电脑不能上网,查看网络共享中心显示如下: 身份验证也从计算机验证改成了用户身份验证,但是没有效果. 现象:一个网卡,多重网络.每个网络都能从dhcp服务器获得ip,且ip相同:dn ...
- R语言学习二——工具的使用
R语言学习(二) 本章学习R语言相关开发工具的使用: 软件下载 软件安装 RStudio的使用 R扩展包的安装与载入 容易遇到的问题 一.软件下载(RStudio) Rstudio下载地址 选择免费版 ...
- 条形码和二维码编码解码工具类源码
有一个好的工具,会让你的开发事半功倍.再将讲这个工具类之前,我先给小白补充一点条形码和二维码(以下基础知识选自,我本科阶段的一本教材:<物联网导论>(刘云浩 编著).有对物联网感兴趣的,可 ...
- 学习工作必备的十二款常用在线工具,看完你不收藏算我输【强烈推荐】
大家好,我是辣条. 给大家整理了学习工作必备的十二款常用在线工具,对你有用的话一定要点赞.评论.收藏哦. 目录 在线绘图神器 在线任务管理工具 代码图片神器 在线PS神器 图片超分辨率神器 在线视频剪 ...
- VUE学习(二十一)、Vuex(getters、mapState与mapGetters、mapMutations与mapActions、多组件共享数据、模块化编码)
VUE学习(二十一).Vuex(getters.mapState与mapGetters.mapMutations与mapActions.多组件共享数据.模块化编码) 一.Vuex普通实现求和案例 演示 ...
最新文章
- 程序员自购老板椅被HR搬去老板办公室:不能享受这么好的椅子
- 架构之美(china-pub全国独家首发)
- bzoj2091: [Poi2010]The Minima Game DP
- PHP GD库生成图像的几个函数总结
- 网络情况不稳定 无法连接服务器,提示网络正常无法连接服务器
- QT的QScriptEngineAgent类的使用
- SpringBoot声明式事务
- python的各种推导式(列表推导式、字典推导式、集合推导式)
- 极简短网址-一套简约的短网址程序
- JPA @Lob 存储大文本 org.postgresql.util.PSQLException: 大型对象无法被使用在自动确认事物交易模式。问题...
- HUE与HBase的集成
- 额外参数_Redis的复制参数学习笔记
- Windows xp多国语言包
- PDF怎么翻译成中文?这些方法值得收藏
- android常用机制,11.Android 常见面试题——Binder机制
- 常用测速网站及工具(IPv4/IPv6)
- 关于SAP的用户出口
- 一个Metro风格的开源项目 MahApps.Metro
- likely()与unlikely()函数的作用
- android 阿拉伯数字转汉字,Android将阿拉伯数字转换为英文数字