当前位置: 首页 > article >正文

音视频-图像篇(YUV和RGB)

文章目录

  • 一、图像基础概念
  • 二、YUV与RGB
    • 1.YUV分类方式
    • 2.YUV“空间-间”的数据划分
      • 1)UV按照“空间-间”的划分方式,分为YUV444、YUV422、YUV420
      • 2)YUV“空间-内”的数据划分
    • 3.RGB
  • 三、比较JPG、PNG、GIF、BMP图片格式


一、图像基础概念

  • 像素:
    像素是一个图片的基本单位,pix是英语单词picture的简写,加上英语单词“元素element”,就得到了“pixel”,简称px,所以“像素”有“图像元素”之意。
  • 分辨率:
    是指图像的大小或尺寸。比如1920x1080。
  • 位深:
    是指在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深来表示的。比如红色分量用8bit。
  • 帧率:
    在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。比如25fps表示一秒有25张图片。
  • 码率:
    视频文件在单位时间内使用的数据流量。比如1Mbps。

二、YUV与RGB

YUV,RGB,包括YcbCr是色彩空间的模型,而平常所说的BMP、PNG、JPEG是文件的存储形式。而YUV是音视频(编解码)最常用的格式。

1.YUV分类方式

YUV有两种分类方式,即“空间-间”和“空间-内”。“空间-间”的划分方式主要体现在Y、U、V的比例不同,存储格式相同;“空间-内”的划分方式主要体现在Y、U、V的比例一定,存储格式不同。

2.YUV“空间-间”的数据划分

1)UV按照“空间-间”的划分方式,分为YUV444、YUV422、YUV420

下图中黑点表示采样像素点Y分量,空心圆表示采样像素点的UV分量。主要分为 YUV 4:4:4、YUV 4:2:2、YUV 4:2:0 这几种常用的类型。
在这里插入图片描述

2)YUV“空间-内”的数据划分

YUV按照“空间-内”的划分方式,主要分为packet、planar、semi-planar三种:

◆ packet:打包格式,即先存储一个yuv,再存储下一个yuv;

◆ planar:平面格式,即先存储y平面,再存储u平面,再存储v平面;

◆ semi-planar:先存储y平面,再存储uv平面;

YUV420sp
YUV420p属于平面存储,YUV分量占比为4:1:1,即每4个Y共享一组UV。先是Y分量,然后是U分量,最后是V分量。排列如下图所示:
在这里插入图片描述
YUV420sp
YUV420sp属于交错存储,YUV分量占比为4:1:1,即每4个Y共享一组UV。先是Y分量,然后是UV分量交错存储。排列如下图所示:在这里插入图片描述
◆ YUV422各种存储格式如下:
在这里插入图片描述
◆ YUV420各种存储格式如下:在这里插入图片描述

3.RGB

RGB是一种图像存储格式,也是三原色,取值范围[0, 255]。R代表Red红色,G代表Green绿色,B代表Blue蓝色。在openCV中,一般使用BGR格式。在图像中,一般使用32位色的ARGB(或RGBA)代表一个像素,其中A代表Alpha透明度。常见的RGB格式有RGB888、RGBA8888、RGB565等。
通常的图像像素是按RGB顺序进行排列,但有些图像处理要转成其他顺序,比如OpenCV经常转成BGR的排列方式。
在这里插入图片描述

三、比较JPG、PNG、GIF、BMP图片格式

图片格式JPG/JPEGPNGGIFBMP
位深度最高为24 bit最高为32 bit最高为8 bit,画质差最高为32 bit
图片体积较小较大很小很大
能否压缩有损压缩,压缩率可以很高(通过舍弃一些不影响人眼观看的细节,来压缩体积)无损压缩,压缩率低无损压缩,压缩率高不压缩
能否透明不能能(在RGB通道之外加了一个Alpha通道,用0~256表示透明度)能(但是不能控制透明度,要么完全透明要么不透明)不能
总结适合保存色彩丰富、却要压缩体积的图片适合保存色彩丰富、又不限制体积的图片、透明图层适合保存色彩简单、而体积很小的图片。不仅可以存储单张图片,还支持用多帧组成动画体积很大,不适合在网络传输

http://www.kler.cn/a/286732.html

相关文章:

  • 2025年数学建模美赛:A题分析(1)Testing Time: The Constant Wear On Stairs
  • linux+docker+nacos+mysql部署
  • Linux网络之TCP
  • 防火墙安全策略
  • 小哆啦的编程冒险:罗马数字转整数
  • Python网络爬虫中的编码乱码如何解决
  • Django1.5自定义User模型
  • docxtpl配合Jinja2实现word中复杂表格实现
  • Spring Boot集成消息队列:RabbitMQ与Kafka实践指南
  • 甄选范文“论软件系统建模方法及其应用”,软考高级论文,系统架构设计师论文
  • EXCEL VBA根据数据生成word文档周报并加背景格式突出显示
  • Java对象的访问定位技术
  • docker部署project-exam-system项目
  • 【华为OD】2024D卷——停车场车辆统计
  • 音视频入门基础:WAV专题(7)——FFmpeg源码中计算WAV音频文件每个packet的size值的实现
  • 十三、泛型
  • Java后端服务端渲染与客户端渲染:SSR与CSR的权衡
  • 第一个golang项目增加help指令并调整指令模式
  • 【最全深度学习介绍】基本概念、类型、应用、优缺点、与机器学习区别是什么?
  • CART算法原理及Python实践
  • Axure RP9安装教程(Pro版)
  • 为k8s准备docker 私有仓库 harbor
  • Scrum 敏捷模型、软件测试
  • Java中的String能存储多少字符?不可变吗?
  • 这才是老板喜欢的运营简历
  • three.js 编辑器,动画,着色器, cesium 热力图,聚合点位,大量点线面, 图层,主题,文字,等众多案例中心