本文主要是介绍音视频-图像篇(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/JPEG | PNG | GIF | BMP |
---|---|---|---|---|
位深度 | 最高为24 bit | 最高为32 bit | 最高为8 bit,画质差 | 最高为32 bit |
图片体积 | 较小 | 较大 | 很小 | 很大 |
能否压缩 | 有损压缩,压缩率可以很高(通过舍弃一些不影响人眼观看的细节,来压缩体积) | 无损压缩,压缩率低 | 无损压缩,压缩率高 | 不压缩 |
能否透明 | 不能 | 能(在RGB通道之外加了一个Alpha通道,用0~256表示透明度) | 能(但是不能控制透明度,要么完全透明要么不透明) | 不能 |
总结 | 适合保存色彩丰富、却要压缩体积的图片 | 适合保存色彩丰富、又不限制体积的图片、透明图层 | 适合保存色彩简单、而体积很小的图片。不仅可以存储单张图片,还支持用多帧组成动画 | 体积很大,不适合在网络传输 |
这篇关于音视频-图像篇(YUV和RGB)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!