视频基础学习二——图像深度与格式(RGB与YUV)

文章目录

  • 前言
  • 一、图像深度
    • 1.什么是图像深度
    • 2.图像深度的意义
    • 3.常见的图像深度
      • 8位
      • 16位
      • 24位
      • 32位
  • 二、图像格式
    • 1.RGB格式
    • 2.RGB样式
    • 2.YUV
      • YUV的来由
      • YUV样式
      • RGB和YUV之间的转换
      • YUV的常见类型
  • 总结


前言

本文的目的是为了梳理音视频基础相关的知识,有很多做流媒体、音视频相关的研发对于音视频的根本原理是不清楚的。博主也是查阅了相关的资料一点点进行梳理,从根本上一点点延申到音视频处理上。
|版本声明:山河君,未经博主允许,禁止转载


一、图像深度

1.什么是图像深度

图像深度即位深度,也是描述单个像素点的色彩详细度

右键单击图片属性->详细信息,即可查看图片位深度:
在这里插入图片描述

2.图像深度的意义

图像深度是描述单个像素点色彩详细度,那么如何理解这句话也需要我们上一篇文章视频基础学习一——色立体、三原色以及像素里关于图像的介绍了。

看过之前的文章我们可以知道,像素是组成图片的最小单位,在显示器中可以简单理解有三个发光二极管。而这三个发光二极管的色彩为红、绿、蓝,也就是三原色。通过对于三原色的不同调配就可以实现色立体包含的所有颜色也就是人眼所看到的。

在实际的显示器中,每个像素点会被一个8位数模转换器输出电压控制(更高级的显示器和摄像机有10位的、12位和14位的,意味着更精细的颜色划分)。通过数模转换器将代码转换成脉冲进而控制二极管发光电压、电流,就可以得到不同的颜色

所以图像深度越大,那么单个像素点描述的颜色也就越精细

3.常见的图像深度

8位

2 8 = 2 2 ( B ) ∗ 2 3 ( G ) ∗ 2 3 ( R ) = 256 ( 色 ) 2^8 = 2^2(B) * 2^3(G)* 2^3(R) = 256(色) 28=22(B)23(G)23(R)=256()

总共显示256种颜色
取值范围:0~255

16位

2 16 = 2 5 ( B ) ∗ 2 6 ( G ) ∗ 2 5 ( R ) = 65536 ( 色 ) 2^{16} = 2^5(B)*2^6(G)* 2^5(R) = 65536(色) 216=25(B)26(G)25(R)=65536()
总共显示65536种颜色
取值范围:0~65535

24位

2 24 = 2 8 ( B ) ∗ 2 8 ( G ) ∗ 2 8 ( R ) = 16777216 ( 色 ) 2^{24} = 2^8(B) *2^8(G) *2^8(R) = 16777216(色) 224=28(B)28(G)28(R)=16777216()
总共显示16777216种颜色
取值范围:0~16777215

32位

32位:Alpha透明度 + 24位

二、图像格式

1.RGB格式

常见的RGB格式有RGB565,RGB555, RGB24,RGB32,ARGB32

拿RGB565举例 高5bit表示R,中间6bit表示G,最后5bit表示B
在这里插入图片描述

  • RGB24就是每一个分量都是8bit
  • RGB32每一个分量也是8bit,后8bit不用以此保证数据对齐
  • ARGB32则将后8bit用于描述透明度

2.RGB样式

通过上一篇文章我们可以知道,三原色RGB中,R表示红色,G表示绿色,B表示蓝色。当一张图片分别将RGB三个分量拿出来展示时,就如同下图
在这里插入图片描述

2.YUV

YUV的来由

由上文可知按照RGB24方式来存储一张1280*720照片大小为:

1280 * 720 * 3 / 1024 / 1024 = 2.63 MB

对于单张图片还可以接受,但是应用到视频中,无疑会占据大量的内存,所以就出现了YUV这种可以减少所占内存大小的存储格式。具体如何做到减少,下面会进行讲述。

YUV样式

通过上一篇文章我们可以知道,色立体包含人眼可以看到的颜色主要分为三个特征:明度、彩度、色相。

而YUV中Y代表明度,U代表彩度,V代表色相。将YUV中三种样式拿出来进行展示就如同下图
在这里插入图片描述
而有一堆科学家研究发现,人眼对UV的敏感度最低,因此可以极大比例地压缩UV两个通道的数值,这也就给了压缩图片操作提供了路径。

