当前位置:首页 » 存储配置 » yuv存储格式

yuv存储格式

发布时间: 2023-12-27 14:17:23

㈠ YUV格式图像基础

yuv是一种类似rgb的颜色模型,起源于黑白和彩电的过渡时期。其中Y代表亮度,uv组合起来可以表示色度。yuv信息只有y的信息就足以显示黑白的图片,yuv和YCbCr表示相同的东西,且Cb严格对应U,Cr严格对应V,yuv和rgb可以通过固定公式进行转换。

yuv转rgb:

rgb转yuv:

yuv主流的采样方式有yuv4:4:4、yuv4:2:2、yuv4:2:0。下图中以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量,可以看到这些采样方式是影响uv的采样的,对y都是全部采样。

可以看到,yuv格式图像信息可以比rgb格式占用的字节码更少,所以可以用yuv来传输色彩数据,接收到yuv数据后再转换为rgb来显示图像,从而减少了传输图像占用的带宽。

yuv衍生出了很多格式,主要是由于其存储方式决定的。

packed存储的yuv的存储先后不同,细分为了yuv、yvu、yvyu、uyvy等等。

planar存储的yuv依据数组数量分成了yuv分别三个数组表示的完全平面的,以及y一个数组而uv一个数组的半平面(Semi planar)的两类,而半平面的又可以细分为uv和vu两个存储顺序。

I420: YYYYYYYY UU VV =>YUV420P
YV12: YYYYYYYY VV UU =>YUV420P
NV12: YYYYYYYY UVUV =>YUV420SP
NV21: YYYYYYYY VUVU =>YUV420SP //安卓Camera默认格式

涉及到摄像头帧图像处理的应用经常需要操作Yuv数据帧,例如镜像、加滤镜等。

操作yuv图像可以直接使用google开源的libyuv库,提供了对yuv图像的格式转换、缩放、裁剪、旋转、镜像等操作: 谷歌git libyuv ,github上有人用其做了简单的安卓版本的demo: 安卓libyuvDemo ,包含了基础的yuv库的使用逻辑,但是该项目没有同步谷歌libyuv更新。

参考链接:

https://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html

http://www.360doc.com/content/16/0517/16/496343_559909505.shtml

谷歌git libyuv

