YUV格式图像基础

1.YUV基础

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

yuv转rgb:

yuv转rgb

rgb转yuv:

rgb转yuv

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

YUV采样方式
  1. YUV 4:4:4采样,每一个Y对应一组UV分量,图像和rgb占用的字小大小一致,均为pixelsize*3。
  2. YUV 4:2:2采样,每两个Y共用一组UV分量,占用的大小为pixelsize+pixelsize/2+pixelsize/2。
  3. YUV 4:2:0采样,每四个Y共用一组UV分量,占用大小为pixelsize+pixelsize/4+pixelsize/4。

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

2.常见的YUV格式

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

yuv按照存储方式可以分成两个大类:

  • packed:打包格式是将yuv分量混合存在同一个数组中
  • planar:平面格式是将yuv三个分量存成三个数组或者两个数组分别存储

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

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

常见的yuv格式列表如下:

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

3.操作yuv图像

涉及到摄像头帧图像处理的应用经常需要操作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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前一阵子在梳理以前文章的时候,发现自己虽然总结了各种视音频应用程序,却还缺少一个适合无视音频背景人员学习的“最基础...
    视频音频小白阅读 2,047评论 1 3
  • RGB和YUV 多媒体编程 一、概念 1.什么是RGB? 对一种颜色进行编码的方法统称为“颜色空间”或“色域”。用...
    流年易逝_李阅读 14,686评论 0 6
  • 矩阵 在先讲颜色编码之前,先回顾一下高数中的矩阵的基本知识《线性代数》: 什么是矩阵 矩阵是指纵横排列的二维数据表...
    DramaScript阅读 6,896评论 2 10
  • 千锤万捣出精粉, 快脚踏踩排队等。 逢过年节香米果, 添柴扇火果坯蒸。 一一彭甫2018年 4月17日晚书
    彭甫阅读 866评论 2 5
  • 11月23日丰盛日记 思想: 今天的清晨沐心来自《论语》的开章首段,原文为:子曰:“学而时习之,不亦说乎?...
    c2af4cc51cce阅读 297评论 0 1