RGB和YUV之间的转换

RGB转YUV:

Y = 0.299R + 0.587G + 0.114B;
U = -0.169
R - 0.331*G + 0.5 B ;
V = 0.5 R - 0.419G - 0.081
B;

YUV转RGB:

R = Y + 1.4075 * V;
G = Y - 0.3455 * U - 0.7169*V;
B = Y + 1.779 * U;

YUV的常见类型

上面RGB的排列方式是由高字节到低字节按照R、G、B排列的,而YUV的排列方式则不同,它分为两种类型

  • planar 平面格式:指连续存储一张图片所有像素点的Y分量,然后存储U分量,最后是V分量
  • packed 打包模式:指一张图片每个像素点的Y、U、V分量是连续交替存储的。

YUV常见类型有:

  • YUV444,每一个Y对应一组UV分量。
  • YUV422,每两个Y共用一组UV分量。
  • YUV420,每四个Y共用一组UV分量。

所以由此可以看出

RGB一个像素点83=24个位;
YUV444:跟RGB一样;
YUV422:两个像素点公用一个UV,所以一个像素点大小约等于(2
Y+UV)8/2=28=16位,节约,比RGB少1/3;
YUV420:四个像素点公用一个UV,所以一个像素点大小约等于(4*Y+UV)8/4=1.58=12位,节约,比RGB少1/2;

总结

本篇文章介绍了YUV和RGB格式以及相应占据的空间大小,这个是视频图片开发最基础的东西,下一篇文章将继续整理关于视频另一部分基础的知识(帧率、码率、分辨率)

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

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

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

相关文章

高级语言期末2010级A卷

1.编写函数&#xff0c;按照如下公式计算圆周率π的值&#xff08;精确到1e-5&#xff09; #include <stdio.h>double pai() {double last0;double flag1;int n1;while(flag-last>1e-5) {lastflag;flag*1.0*(2*n)*(2*n)/((2*n-1)*(2*n1));n;}return 2*last; }int main…

基于SpringBoot的停车场管理系统

基于SpringBootVue的停车场管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台首页 停车位 个人中心 管理员界面 摘要 摘要&#xff1a;随着城市化进程的…

C#,计算几何,计算机图形学(Computer Graphics)洪水填充算法(Flood Fill Algorithm)与源代码

1 泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法(Flood Fill Algorithm) &#xff0c;又称洪水填充算法&#xff0c;是在很多图形绘制软件中常用的填充算法&#xff0c;最熟悉不过就是 windows 自带画图软件的油漆桶功能。 2 源程序 using System; using System.Collecti…

windows 虚拟机:CrossOver 24.0.0 for Mac破解版安装激活2024图文教程

CrossOver 24.0.0 for Mac是一款功能强大的虚拟机软件&#xff0c;允许在Mac系统上运行Windows应用程序而无需重新启动计算机。通过CrossOver&#xff0c;用户可以轻松地运行Windows软件和游戏&#xff0c;而无需购买Windows许可证或使用虚拟机。 CrossOver 24.0.0 for Mac通过…

MySQL-基本使用,数据类型,简单操作

1. 数据库概述 1.1 数据库(DatBase) 数据库&#xff0c;就是遵循一定数据格式的数据集合&#xff0c;可以认为他是对文件系统的改进。它解决了不同操作系统之间&#xff0c;数据格式的兼容性问题。也就是说&#xff0c;只要是同一个数据库的数据文件&#xff0c;即使从windows迁…

使用 kind 集群安装运行极狐GitLab Runner【下】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 上一篇内容中&#xff0c;我们已经利用 kind 创建好了一个本地…

GPT-SoVITS 快速声音克隆使用案例:webui、api接口

参考: https://github.com/RVC-Boss/GPT-SoVITS 环境: Python 3.10 PyTorch 2.1.2, CUDA 12.0 安装包: 1、使用: 1)下载项目 git clone https://github.com/RVC-Boss/GPT-SoVITS.git2)下载预训练模型 https://huggingface.co/lj1995/GPT-SoVITS 下载模型文件放到GPT…

C# (WebApi)整合 Swagger

SpringBoot-整合Swagger_jboot整合swagger-CSDN博客 C# webapi 也可以整合Swagger webapi运行其实有个自带的HELP页面 但是如果觉得UI不好看&#xff0c;且没办法显示方法注释等不方便的操作&#xff0c;我们也可以整合Swagger 一、使用NuGet控制台安装Swagger 在菜单中选择…

