NV12等常用YUV数据格式

163
发表时间:2022-08-01 09:52

NV12等常用YUV数据格式


    1.     YUV 采样表示法

    2.     YUV 格式

    3.     数据格式

        3.1     4:4:4 格式

        3.2     4:2:2 格式

        3.3     4:2:0 格式

    4.     YUV数据转换

    5.     NV12转RGB


Reference:


1、YUV数据格式

2、图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别

与 RGB 编码方法类似,YUV 也是一种颜色编码方法。其中“Y”表示明亮度(Luminance 或 Luma),也就是灰阶值,U 和 V 表示的则是色度(Chrominance 或 Chroma),分别用 C r   和 C b   来表示,作用是描述影像色彩及饱和度,用于指定像素的颜色。



这样分开的好处;


    1、可以避免相互干扰(没有 UV 信息一样可以显示完整的图像,因而解决了彩色电视与黑白电视的兼容问题);

    2、降低色度的采样率而不会对图像质量影响太大,降低了视屏是`信号传输时对频宽(带宽)的要求。


YUV 是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。


1. YUV 采样表示法

YUV 采用 A:B:C 表示法来描述 Y , U, V 采样频率比例,下图中黑点表示采样像素点 Y   分量,空心圆表示采样像素点的 U V 分量。

    4:4:4   表示色度频道没有下采样,即一个 Y 分量对应着一个 U 分量和一个 V 分量。一个 YUV 占 8+8+8=24bits 3个字节;

    4:2:2   表示 2:1 的水平取样,垂直完全采样。一个 YUV 占 8+4+4=16bits 2个字节;

    4:2:0   表示 2:1 的水平取样,垂直 2:1 采样。一个 YUV 占 8+2+2=12bits 1.5个字节;

    4:1:1   表示 4:1 的水平取样,垂直完全采样。 与其他格式相比,4:1:1 采样不太常用。


2. YUV 格式

    1、打包格式(packed formats): 打包格式中的 YUV 时混合在一起的。

    2、平面格式(planar formats): 每 Y 分量、U 分量和 V 分量都是以独立的平面组织的,也就是有三个平面。


3. 数据格式

3.1 4:4:4 格式

AYUV:这是一个打包格式,其中每个像素都被编码为四个连续字节,其组织顺序如下所示,其中 A 标示了alpha通道。


3.2 4:2:2 格式

YUY2:在 YUY2 格式中,数据可被视为一个不带正负号的 char 值组成的数组,其中第一个字节存储第一个 Y   样例,第二个字节存储第一个 U ( C b )   样例,第三个字节存储第二个 Y 样例,第四个字节存储第一个 V ( C r ) 样例,如下图:


UYVY:此格式与 YUY2 相同,只是字节顺序是与之相反的。


3.3 4:2:0 格式

1、IMC1:所有 Y 样例都会作为不带正负号的 char 值组成的数组首先存储在内存中。后面跟着存储所有 V ( C r ) 样例,然后是所有 U ( C b ) 样例。V 和 U 平面与 Y 平面具有相同的跨距(即存储数组的宽度),从而遗留了如下图所示的未使用的内存区域。


2、IMC3:此格式与 IMC1 相同,只是 U 和 V 平面进行了交换:


3、IMC2:此格式与 IMC1 相同,只是 V ( C r ) 和 U ( C b ) 行在半跨距边界处进行了交错。换句话说,就是色度区域中的每个完整跨距行都以一行 V 样例开始,然后是一行在下一个半跨距边界处开始的 U 样例


4、IMC4:此格式与 IMC2 相同,只是 U ( C b ) 和 V ( C r ) 行进行了交换:



5、NV12: 所有 Y 样例都会作为由不带正负号的 char 值组成的数组首先存储在内存中,并且行数为偶数。Y 平面后面紧接着一个由不带正负号的 char 值组成的数组,其中包含了打包的 U ( C b ) 和 V ( C r ) 样例。



6、NV21: NV21 格式和 NV12 存储格式基本相同,只是 U V存储位置互换。


7、YU12: 也叫做 I420 格式,首先是所有 Y ,然后是所有 U,最后是所有 V


也就是为什么 U   和 V 看到的是四幅图像:



8、YV12: YV12 格式与 YU12 基本相同,首先是所有 Y   值,然后是所有 V 值,最后是所有 U 值。


4. YUV数据转换

4:2:2 -> 4:2:0 的有损压缩转换:Y 存储数据不变,对 U 和 V 分量在行垂直下采样进行隔行抽样。

4:2:0 -> 4:2:2的补足转换:Y 存储数据不变,对 U 和 V 分量在行垂直下采样进行隔行拷贝补足下一行色度数据。


5. NV12转RGB

r = y +(140*(v-128))/100;//rg = y -(34*(u-128))/100-(71*(v-128))/100;//gb = y +(177*(u-128))/100;//b







分享到:
微信公众号:
蓝松文档:
地址:浙江省杭州市余杭区仓前街道龙园路88号3号楼A1318室(创鑫时代广场)