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.mzph.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…