Pycharm服务器配置与内网穿透工具结合实现远程开发的解决方法

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…

力扣随笔之颜色分类(中等75)

思路&#xff1a;定义两个指针划分left&#xff0c;right划分三个区域left左边是红色区域&#xff0c;right右边是蓝色区域&#xff0c;left和right之间是白色区域&#xff1b;定义一个遍历指针遍历整个数组&#xff0c;遇到红色与left所指位置数字交换&#xff0c;并将left自加…

2023最新简绘AI开源版支持MJ绘画,AI问答

应用介绍 本文来自&#xff1a;2023最新简绘AI开源版支持MJ绘画&#xff0c;AI问答 - 源码1688 简介&#xff1a; 简绘AI开源版&#xff0c;从闲鱼上买的&#xff0c;搭建教程如下 测试环境&#xff1a;NginxPHP7.4MySQL5.6 图片&#xff1a;

STM32F4XX - CAN设置

can协议部分 - 逻辑信号和电平信号 先贴上CAN信号在物理信号线上的查分信号表示形式 显性电平&#xff1a; 电压差范围为1.5-2.5v。 对应的逻辑电平是0 隐性电平&#xff1a; 其他 对应的逻辑电平是1 为什么显性电平对应的逻辑电平值为0&#xff0c;而隐性电平对应的逻辑电平…

2023全新UI千月影视APP源码 | 前后端完美匹配、后端基于ThinkPHP框架

应用介绍 本文来自&#xff1a;2023全新UI千月影视APP源码 | 前后端完美匹配、后端基于ThinkPHP框架 - 源码1688 简介&#xff1a; 2023全新UI千月影视APP源码 | 前后端完美匹配、后端基于thinkphp框架 图片&#xff1a;

免费多域名证书,最多支持保护250个域名

随着企业规模扩大和多元化发展&#xff0c;拥有多个域名的需求变得普遍&#xff0c;此时&#xff0c;多域名SSL证书应运而生&#xff0c;并且这一类型的证书已经发展到能够安全地支持多达250个不同域名的加密需求。 多域名SSL证书&#xff0c;也称为SAN&#xff08;Subject Alt…

【前端素材】推荐优质后台管理系统Tiny平台模板(附源码)

一、需求分析 后台管理系统是一个重要的工具&#xff0c;用于管理和维护网站、应用程序或系统的正常运行。通过灵活的权限管理和各种功能模块的结合&#xff0c;后台管理系统能够有效地帮助管理员管理和控制系统&#xff0c;提高工作效率和系统安全性。 后台管理系统是一种用…

OSCP靶场--Slort

OSCP靶场–Slort 考点(1.php 远程文件包含 2.定时任务提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.178.53 -sV -sC -p- --min-rate 5000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-24 04:37 EST Nmap scan report for 192.168.178.53 …

二手旧物回收系统开发:推动可持续发展的关键

随着人们环保意识的增强&#xff0c;二手旧物回收系统的发展逐渐成为社会关注的焦点。开发二手旧物回收系统&#xff0c;不仅能有效减少废弃物的排放&#xff0c;降低对环境的污染&#xff0c;还能实现资源的循环利用&#xff0c;推动可持续发展。本文将深入探讨二手旧物回收系…

java8新特性-Lambda

目录 一、Lambda 1、什么是Lambda表达式 2.Lambda表达式的基本语法&#xff1a; 3.参数列表 4.Lambda表达式使用前后对比 举例一&#xff1a; 举例二&#xff1a; 二、函数式接口 1.函数式接口的使用说明 2.4个基本的函数式接口 3.如何定义函数接口 1.保证接口中只…

Javaweb之SpringBootWeb案例之AOP案例的详细解析

4. AOP案例 SpringAOP的相关知识我们就已经全部学习完毕了。最后我们要通过一个案例来对AOP进行一个综合的应用。 4.1 需求 需求&#xff1a;将案例中增、删、改相关接口的操作日志记录到数据库表中 就是当访问部门管理和员工管理当中的增、删、改相关功能接口时&#xff0c…

MyBatis之Mapper.xml文件中parameterType,resultType,resultMap的用法

MyBatis之自定义数据类型转换器 前言1.parameterType2.resultType3.resultMap实例代码总结 前言 今天我们来学习Mapper.xml&#xff08;编写SQL的&#xff09;文件中&#xff0c;增删改查标签中&#xff0c;使用parameterType属性指定传递参数类型&#xff0c;resultType属性指…