[安卓libyuvDemo

㈡ 视频数据存储方式YUV

在视频中的数据保存和传输都是YUV数据格式。主要是为了降低数据大小,如果argb格式数据,1px可能需要4个字节,而YUV可能就只需要1.5个字节。

简单的讲YUV是一种图像和视频的编码方式,RGB通过三种颜色来表达现实世界中的各种颜色,YUV通过 亮度 与 色度饱和度 来表示颜色。

RGB很好理解,它更直观。从学生开始就认识绘画的颜料是用三种颜色调配来的,汽车的油漆颜色也是RGB三种颜色调配而来的。

YUV的出现有它的历史意义但也是一种必然。它基于人眼对亮度的敏感度比色彩的敏感度更高的特点。Y表示亮度也可以理解在灰度值,最低的亮度就是黑色最高的亮度就是白色,中间的可呈现出灰色。

在黑白电视机向彩色电视机过渡的年代,黑白电视机只需要YUV中的一个分量Y就可以呈现出黑白画面。UV分量用在彩色电视机上即可呈现出彩色了。YUV可以带来更高的帧内压缩比,由于人眼对黑白更敏感,YUV可以弱化不敏感的信息,减少UV分量的采样。RGB24的每个像素需要3*8个字节,YUV呢?不同的YUV采样方式压缩比有所不同。

电视信息使用的是YUV而数字信息使用的是 YCrCb 命令,以下统称YUV。

YUV简介

与RGB类似,YUV也是一种颜色编码方法,主要用于视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样设计解决了彩色电视机与黑白电视的兼容问题。

YUV,分为三个分量,“Y"表示明亮度(Luminance或Luma),也就是灰度;而”U"和“V”表示是色度(Chrominance或Chroma),作用于指定像素的颜色。

UV即CbCr(C代表颜色color,b代表蓝色blue,r代表红色red)

分类

YUV格式的两大类:平面(plannr)和紧凑(packed)。

对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随是存储所有像素点的V,或者是先v后u

对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。比如YUV420P 其中P表示紧凑,YUV420SP其中的SP表示“半紧凑”。

采样

主流的采样方式有三种,YUV4:4:4,YUV4:2:2 ,YVU4:2:0

YUV4:4:4采样,每一个Y对应一组UV分量,一个YUV占8+8+8=24bits 3个字节。

YUV4:2:2采样,每两个Y共用一组UV分量,一个YUV占8+4+4=16bits 2个字节。

YUV4:2:0采样,每四个Y共用一组UV分量,一个YUV占8+2+2 = 12bits 1.5个字节。

最觉的YUV420P和YUV420SP都是基于4:2:0采样的,所以如果图片的宽为width,高为height,在内存中占的空间width*height*3/2,其中前width*height的空间存放Y分量,接着width*height/4存放U分量,最后width*height/4存放V分量。

YUV格式

常见的YUV格式有YUY2、YUYV、YVYU、UYUV、AYUV、Y41P、Y411、Y211、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,Android中比较常见是YUV420分两种:YUV420P和YUV420SP。以下为YUV420P和YUV420SP。

YUV420P

YUV420P是平面模式,Y、U、V分别在不同平面,也就是有三个平面。它是YUV标准格式4:2:0,为了更方便的看如下表示 :

为了说明存储方式,每一组用不同颜色表示。每一种颜色都是一组,每四个Y共用一组UV分量。

比如:

Y1、Y2、Y7、Y8共用U1,V1;

Y3、Y4、Y9、Y10共用U2,V2;

 Y5、Y6、Y11、Y12共用U3,V3;

Y13,Y14,Y19,Y20共用U4,V4

Y17,Y18,Y23,Y24共用U6,V6

那么真实的在字节流中就是按照行从左到右一行一行的拼起来的:

YUV420分为:YU12和YV12

YUV格式

在Android中也叫作I420格式,首先是所有Y值 ,然后是所有U值,最后是所有V值。比如6*6的图片,内存大小就是6*6*3/2 = 54个字节。为了更清晰的查看,我们换行看,真实的是一行byte[]数据流。

1 YYYYYY

2 YYYYYY

3 YYYYYY

4 YYYYYY

5 UUUUUU

6 VVVVVV

YV12格式

YV12格式与YU12格式,首先是所有Y值,然后是所有V值,最后是所有U值。比如6*6图片,内存大小就是6*6*3/2=54字节

1 YYYYYY

2 YYYYYY

3 YYYYYY

4 YYYYYY

5 VVVVVV

6 UUUUUU

YUV420SP

YUV420SP也是平面模式。分为NV21和NV12两种格式。Y是一个平面,UV是一个平面, UV/VU为交替存储,而不是分为三个平面。

在Android Camera中文档强烈推荐使用NV21和YU12,因为这两种格式支持所有的相机设备。

Camera默认输出YUV的数据格式为NV21。但是在Camera2中推荐使用格式则是YUV_420_888。

NV21格式

在Android Carmra中手机从摄像头采集的预览数据默认值是NV21。

NV21存储顺序是先存Y值,再VU交替存储:YYYVUVUVU,比如6*6的图片,内存大小就是6*6*3/2=54个字节。

1 YYYYYY

2 YYYYYY

3 YYYYYY

4 YYYYYY

5 VUVUVU

6 VUVUVU

NV12格式

NV12存储顺序是先存Y值,再UV交替存储:YYYUVUVUV,比如6*6的图片,内存大小就是6*6*3/2=54字节。

1 YYYYYY

2 YYYYYY

3 YYYYYY

4 YYYYYY

5 UVUVUV

6 UVUVUV

这里先熟悉下Android中常见的YUV420P和YUV420SP。一般我们在使用yuv数据的时候,会对yuv数据进行变换,比如:摄像头数据旋转,从一种格式转为另一种数据等。

热点内容
苹果配置锁如何激活 发布:2024-11-28 22:10:24 浏览:668
linuxpython2与3共存 发布:2024-11-28 21:43:41 浏览:905
短视频平台上传视频规范 发布:2024-11-28 21:41:22 浏览:554
c语言统计素数的个数 发布:2024-11-28 21:38:24 浏览:838
我的世界服务器管理员没了怎么办 发布:2024-11-28 21:37:22 浏览:184
请求分段存储 发布:2024-11-28 21:23:20 浏览:459
zip伪加密 发布:2024-11-28 21:23:17 浏览:227
linuxshell路径 发布:2024-11-28 21:13:05 浏览:995
存储为web所用格式切片 发布:2024-11-28 21:11:23 浏览:453
服务器电脑主机怎么装 发布:2024-11-28 21:06:41 浏览:223