YUV图像的常见格式(图示)

摘要

在研究android Camera2 API的时候,涉及到采集视频信息。其中,在采集视频的时候,可以设置多种类型格式的图像数据,其中一个就是yuv_420_888,如果需要进行编码压缩,我们还需要将该格式的数据转转想要的格式后方能根据压缩算法进行压缩。本文记录一下,我所知的几种常用的yuv数据格式。

介绍

YUV是一种颜色编码方法,是编译true-color颜色空间(color space)的种类,常使用在各个视频处理组件中。 YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。其中的“Y”表示明亮度,也就是灰阶值,即黑到白的范围值,所以只有Y值的图像,是黑白的,“U”表示色彩值,“V”表示色彩的饱和度,“U”“V”用于指定像素的颜色。

YUV两大类格式:
平面格式(planar formats)
  • 将Y、U、V的三个分量分别存放在不同的矩阵中。先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
紧缩格式(packed formats)
  • 将Y、U、V值存储成MacroPixels数组,和RGB的存放方式类似,每个像素点的Y,U,V是连续交替存储的。
    为节省带宽起见,大多数YUV格式平均使用的每像素位数都少于24位。主要的抽样(subsample)格式有YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1和YCbCr4:4:4。
YUV的表示法称为A:B:C表示法:

4:4:4表示完全取样。
4:2:2表示2:1的水平取样,垂直完全采样。
4:2:0表示2:1的水平取样,垂直2:1采样。
4:1:1表示4:1的水平取样,垂直完全采样。

图示

下面图示几种常见的yuv存储格式。

1 YUV444类型

每个像素点都存储对应的YUV值,所以,在1080x1920的图像中,需要1080x1920x(1Y + 1U + 1V)(字节)≈ 0.7MB来存储。

1.1 I444类型

在屏幕像素上的分布表示:
YUV图像的常见格式(图示)_第1张图片
在数组中存储的分布表示:
YUV图像的常见格式(图示)_第2张图片
即先存Y,再存U,后存V的格式。

1.2 YV24类型

在屏幕像素上的分布表示:
YUV图像的常见格式(图示)_第3张图片
在数组中存储的分布表示:
YUV图像的常见格式(图示)_第4张图片
即先存Y,再存V,后存U的格式。

2 YUV422类型

每两个像素点共用一对UV值,所以,在1080x1920的图像中,需要1080x1920x(1Y+ 0.5U + 0.5V)(字节)≈ 0.5MB来存储。

在屏幕像素上的分布表示:
YUV图像的常见格式(图示)_第5张图片

2.1 YUV422

在数组中存储的分布表示:
(YUYV)
YUV图像的常见格式(图示)_第6张图片
(YVYU)
YUV图像的常见格式(图示)_第7张图片

2.2 YUV422P

在数组中存储的分布表示:
YU16、I422
YUV图像的常见格式(图示)_第8张图片
YV16
YUV图像的常见格式(图示)_第9张图片

2.3 YUV422SP

在数组中存储的分布表示:
NV16
YUV图像的常见格式(图示)_第10张图片
NV61
YUV图像的常见格式(图示)_第11张图片

3 YUV420类型

每四个像素点共用一对UV值,所以,在1080x1920的图像中,需要1080x1920x(1Y+ 0.25U + 0.25V)(字节)≈ 0.3MB来存储。

在屏幕像素上的分布表示:
YUV图像的常见格式(图示)_第12张图片

3.1 YUV420P

在数组中存储的分布表示:
YU12、I420
YUV图像的常见格式(图示)_第13张图片

YV12
YUV图像的常见格式(图示)_第14张图片

3.2 YUV420SP

在数组中存储的分布表示:
NV12
YUV图像的常见格式(图示)_第15张图片
NV21
YUV图像的常见格式(图示)_第16张图片

总结

了解了以上的YUV格式后自己才能自由的转换。

你可能感兴趣的:(Android,android,yuv,yuv格式)