视频基础学习四——视频编码基础一(冗余信息)

文章目录

  • 前言
  • 一、编码压缩的原理
    • 1.空间冗余
      • 帧内预测
    • 2.时间冗余
      • 帧间预测
        • 运动估计
        • 运动补偿
    • 3.编码冗余
    • 4.视觉冗余
  • 二、压缩编码的流程
    • 1.编码器
    • 2.编解码流程
  • 总结


前言

上一篇文章介绍了视频帧率、码率、与分辨率。也介绍了为什么需要对视频进行压缩,因为720P、rgb24编码格式、25帧、1s的视频大小为
1280 ∗ 720 ∗ 3 / 1024 / 1024 ∗ 25 ∗ 1 = 65.75 M B 1280∗720∗3/1024/1024∗25∗1=65.75MB 12807203/1024/1024251=65.75MB
这无疑是很大的内存。

一、编码压缩的原理

视频编码就是为了去除视频帧之间大量的冗余信息,而视频图像中的冗余信息有以下几种:

  • 空间冗余:图像相邻像素之间有较强的相关性
  • 时间冗余:视频序列的相邻图像之间内容相似
  • 编码冗余:不同像素值出现的概率不同
  • 视觉冗余:人的视觉系统对某些细节不敏感
  • 知识冗余:规律性的结构可由先验知识和背景知识得到

压缩技术就是将这些冗余信息去掉,去除数据之间的相关性,包含帧内图像数据压缩技术、帧间图像数据压缩技术和熵编码压缩技术

下面就以这张动态图来进行介绍这几种冗余
在这里插入图片描述

1.空间冗余

我们从这个图片中选中一块区域进行放大,提取像素点在这里插入图片描述
可以看到,相邻像素点之间几乎全部一模一样,这个也就是空间上的相似性,空间信息的冗余。
那么如何进行压缩呢,这里就有一种办法叫做帧内预测

帧内预测

我们预测:在一帧当中,颜色在垂直方向上保持一致,这种预测意味着未知像素颜色与近邻像素相同,看下图
在这里插入图片描述
但是这种预测是错误的,因为该表单中,最右下角的像素颜色不是(255,255,51),而应该是(255,255,204),这个时候我们通过减去实际值,算出残差,这样的数据就更容易压缩
在这里插入图片描述
同样,我们可以通过这个残差预测距离这个残差相邻的数据是什么样的像素

2.时间冗余

时间冗余信息是发生在相邻帧之间的,比如下面一张图片。
在这里插入图片描述
这两张图片具有很大的相似,随着时间的改变,除了海绵宝宝动作在变,背景是一直都没有变化的。
在时间上就构成了像素的相关性,这个就是时间冗余,通过帧间预测的方法可以进行压缩这种冗余信息。

帧间预测

帧间预测是利用视频时域的相关性,使用邻近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。
帧间预测具有两大内容:运动估计(运动搜索、亚像素插值和运动矢量)、运动补偿

运动估计

运动估计是以当前图像的像素块在之前已编码的图像中寻找到最佳的一个匹配块。从而提取到当前图片的运动信息。

比如以当前帧减去上一帧(参考帧),留下的残差就可以视为一个匹配块,当然实际上是远比这要复杂的,最直接的方法是为每个像素指定一个运动向量,但是这种基于像素的运动表示法会有很高的数据量,为了降低这种复杂度,可以将图像分为不同大小的像素块,只有块大小选择合适,每个块的运动参数可以独立进行估计,这就是基于块的运动表示法

运动补偿

运动补偿:一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)差别的方法,具体来说是描述前面一帧的每个小块怎样移动到当前帧中的某个位置去。

假使现在一个像素块在t时间坐标为x,t+1时间坐标在x+1,那么我们可以预测下一时间t+2该像素块在x+2位置。
在这里插入图片描述

3.编码冗余

这个纯纯是一种数据运算了,在视频基础学习二——图像深度与格式(RGB与YUV)这篇文章里面,曾介绍过YUV格式,也曾提到过YUV的出现可以大大减少编码存储内存,人眼对于Y分量也就是明度感知最为明显,对于UV分量反而不明显,所以就可以丢弃一些UV分量,而加大Y分量的数据,同时分析Y分量的频率进行压缩。

其中Y分量,也就是明度通过RGB进行转换为
Y = 0.299 R + 0.587 G + 0.114 B ; Y = 0.299R + 0.587G + 0.114B; Y=0.299R+0.587G+0.114B;

