zoukankan      html  css  js  c++  java
  • YUV采样及存储格式

     

     

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

      与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。

      一、采集

      YUV主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。下面用三个图来直观地表示采集的方式,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。

      YUV 4:4:4采样,每一个Y对应一组UV分量。
      YUV 4:2:2采样,每两个Y共用一组UV分量。 
      YUV 4:2:0采样,每四个Y共用一组UV分量。

      二、存储

      YUV格式有两大类:planar和packed。
      对于planar的YUV格式,先连续存储所有像素点的Y,随后存储U、V。存储类型表示为采样方式后缀加P。
      对于packed的YUV格式,每个像素点的Y,U,V是连续交错存储的。存储类型表示为采样方式后缀加SP。

      下面以几种存储方式来解释:

      存储格式:内存布局=>所属存储类型=>planes

      

      IYUV: YYYYYYYY UU VV    =>YUV420P  =>3 planes
      YV12: YYYYYYYY VV UU    =>YUV420P  =>3 planes
      NV12: YYYYYYYY UVUV    =>YUV420P  =>2 planes
      NV21: YYYYYYYY VUVU    =>YUV420P  =>2 planes
      YUY2: Y0U0Y1V0Y2U1Y3V1  =>YUV422SP  =>1 planes
      UYVY: U0Y0V0Y1U1Y2V1Y3  =>YUV422SP  =>1 planes
      YVYU: Y0V0Y1U0Y2V1Y3U1  =>YUV422SP  =>1 planes

  • 相关阅读:
    二分排序之三行代码
    最短路径—Floyd算法
    最小生成树 Kruskal算法
    最小生成树-Prim算法
    最短路径之迪杰斯特拉(Dijkstra)算法
    C函数指针
    Linux进程的实际用户ID和有效用户ID
    C++ 之Boost 实用工具类及简单使用
    ELK之消息队列选择redis_kafka_rabbitmq
    Python文件操作
  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/6943530.html
Copyright © 2011-2022 走看看