视频编解码 — 帧内预测

news2024/11/18 20:02:49

目录

帧内预测

块大小

帧内预测模式

4x4 亮度块的帧内预测模式(9种)

16x16亮度块的帧内预测模式

8x8色度块的帧内预测模式

帧内预测模式的选择

率失真优化


帧内预测

一张图像中相邻像素的亮度和色度信息是比较接近的,并且亮度和色度信息也是逐渐变化的,不会出现突变。

帧内预测是利用已经编码的像素值来预测待编码的像素值,达到减少空间冗余。已经编码的像素值变成码流,编码的像素会重建成重建像素,用来做之后待编码块的参考像素值。即,已经编码的块会解码成像素用来做参考像素

块大小

不同块大小的帧内预测模式

H264 标准里,块分为宏块和子块,宏块的大小是 16x16(YUV 4:2:0 图像亮度块为 16x16 色度块为 8x8)

在帧内预测中,亮度宏块可以继续划分成16个 4X4的子块(因为图像中细节很多,需要划分更小的块来做预测会更精细)

        1、宏块大小是 16x16,其中亮度块为 16x16,色度块为8x8

        2、帧内预测中亮度块和色度块是分开独立进行预测

        3、16x16 的亮度块可以继续划分为 16个4x4的子块

所以需要预测的有 4x4亮度块,16x16亮度块,8x8色度块的预测。

帧内预测模式

4x4 亮度块的帧内预测模式(9种)

1,Vertical模式:当前编码块的每一列的像素值,都是复制上边已经编码块最下面的行对应的值。

        计算公式如下

pred[x,y] = p[x,-1] 条件x,y = 0..3

        垂直模式预测示意图如下

        以下模式于此类似

2,Horizontal 模式:

        当前编码块的每一列的像素值,都是复制左边已经编码块最右边的行对应的值。

3,DC模式:

        当前编码亮度块的每一个像素值,是上边已经编码块的最下面那一行和左边已编码块右边最后一列的所有像素值的平均值。

4,Diagonal Down-Left 模式

        上边块和右上块的像素通过插值得到

5、Diagonal Down-Right 模式

        模式需要通过上边块、左边块和左上角对角的像素通过插值得到

6、Vertical-Right 模式

        模式是需要通过上边块、左边块以及左上角对角的像素插值得到的

7、Horizontal-Down 模式

        模式需要通过上边块、左边块以及左上角对角的像素插值得到

8、Vertical-Left模式

        需要通过上边块和右上块最下面一行的像素通过插值得到

9,Horizontal-Up模式

        通过左边块的像素通过插值得到

16x16亮度块的帧内预测模式

        四种,Vertical模式,Honrizontal模式,DC模式和Plane模式

8x8色度块的帧内预测模式

        DC模式,Vertical模式,Horizontal模式,Plane模式

帧内预测模式的选择

以亮度块为例。一个16x16的亮度块,直接使用4种16X16的帧内预测模式,也可以使用9种16个4x4的子块

对于每一个块或者子块,先得到预测块,再用实际待编码的块减去预测块就可以得到残差块。

三种模式得到最优预测模式

1、先对每一种预测的残差块的像素值求绝对值再求和,成为cost,然后取其中残差块绝对值之和最小的预测模式成为最优预测模式;

2、对残差块先进行Hadamard变换,变换到频域后再求绝对值求和,称为cost,然后取cost最小的预测模式为最优预测模式;

3、对残差块直接进行DCT变换 量化熵编码,计算得到失真大小和编码后的码流大小。然后通过率失真化的方法来选择最优预测模式;

率失真优化

        预测后经过DCT变换再量化会丢失高频信息。一般来说QP越大,丢失的信息越多,失真就越大,但是码流大小也越小;反之,QP越小,丢失的信息越少,但是码流大小就越大。一般会在失真和码流大小之间平衡,找到在一定码率下,失真最小的模式作为最优的预测模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【windows】实战部署一(安装)SVNserver服务端+SVNclient客户端

1、环境准备 下载SVNserver https://www.visualsvn.com/server/download/ 下载SVNclient https://tortoisesvn.net/downloads.html 语言包位置: 2、安装SVNserver 1、下载后运行msi文件: 2、点击Next下一步: 3、勾选同意,点…