其中在编码中又把明度和RGB的关系进行了分级,叫做灰度级,通常分成了0~255个级别
在这里插入图片描述
那么灰度值怎么对于编码压缩提到了帮助呢?这里就用到的数学公式,有兴趣的可以看看博主这边从别的文章中进行摘录过来的

对于图像来说,可以假设一个离散随机变量表示图像的灰度级,并且每个灰度级(rk)出现的概率为pr
在这里插入图片描述

这里L是灰度级数,nk是第k个灰度级在图像中出现的次数, n是图像中的像素总数。如果用于表示每个rk值的比特数为 l(rk),則表达每个像素所需的平均比特数为:
在这里插入图片描述

就是说,将表示每个灰度级值所用的比特数和灰度级出现的概率相乘,将所得乘积相加后得到不同灰度级值的平均码字长度。如果某种编码的平均比特数越接近熵,則编码冗余越小。

4.视觉冗余

视觉冗余:人类的视觉系统由于受生理特性的限制,对于图像场的注意是非均匀的,人对细微的颜色差异感觉不明显。

上面说了人们对于一张图片的明度进行了分级,即灰度级,范围是0~255级,而人类的视觉一般分辨的能力只有26灰度等级,而一般的图像量化采用的是28灰度级。会存在视觉上的冗余,比如下面的图片

在这里插入图片描述
最左边的图显示了一张存在0~255种灰阶的图片,中间则是经过了量化为16种灰度级的图片,通过改进后,减少了假轮廓和颗粒后(IGS标准量化方法)生成的最右边的图像。

值得注意的是,这是一种不可逆的操作,必定会造成定量信息的损失

二、压缩编码的流程

综上所诉,编码器大概压缩过程和编解码器的流程就像下面两张图一样

1.编码器

代码如下(示例):

在这里插入图片描述

2.编解码流程

在这里插入图片描述


总结

其实这边文章并没有介绍实际编码应用中使用到的一些技术,而是偏向编码原理的一些知识,但是我个人还是认为知道这些知识还是非常有意义的,那么下一篇会介绍实际编码中的一些知识。

如果对您有所帮助,请帮忙点个赞吧!

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

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

相关文章

计算机网络-HTTP相关知识-RSA和ECDHE及优化

HTTPS建立基本流程 客户端向服务器索要并验证服务器的公钥。通过密钥交换算法(如RSA或ECDHE)协商会话秘钥,这个过程被称为“握手”。双方采用会话秘钥进行加密通信。 RSA流程 RSA流程包括四次握手: 第一次握手:客户…

OpenCV项目实战-深度学习去阴影-图像去阴影

往期热门博客项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 //正文开始! 图…

备战蓝桥杯---贪心刷题1

话不多说&#xff0c;直接看题&#xff1a; 本质是一个数学题&#xff1a; 我们令xi<0表示反方向传递&#xff0c;易得我们就是求每一个xi的绝对值之和min,我们令平均值为a爸。 易得约束条件&#xff1a; x1-x2a1-a,x2-x3a2-a..... 解得x1x1-0,x2x1-((n-1)*a-a2-...an)。…

LLM - 大语言模型 基于人类反馈的强化学习(RLHF)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/137269049 基于人类反馈的强化学习(RLHF,Reinforcement Learning from Human Feedback),结合 强化学习(RL) 和 人类反馈 来优化模型的性能。这种方法主要包…

Jamba: A Hybrid Transformer-Mamba Language Model

Jamba: A Hybrid Transformer-Mamba Language Model 相关链接&#xff1a;arXiv 关键字&#xff1a;hybrid architecture、Transformer、Mamba、mixture-of-experts (MoE)、language model 摘要 我们介绍了Jamba&#xff0c;一种新的基于新颖混合Transformer-Mamba混合专家&am…

xilinx fpga程序固化

一、前言 xilinx 旗下的产品主要有包含有处理器的SOC系列&#xff0c;也有只有纯逻辑的fpga&#xff0c;两者的程序固化的方法并不相同&#xff0c;本文介绍只包含纯逻辑而不涉及处理器的fpga的代码固化。 二、固化流程 将工程综合&#xff0c;实现&#xff0c;并得到比特流…

MYSQL-7.内存

内存 Mysql的内存结构 大体可分为四个板块&#xff1a;mysql工作组件、线程本地内存、mysql共享内存、存储引擎缓冲区&#xff1b; Mysql server工作组件 对应着mysql架构图中的组件层&#xff1a; Mysql在启动时&#xff0c;会将这些工作组件初始化到内存中&#xff1b; …

