文章目录
- 一、 YUV 4:4:4 格式存储
-
- 1、I444 格式说明
- 2、YUV444 格式的优缺点
- 3、YUV444P 数据存储
- 二、 YUV 4:2:2 格式存储
-
- 1、I422 格式说明
- 2、YUV422 格式的优缺点
- 3、YUV422P 数据存储
- 三、 YUV 4:2:0 格式存储
-
- 1、I420 格式说明
- 2、YUV420 格式的优缺点
- 3、YUV420P 数据存储
- 4、NV12 格式数据存储
- 5、NV21 格式数据存储
一、 YUV 4:4:4 格式存储
1、I444 格式说明
YUV 4:4:4 采样格式 , Y 亮度分量 与 UV 色度分量 的比例是 1:1 ;
如果将 YUV444 采样格式 按照 平面格式 Planar 进行存放 , 那么就是 YUV444P 格式 ;
YUV444P 格式 , 又叫 I444 格式 , 与 FFmpeg 中的 AV_PIX_FMT_YUV444P 像素格式标识符对应 ;
FFmpeg 中的 AV_PIX_FMT_YUV444P 像素格式标识符 说明 :
- AV_PIX_FMT_ 前缀是 FFmpeg 中 用于标识其内部的像素格式 ;
- YUV444 表示 每个像素都有独立的Y U V分量 , 色度分量没有进行下采样 , 与亮度分量保持相同的分辨率 ;
- P 表示 YUV 分量 是 平面格式 存储 的 , 表示 YUV 分量 , 分别存放在 三个不同的数组 中 ; 与之相对的事 打包格式存储 , YUV 分量集中存放在一个数组中 ;
2、YUV444 格式的优缺点
YUV444 格式 提供了高质量的色彩表现 , 因为每个像素都有完整的色彩信息 ;
YUV444 格式 没有进行色度分量的下采样 , 它也需要更多的存储空间来保存图像数据 , 进行数据传输时需要消耗更多的带宽 ;
3、YUV444P 数据存储
YUV444P 数据存储 格式如下图所示 :
不同类型的分量放在不同的数组中 ,
Y 灰度值 分量 , 存储在 最上面的数组中 , 在下图的 Y0 ~ Y7 的 灰度值 就是存放在一个数组中 ;
U 色度值 分量 , 存储在 中间数组中 , 在下图的 U0 ~ U7 的 色度值 就是存放在一个数组中 ;
V 色度值 分量 , 存储在 最下面的数组中 , 在下图的 V0 ~ V7 的 色度值 就是存放在一个数组中 ;
二、 YUV 4:2:2 格式存储
1、I422 格式说明
YUV 4:2:2 采样格式 , Y 亮度分量 与 UV 色度分量 的比例是 2:1 ;
如果将 YUV422 采样格式 按照 平面格式 Planar 进行存放 , 那么就是 YUV422P 格式 ;
YUV422P 格式 , 又叫 I422 格式 , 与 FFmpeg 中的 AV_PIX_FMT_YUV422P 像素格式标识符对应 ;
FFmpeg 中的 AV_PIX_FMT_YUV422P 像素格式标识符 说明 :
- AV_PIX_FMT_ 前缀是 FFmpeg 中 用于标识其内部的像素格式 ;
- YUV422 表示 每个像素都有独立的 Y 亮度分量 , UV 色度分量 的采样率则是亮度分量的一半 , 并且是水平方向上交替进行的 ;
- P 表示 YUV 分量 是 平面格式 存储 的 , 表示 YUV 分量 , 分别存放在 三个不同的数组 中 ; 与之相对的事 打包格式存储 , YUV 分量集中存放在一个数组中 ;
2、YUV422 格式的优缺点
YUV422P 格式 通常 用于需要 较高图像质量 , 但又希望 减少数据量的应用场景 , 如 : 标准清晰度电视 , 视频会议等 ;
由于 UV 色度分量的水平采样率减半 , 它可以节省一定的存储空间 , 同时在大多数观看条件下仍能保持较好的图像质量 ;
3、YUV422P 数据存储
YUV422P 数据存储 格式如下图所示 :
不同类型的分量放在不同的数组中 ,
Y 灰度值 分量 , 存储在 最上面的数组中 , 在下图的 Y0 ~ Y7 的 灰度值 就是存放在一个数组中 ;
U 色度值 分量 , 存储在 中间数组中 , 在下图的 U0 ~ U3 的 色度值 就是存放在一个数组中 , U 的个数只有 4 个 , 是 Y 分量个数的一半 ;
V 色度值 分量 , 存储在 最下面的数组中 , 在下图的 V0 ~ V3 的 色度值 就是存放在一个数组中 , V 分量 的个数只有 4 个 , 是 Y 分量 个数的一半 ;
上面的 数据 中 ,
- Y0 和 Y1 灰度值 使用 U0V0 色度值 , 2 个像素用了 4 字节 , 一个像素 2 字节 ;
- Y2 和 Y3 灰度值 使用 U1V1 色度值 , 2 个像素用了 4 字节 , 一个像素 2 字节 ;
- Y4 和 Y5 灰度值 使用 U2V2 色度值 , 2 个像素用了 4 字节 , 一个像素 2 字节 ;
- Y6 和 Y7 灰度值 使用 U3V3 色度值 , 2 个像素用了 4 字节 , 一个像素 2 字节 ;
三、 YUV 4:2:0 格式存储
1、I420 格式说明
YUV 4:2:0 采样格式 , Y 亮度分量 与 UV 色度分量 的比例是 4:1 ;
如果将 YUV420 采样格式 按照 平面格式 Planar 进行存放 , 那么就是 YUV420P 格式 ;
YUV420P 格式 , 又叫 I420 格式 , 与 FFmpeg 中的 AV_PIX_FMT_YUV420P 像素格式标识符对应 ;
FFmpeg 中的 AV_PIX_FMT_YUV420P 像素格式标识符 说明 :
- AV_PIX_FMT_ 前缀是 FFmpeg 中 用于标识其内部的像素格式 ;
- YUV420 表示 每个像素都有独立的 Y 亮度分量 , UV 色度分量 在水平和垂直方向上 的采样率都是亮度分量 Y 的一半 , 每个 2x2 的像素块共享一对色度分量值 ;
- P 表示 YUV 分量 是 平面格式 存储 的 , 表示 YUV 分量 , 分别存放在 三个不同的数组 中 ; 与之相对的事 打包格式存储 , YUV 分量集中存放在一个数组中 ;
2、YUV420 格式的优缺点
YUV422P 格式 通常用于视频压缩 和 传输领域 , 适用于 数字电视 / 流媒体 / 视频会议以及许多其他需要高效视频编码的场景 ;
YUV422P 格式 的 UV 色度分量的采样率较低 , 它可以显著减少图像数据的大小 , 同时仍然保持良好的视觉效果 , 特别是对于人眼对亮度信息更为敏感的特性而言 ;
3、YUV420P 数据存储
YUV420P 数据存储 格式如下图所示 :
不同类型的分量放在不同的数组中 ,
- Y 灰度值 分量 , 存储在 最上面的数组中 , 在下图的 Y0 ~ Y7 的 灰度值 就是存放在一个数组中 ;
- U 色度值 分量 , 存储在 中间数组中 , 在下图的 U0 ~ U3 的 色度值 就是存放在一个数组中 , U 的个数只有 4 个 , 是 Y 分量个数的一半 ;
- V 色度值 分量 , 存储在 最下面的数组中 , 在下图的 V0 ~ V3 的 色度值 就是存放在一个数组中 , V 分量 的个数只有 4 个 , 是 Y 分量 个数的一半 ;
上面的 数据 中 ,
- Y0 , Y1 , Y4 , Y5 灰度值 使用 U0V0 色度值 , 4 个像素用了 6 字节 , 一个像素 1.5 字节 ;
- Y2 , Y3 , Y6 , Y7 灰度值 使用 U1V1 色度值 , 4 个像素用了 6 字节 , 一个像素 1.5 字节 ;
- Y8 , Y9 , Y12 , Y13 灰度值 使用 U2V2 色度值 , 4 个像素用了 6 字节 , 一个像素 1.5 字节 ;
- Y10 , Y11 , Y14 , Y15 灰度值 使用 U3V3 色度值 , 4 个像素用了 6 字节 , 一个像素 1.5 字节 ;
4、NV12 格式数据存储
NV12 图片颜色编码格式 也是 YUV 420 格式的 , 又称为 " YUV420SP 格式 " , 只是其 UV 色度值的排列方式 与 I420 格式不同 ;
- 在 I420 格式中 , Y 分量是 平面格式 , UV 分量 也是平面格式 , Y 和 U 和 V 都分别在三个不同的数组中 ;
- 在 NV12 格式中 , Y 分量是 平面格式 , UV 分量 是打包格式 , Y 放在一个单独的数组中 , UV 放在一个单独的数组中 ;
5、NV21 格式数据存储
NV21 与 NV12 的区别就是 , UV 分量的顺序不同 ,
- NV12 中 , U 分量在前 , V 分量在后 ;
- NV21 中 , V 分量在前 , U 分量在后 ;