雷达SAR成像仿真的应用(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

window 下兼容多各低版本的chrome测试

分享我做前端浏览器版本兼容测试遇到Chrome不能多版本共存,存在高版本覆盖低版本问题的解决方案,这个方法不影响Windows系统内已安装的Chrome下载你想要的chrome版本,我是在这里找寻下载版本的:https://www.chromedownloads.net/c…

大数据生态圈及分布式文件系统HDFS实践part2

前言 问题引入 (这是以前讲课的时候,给学生准备的一些问题,大家可以思考一下,对理解HDFS很有帮助) 1、如果一个文件中有10个数值(一行一个,并且都是可以用int来度量), …

关于我在uni-app练手中遇到的坑

目录 页面层级结构的加载和回退 filePath编码 对象的深度克隆 弹幕的加载 ​编辑 uni-app内置浏览器加载视频失败 后台报错 java.io.IOException: 你的主机中的软件中止了一个已建立的连接 安卓里遍历uni-list-item错误 手机自带浏览器无法加载视频 乱码问题 video中…

陆地卫星计划:卫星图像数据和波段介绍

陆地卫星计划:卫星图像数据和波段 学分:美国地质调查局(地球上陆地卫星8号图解) 陆地卫星项目:超过40年的图像采集 想象一下,能够在任何给定的地点,在任何给定的时间回顾四十年,并…

操作系统之内存管理

文章目录一、 虚拟内存二、内存分段三、内存分页多级页表TLB四、段页式内存管理五、Linux 内存管理一、 虚拟内存 单片机是没有操作系统的,所以每次写完代码,都需要借助工具把程序烧录进去,这样程序才能跑起来。 另外,单片机的 C…

基于单片机的出租车计价器设计

✅作者简介:嵌入式领域优质创作者,博客专家 ✨个人主页:咸鱼弟 🔥 系列专栏:单片机设计专栏 📃推荐一款求职面试、刷题神器👉注册免费刷题 一、主要功能 本课程设计所设计的出租车计价器的主要功…

python数据结构 操作指南(列表、元组、字典、集合)

数据结构是在python程序运行中必不可少的一部分,在深度学习应用,更是常用来存储模型输出的信息,小编在深度学习开发中过程中,发现有时候我们需要对数据结构中存储的信息,进行复合的条件的筛选,并返回特定的…

python高阶函数心得笔记,python高阶函数知识

递归函数 <1>什么是递归函数 通过前面的学习知道一个函数可以调用其他函数。 如果一个函数在内部不调用其它的函数&#xff0c;而是自己本身的话&#xff0c;这个函数就是递归函数。 <2>递归函数的作用 举个例子&#xff0c;我们来计算阶乘 n! 1 * 2 * 3 * .…

python 绘制BA图, 绘制Bland-Altman, 两个连续变量的一致性分析

一致性分析 分析数据一致性时常用的方法如下&#xff1a; 方法数据类型ICC组内相关系数定量或者定类Kappda一致性系数定类&#xff08;分级&#xff09;Bland-Altman图&#xff08;BA图&#xff09;定量数据 Bland-Altman 常用于生物医学研究论文中评价 两种连续变量测量方法…

MySQL MVCC工作原理

之前的文章中我们讲到&#xff0c;MySQL事务的隔离级别有四种分别是&#xff1a;read uncommitted、read committed、repeatable read和serializable。现在InnoDB下默认的存储引擎是repeatable read&#xff0c;之前也提过在repeatable read下MySQL是通过MVCC来解决幻读的问题。…

Dubbo服务调用扩展点Filter的介绍与使用

扩展点介绍 如上图所示&#xff0c;从服务调用的角度来看&#xff0c;Dubbo 在链路中提供了丰富的扩展点&#xff0c;覆盖了负载均衡方式、选址前后的拦截器、服务端处理拦截器等。 简单来说 Dubbo 发起远程调用的时候&#xff0c;主要工作流程可以分为消费端和服务端两个部分。…

Linux网络--------http协议

文章目录URL---网址对http协议的宏观认识http协议的请求方法http响应的状态码最简单的http协议服务器关于http协议的一些概念性知识URL—网址 首先&#xff0c;http协议是应用层协议&#xff0c; 是超文本传输协议。 urlencode : 转码 urldecode &#xff1a; 解码 将 ---- …

python自学入门(打卡十)2022-11-22

Pytest与Unittest区别 参考资料&#xff1a;https://blog.csdn.net/qq_33385691/article/details/112004487 pytest用例规则 文件名以test_.py文件和test.py 以test_开头的函数 以Test开头的类&#xff0c;test_开头的方法&#xff0c;并且不能带有__init_ 方法 所有的包pake…

极智AI | 昇腾开发环境搭建 CANN MindStudio (无坑版)

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多笔记分享 大家好&#xff0c;我是极智视界&#xff0c;本文介绍一下 昇腾开发环境搭建 CANN & MindStudio&#xff0c;没有坑。 本文介绍的方法适用于&#xff1a; 系统&#xff1a;ubuntu18.04 (注&#xff1a;[ce…

5个常见的JavaScript内存错误

JavaScript 不提供任何内存管理操作。相反&#xff0c;内存由 JavaScript VM 通过内存回收过程管理&#xff0c;该过程称为垃圾收集。 既然我们不能强制的垃圾回收&#xff0c;那我们怎么知道它能正常工作&#xff1f;我们对它又了解多少呢&#xff1f; 脚本执行在此过程中暂停…

计算机毕业设计之java+ssm某地区精准扶贫网站

项目介绍 本精准扶贫网站管理系统主要包括系统用户管理模块、捐赠信息管理模块、投诉信息管理、扶贫资讯管理、登录模块、和退出模块等多个模块,系统采用了jsp的mvc框架,SSM(springMvcspringMybatis)框架进行开发,本系统使用mysql&#xff0c;独立运行,不依附于其他系统&#…

Redis数据类型之set

文章目录setⅠ. 基础操作Ⅱ. 随机数据Ⅲ. 交、并、差Ⅳ. 应用场景Ⅴ. 注意事项提示&#xff1a;以下是本篇文章正文内容&#xff0c;Redis系列学习将会持续更新 set ● 数据存储需求&#xff1a;存储大量的数据&#xff0c;在查询方面提供更高的效率。 ● 需要的存储结构&#…

家乡主题网页设计代码 旅游主题网页设计 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…