图像视频基础

参考学习资料:https://blog.csdn.net/qq_28258885/article/details/116192244

文章目录

        • 图像
          • 颜色深度
          • 分辨率
        • 视频
          • 帧率
          • 比特率
          • 帧类型
          • 消除冗余的方法
            • 时间冗余(帧间预测)
            • 空间冗余(帧内预测)
          • 视频编码器
            • 1.分区
            • 2.预测
            • 3.转换
            • 4.量化
            • 5.熵编码
        • YUV模型
          • 色度子采样

图像

颜色深度

存储颜色的强度,需要占用一定大小的数据空间,这个大小被称为颜色深度。假如每个颜色的强度占用 8 bit(取值范围为 0 到 255,即 2 8 2^8 28),那么颜色深度就是 24(8*3)bit(因为RGB三个颜色),我们还可以推导出我们可以使用 2 24 2^{24} 224种不同的颜色。

分辨率

即一个平面内像素的数量。通常表示成宽*高

视频行业常见的分辨率,我们比较熟悉的360P (640x360)、720P (1280x720)、1080P (1920x1080)、4K (3840x2160)、8K (7680x4320)

我发现宽都是高的1.77777倍

视频

帧率

帧率(FRames rate)= 帧数(Frames)/时间(Time)

若单位时间为秒,则等同于 FPS (每秒帧数 Frames Per Second)。

比特率

即常说的码率

比特率 = 宽 * 高 * 颜色深度 * 帧每秒

例如,一段每秒 30 帧,每像素 24 bits,分辨率是 480x240 的视频,如果我们不做任何压缩,它将需要 82,944,000 比特每秒或 82.944 Mbps (30x480x240x24)。

  • 对于一个单独的一小时长的视频,分辨率为1080p 和 30fps 的视频

  • 每幅图片的大小为: 1920 x 1080 x 24 / 8 ≈ 5.93MB(图片大小计算公式=分辨率*位深/8)

  • 一小时的视频大小为:5.93 * 30 * 3600=640440MB ≈625GB

所以要压缩,消除冗余

为此,我们可以

利用视觉特性:和区分颜色相比,我们区分亮度要更加敏锐。

时间上的重复:一段视频包含很多只有一点小小改变的图像。

图像内的重复:每一帧也包含很多颜色相同或相似的区域。

我们的眼睛对亮度比对颜色更敏感

帧类型

在介绍去除冗余的方法前,需要了解帧类型。

I帧(帧内,关键帧)

P帧(预测)

P 帧利用了一个事实:当前的画面几乎总能使用之前的一帧进行渲染

实际情况中,一般使用一个I帧多个P帧。但是P帧不能太多,因为离上一个I帧越远,预测难度就越大,丢失的信息也就越多

B帧(双向预测)

引用前面和后面的帧去做更好的压缩

image-20230703184304329

消除冗余的方法
时间冗余(帧间预测)

image-20230704102443344

我们可以做个减法,我们简单地 0 号帧减去 1 号帧,得到残差,这样我们就只需要对残差进行编码

在这里插入图片描述

但我们有一个更好的方法来节省数据量。
首先,我们将0 号帧 视为一个个分块的集合,然后我们将尝试将 帧 1帧 0 上的块相匹配。我们可以将这看作是运动预测

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

在这里插入图片描述

我们预计那个球会从 x=0, y=25 移动到 x=6, y=26xy 的值就是运动向量进一步节省数据量的方法是,只编码这两者运动向量的差。所以,最终运动向量就是 x=6 (6-0), y=1 (26-25)

实际情况下,这个球会被切成 n 个分区,但处理过程是相同的。

帧上的物体以三维方式移动,当球移动到背景时会变小。当我们尝试寻找匹配的块,找不到完美匹配的块是正常的。这是一张运动预测与实际值相叠加的图片。

在这里插入图片描述

但我们能看到当我们使用运动预测时,编码的数据量少于使用简单的残差帧技术

在这里插入图片描述

空间冗余(帧内预测)

如果我们分析一个视频里的每一帧,我们会看到有许多区域是相互关联的

image-20230704102904343

image-20230704102915073

视频编码器

是什么?就是用于压缩或解压数字视频的软件或硬件

1.分区

image-20230704101825305

有许多原因,比如,当我们分割图片时,我们可以更精确的处理预测,在微小移动的部分使用较小的分区,而在静态背景上使用较大的分区。

通常,编解码器将这些分区组织成切片(slices )或条带(tiles),宏(或编码树单元)和许多子分区。
这些分区的最大大小有所不同,HEVC 设置成 64x64,而 AVC 使用 16x16,但子分区可以达到 4x4 的大小。

2.预测

一旦我们有了分区,就可以在它们之上做出预测。

  • 对于帧间预测,我们需要发送运动向量和残差
  • 对于帧内预测,我们需要发送预测方向和残差
3.转换
4.量化

有损的

5.熵编码

在我们量化数据(图像块/切片/帧)之后,我们仍然可以以无损的方式来压缩它。有许多方法(算法)可用来压缩数据。
熵编码技术是视频编码技术中基础性关键技术,在经典编码框架中处于系统末端,负责对编码过程中的变换系数、运动矢量等信息进行熵编码,并完成最终编码码流的组织。

熵编码目标是利用信息熵原理进行数据的最终压缩,去除信源符号在信息表达上的冗余。

YUV模型

