zoukankan      html  css  js  c++  java
  • 【视频处理】YUV格式说明

    YUV,是一种颜色编码方法,Y表示明亮度(Luminance、Luma),U和V则是色度、浓度(Chrominance、Chroma)。

    YUV,Y`UV,YCbCr,YPbPr等都可以称为YUV,彼此有重叠。

    YUV和Y`UV通常用来描述模拟信号YCbCr与YPbPr则是用来描述数位的影像信号

    YUV颜色编码方法相比于RGB的优势体现在两个方面:

    将亮度信息与色彩信息分离,没有色彩信息可以显示完整的图像,很好地解决了彩色电视机与黑白电视的兼容问题;

    YUV不像RGB要求三个独立的视频信号同时传输,用YUV方式传送占用极少的频宽。

    YUV存储格式,主要描述像素的Y、U、V分量排列方式,分为两种格式:紧缩格式和平面格式。

    紧缩格式(packed formats):将Y、U、V值储存成Macro Pixels阵列,和RGB的存放方式类似。

    平面格式(planar formats):将Y、U、V的三个分量分别存放在不同的矩阵中。

    YUV采样方式,主要描述像素Y、U、V分量采样比例,即表达每个像素时,Y、U、V分量的数目,通常有三种方式:YUV4:4:4,YUV4:2:2,YUV4:2:0。

    用三个图直观地表示采集的方式,以黑点表示采样该像点的Y分量,以空心圆圈表示采用该像素点的UV分量。

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

    常见YUV格式说明:YV12、IYUV、I420、NV12、NV21 采样方式都是4:2:0,其存储格式都是平面格式,下面简要说明以上常见格式的内存布局。

    YV12

      所有 Y 样例都会作为不带正负号的char值组成的数组首先显示在内存中。此数组后面紧接着所有 V (Cr) 样例。V 平面的跨距为 Y 平面跨距的一半,V 平面包含的行为 Y 平面包含行的一半。V 平面后面紧接着所有 U (Cb) 样例,它的跨距和行数与 V 平面相同。

    IYUV和I420

      IYUV、I420和YV12的内存布局格式是一样的,只是U、V分量的顺序是相反的,IYUV和I420格式中,U分量紧跟Y分量后,V分量紧跟U分量后,如图所示。

    NV12

      所有 Y 样例都会作为由不带正负号的char值组成的数组首先显示在内存中,并且行数为偶数。Y 平面后面紧接着一个由不带正负号的char值组成的数组,其中包含了打包的 U (Cb) 和 V (Cr) 样例,如图 所示。当组合的 U-V 数组被视为一个由 little-endian WORD值组成的数组时,LSB 包含 U 值,MSB 包含 V 值。NV12 是用于 DirectX VA 的首选 4:2:0 像素格式。预期它会成为支持 4:2:0 视频的 DirectX VA 加速器的中期要求。

    NV21

      NV21和NV12的内存布局是一样的,只是U、V分量交错存储的顺序是相反的,NV21格式中,是以V-U的交错方式存储,如图所示。

    参考资料:

    http://www.fourcc.org/yuv.php

    http://wenzongliang.iteye.com/blog/1902608

  • 相关阅读:
    在宝塔中升级mysql版本
    测试winform程序到树莓派运行
    winserver2012远程桌面进入只有CMD窗口,无桌面解决方法
    一七年春末
    Linux 上通过rpm安装mysql
    Linux 上关于iptables
    Linux环境下安装JDK
    Linux上安装tomcat
    Linux 下安装redis
    Map集合按照value和key进行排序
  • 原文地址:https://www.cnblogs.com/xmphoenix/p/4508483.html
Copyright © 2011-2022 走看看