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

devtools/2024/12/23 0:25:41/

文章目录

  • 一、图像基础概念
  • 二、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.ppmy.cn/devtools/103255.html

相关文章

(自用)适时小结(一)

前言 每过一段时间,总结一下学习方面的感悟,可能和编程有关,可能和学习方法有关,也可能对前面学过东西的回顾,或者单纯表达一些想法. 关于C C的学习至少要经过两个阶段:基础学习和熟练掌握.常见的问题:学习的过程中会产生一些迷茫,C到底能干什么? .C的内容不少,学习难度也不低…

Redis过期键监听

在 Redis 中,为了监听过期键事件,需要使用 Redis 的 Keyspace Notifications 功能。这一功能允许客户端订阅某些事件的发生,比如键过期、键删除等。 启用过期键监听 在 Redis 的配置文件 redis.conf 中,确保配置项 notify-keysp…

nginx 负载均衡详解与实现方法案例

目录 前言一、Nginx 负载均衡的工作原理二、Nginx 负载均衡的算法1.轮询(Round Robin):2.最少连接数(Least Connections):3.IP 哈希(IP Hash):4.URL 哈希(URL Hash):5.加权轮询(Weighted Round Robin):3、Nginx 负载均衡的其他配置4、 总结前言 Nginx 负载均衡…

Ubuntu 18.04升级gclibc为2.28版本

一、查看系统支持的 GLIBC 版本号 ​strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_出现以下,说明到2.27版本,没有2.28版本,所以我们需要手动安装 GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC_2.3.2 GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_…

C++指南-标准库,数学库,数据结构

C标准库概览 C标准库是C语言的组成部分,提供了大量的工具和函数,以支持各种编程任务。 输入输出流 输入输出流类 std::iostream:基础输入输出流类。 std::istream:处理输入流的抽象类。 std::ostream:处理输出流的…

microsoft微软excel或WPS表格打开vivado逻辑分析仪ILA保存的csv文件,自动转换科学计数法损失精度的bug

问题 vivado的逻辑分析仪ILA,可以方便的把数据导出成CSV(Comma-Separated Values)文件,实际是逗号作为分隔符的数据文件。 导出数据文件用文本编辑器打开,第74行有如下数据: 但是使用excel打开这个csv文件,则这个数…

OpenCV小练习:身份证号码识别

目标:针对一张身份证照片,把身份证号码识别出来(转成数字或字符串)。 实现思路:需要将目标拆分成两个子任务:(1) 把身份证号码区域从整张图片中检测/裁剪出来;(2) 将图片中的数字转化成文字。第…

灵神算法题单——定长滑动窗口(进阶)

2134. 最少交换次数来组合所有的 1 II 断环成链滑动窗口 思路先算出数组中1有多少,然后看这么长的窗口里0最少是多少,此时即为最少交换次数。 首先遍历算出1的数量k,然后用Insert拼接数组,从而实现循环。 然后双指针遍历数组&…