【Vscode】无法将“python,pip,node,npm等”识别为cmdlet...问题

问题出现场景 新换个电脑&#xff0c;然后重新安装了软件&#xff0c;又复现一次又一次“老生常谈”的问题。 解决方法 网络答案吧五花八门&#xff0c;我采取一个我的场景解决可行的方案&#xff0c; 首先我的场景是&#xff0c;环境变量&#xff0c;配置路径都是没有问题…

抖音视频关键词批量下载工具|视频爬虫采集软件

抖音视频批量提取工具&#xff0c;搜索即下载&#xff0c;轻松获取所需视频&#xff01; 正文&#xff1a; 想要轻松获取抖音上的精彩视频吗&#xff1f;现在&#xff0c;有了我们的抖音视频批量提取工具&#xff0c;一切变得简单易行&#xff01;Q:290615413无论是针对特定关…

基于Pytorch+昇腾NPU部署baichuan2-7B大模型

一、模型介绍 Baichuan 2 是百川智能推出的新一代开源大语言模型&#xff0c;采用 2.6 万亿 Tokens 的高质量语料训练。Baichuan 2 在多个权威的中文、英文和多语言的通用、领域 benchmark 上取得同尺寸最佳的效果。 它基于 Transformer 结构&#xff0c;在大约1.2万亿 tokens…

c++20协程详解(一)

前言 本文是c协程第一篇&#xff0c;主要是让大家对协程的定义&#xff0c;以及协程的执行流有一个初步的认识&#xff0c;后面还会出两篇对协程的高阶封装。 在开始正式开始协程之前&#xff0c;请务必记住&#xff0c;c协程 不是挂起当前协程&#xff0c;转而执行其他协程&a…

pygame--坦克大战(二)

加载敌方坦克 敌方坦克的方向是随机的&#xff0c;使用随机数生成。 初始化敌方坦克。 class EnemyTank(Tank):def __init__(self,left,top,speed):self.images {U: pygame.image.load(img/enemy1U.gif),D: pygame.image.load(img/enemy1D.gif),L: pygame.image.load(img/e…

clickhouse sql使用2

1、多条件选择 multiIf(cond_1, then_1, cond_2, then_2, …, else) select multiIf(true,0,1) 当第一条件不成立看第二条件判断 第一个参数条件参数&#xff0c;第二参数条件成立时走 2、clickhouse 在计算时候长出现NaN和Infinity异常处理 isNaN()和isInfinite()处理

免费图片转excel方案大全

随着信息技术的发展&#xff0c;我们经常会遇到需要将图片中的数据转换成Excel表格的情况。这种需求在数据分析、报表制作、信息整理等领域尤为常见。然而&#xff0c;许多人在面对这一任务时感到困惑&#xff0c;不知道如何进行。本文将为大家介绍几种免费的图片转Excel方案&a…

【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 如何在Qt中打印日志 | qDebug的使用 文章编号&#xff1a;Qt 学习笔记…

路径规划——搜索算法详解(七):D*lite算法详解与Matlab代码

&#xff01;&#xff01;&#xff01;注意&#xff01;&#xff01;&#xff01; 看本篇之前&#xff0c;一定要先看笔者上一篇的LPA*讲解&#xff0c;笔者统一了符号看起来过渡会更加好理解&#xff01; 到目前为止&#xff0c;我们学习了广度优先搜索Dijkstra算法、能够计…

基于深度学习的日常场景下的人脸检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文详细介绍基于YOLOv8/v7/v6/v5的日常场景下的人脸检测&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及基于Streaml…

AWS-EKS 给其他IAM赋予集群管理权限

AWS EKS 设计了权限管理系统&#xff0c;A用户创建的集群 B用户是看不到并且不能管理和使用kubectl的&#xff0c;所以我们需要共同管理集群时就需要操场共享集群访问给其他IAM用户。 两种方式添加集群控制权限&#xff08;前提&#xff1a;使用有管理权限的用户操作&#xff…

【c++】类和对象(七)

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章来到类和对象的最后一部分 目录 1.static成员1.1特性 2.友元2.1引入&#xff1a;<<和>>的重载2.2友元函数2.3友元类 3.内部类4.匿名对象5.拷…

聚观早报 | 蔚来推出油车置换补贴;iPhone 16 Pro细节曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月02日消息 蔚来推出油车置换补贴 iPhone 16 Pro细节曝光 小米SU7创始版第二轮追加开售 OpenAI将在日本设立办事…