有一种模型将亮度(LUMA)和色度(cb,cr)分离开,它被称为 YUV模型

我们的眼睛对亮度比对颜色更敏感

image-20230703181800235

色度子采样

一旦我们能从图像中分离出亮度和色度,我们就可以利用人类视觉系统对亮度比色度更敏感的特点,选择性地剔除信息。色度子采样是一种编码图像时,使色度分辨率低于亮度的技术。

image-20230703182100490

四个亮度像素共享一个色度像素

现代编解码器中使用的常用方案是: 4:4:4 (没有子采样), 4:2:2, 4:2:0,

image-20230703183649449

第二个参数代表第一行分成几块

第三个参数代表第二行分成几块

如果我们使用 YCbCr 4:2:0 我们能减少一半的大小

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

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

相关文章

HCIP-Cloud Service Solutions Architect v3.0

华为职业认证hcip解决方案架构师v3.0 新增题库200题 HCIP-Cloud Service Solutions Architect v3.0 1.关于创建数据盘镜像的约束条件,以下说法错误的是? A.使用云服务器的数据盘创建数据盘镜像时,要确保该云服务器必须有系统盘 B.通过外部文件…

爬虫入门指南(4): 使用Selenium和API爬取动态网页的最佳方法

文章目录 动态网页爬取静态网页与动态网页的区别使用Selenium实现动态网页爬取Selenium 的语法及介绍Selenium简介安装和配置创建WebDriver对象页面交互操作 元素定位 等待机制页面切换和弹窗处理截图和页面信息获取关闭WebDriver对象 使用API获取动态数据未完待续.... 动态网页…

Java 泛型进阶

目录 一、什么是泛型 二、引出泛型 1、语法 四、泛型类的使用 1、语法 2、示例 3、类型推导(Type Inference) 4、裸类型(Raw Type) (了解) (1)说明 五、泛型如何编译的 1、擦除机制 2、为什么不能实例化泛型类型数组 …

CRM的哪些功能对企业最有用?

企业如何在竞争激烈的市场环境中,提高销售效率,管理客户关系,实现业绩增长?适合的CRM客户管理系统就可以帮助很多。Zoho CRM是一款SaaS云端CRM系统,它能够帮助企业管理客户关系,提高销售效率,获…

2023牛客网秋招国内大厂最牛的 Java 面试八股文合集(全彩版)

秋收即将来临,找工作的小伙伴比比皆是,很对小伙伴早早的就开始储备技术,准备秋招面试了。 为了帮助小伙伴更好的应对面试,我拉来十几个大佬,汇总一线大厂的情况,给你整了一套超全的面试资料: 16…

测试进阶面试必问12个算法题,洞悉出题思路,拿的就是高薪!

可以明确的一点是,面试算法题目在难度上(尤其是代码难度上)会略低一些,倾向于考察一些基础数据结构与算法,对于高级算法和奇技淫巧一般不作考察。 代码题主要考察编程语言的应用是否熟练,基础是否扎实&…

SQL方言:传统关系型数据库下的方言对比

前言&#xff1a; 技术多元化是一个趋势&#xff0c;多语言并存&#xff0c;多数据库适配&#xff0c;多环境兼容>< 场景&#xff1a; 当从SQL Server数据库迁移到MySql数据库或者Oracle数据库&#xff0c;甚至国产化数据库&#xff0c;不同数据库之间可以自定义切换&…

基于物联网、云计算建设的智慧校园云平台源码

电子班牌作为班级文化展示交流的窗口&#xff0c;可以让更多的人看到校园信息建设与班级风格相结合&#xff0c;及时传递校园信息。学生也可以通过电子班牌看到学校近期重要事件的发布&#xff0c;也可以参与回复&#xff0c;让学生及时掌握校园和班级动态。同时&#xff0c;还…

Middleware ❀ Zookeeper功能与使用详解

文章目录 1、功能简述1.1 服务目标1.2 文件系统 - 树状结构1.3 数据节点Znode类型1.4 变更通知 - Watcher1.4.1 工作机制1.4.1.1 Client注册1.4.1.2 Server处理1.4.1.3 Client回调 1.4.2 监听特性 1.5 权限控制 - ACL1.5.1 模式 - scheme1.5.2 权限 - Permission 1.6 选举机制1…

Python获取某品牌加盟数据采集实现可视化数据分析

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 开发环境 : python 3.8 运行代码 pycharm 2022.3 辅助敲代码 jupyter 数据分析使用软件 模块使用 &#xff1a; requests 数据请求模块 需要安装 parsel 数据解析模块 csv pandas pyecharts 第三方模块安装&#xf…

小程序开发:了解主流的开发框架

小程序是一种不需要下载安装&#xff0c;即点即用的应用程序&#xff0c;可以在微信小程序商店下载。如果你使用过微信的公众号和小程序&#xff0c;你会发现&#xff0c;小程序的使用和公众号、小程序是一样的。因此&#xff0c;从某种程度上说&#xff0c;小程序也是公众号的…

mac上使用brew安装mysql5.7

使用Homebrew进行MySQL数据库的安装需要MacOS系统中已经安装了相关环境 1.查询软件信息 首先使用search命令搜索MySQL数据库完整名称&#xff1a; brew search mysql可以看到5.7版本的MySQL数据库完整名称是mysql5.7 2. 执行安装命令 使用install命令进行软件安装&#xf…