《视频基础知识 —— 像素、分辨率、帧率、YUV》

 

1.什么是像素、分辨率以及帧率?

 

  像素是图片显示的基本单位。

 

  分辨率是指一张图片的宽度和高度的乘积,单位是像素。

 

  例如: 1920 x 1080像素是指宽度为1920像素,高度为1080像素,乘积为1920 x 180 = 2073600,也就是将近两百万的像素。(1080P是指视频分辨率为1920 x 1080逐行扫描)

 

  分辨率是指每帧图像的像素数量,决定了图像的清晰度。

    帧率是指每秒显示多少帧图像,决定了视频的流畅度。

 

1.什么是YUV

  • Y(亮度分量):表示像素的亮度,影响图像的明暗程度。

  • U(色度分量):表示图像的蓝色差值,决定图像中蓝色的强度。

  • V(色度分量):表示图像的红色差值,决定图像中红色的强度。

  人眼对亮度敏感、对颜色迟钝。因此色度可以降低采样。

 

2.YUV采样格式

  YUV444 每个像素都有 Y U V
  YUV422 每 2 个像素共用一组 UV
  YUV420 每 2x2 像素共用一组 UV

  一般H264、H265使用的是4:2:0。

YUV420的根据UV分量不同的存储方式分为以下几种

  NV12NV21I420YU12 都是YUV色彩空间格式,它们主要的区别在于色度(U和V)分量如何存储。

NV12:

  • Y 分量:每个像素一个 Y 值(亮度),存储在一个连续的内存块中。

  • UV 分量:每两个像素共享一组 U 和 V 值色度)。U 和 V 值交替存储,U 在 V 的前面。

NV21:

  • Y 分量:每个像素一个 Y 值(亮度),存储在一个连续的内存块中。

  • UV 分量:每两个像素共享一组 U 和 V 值(色度)。U 和 V 值交替存储,U 在 V 的前面。

I420(YUV420P):

  • Y 分量:每个像素一个 Y 值,存储在一个连续的内存块中。

  • UV 分量:U 和 V 分量分别存储,每个分量占用一块单独的内存区域。每两个像素共享一个 U 值和 V 值。

YU12:

  • Y 分量:与 I420 类似,Y 分量占用一个连续的内存区域。

  • UV 分量:与 I420 类似,U 和 V 分量分别存储,每个分量占用一块单独的内存区域。

总结:

格式    Y 存储方式           U/V 存储方式                存储顺序
NV12    每个像素一个 Y 值    每两个像素共用一组 UV         Y -> UV(U 和 V 交替,U 在前)
NV21    每个像素一个 Y 值    每两个像素共用一组 UV         Y -> UV(U 和 V 交替,V 在前)
I420    每个像素一个 Y 值    每 2x2 像素共用一组 U 和 V    Y -> U -> V
YU12    每个像素一个 Y 值    每 2x2 像素共用一组 U 和 V    Y -> U -> V(与 I420 相同)

  备注:NV12和NV21中每两个像素共享一组 U 和 V 值(色度),这个指的是存储方式。不是采样方式,采样方式依旧是4个像素点共用一组UV。

必须能回答:

  • 摄像头给的是 NV12 还是 NV21?

  • 编码器吃的是 I420 还是 NV12?

❗ 搞错 = 颜色全反 / 绿脸 / 紫脸

3.实际应用

经典链路:

Sensor RAW → ISP → YUV → 编码

  Sensor出来是bayer,而ISP输出的是YUV,可能是NV12或者NV21。

 

  一张1080P  YUV420的图片的大小怎么计算:

一个像素点的大小:
Y占一个字节
U因为4个像素点共用,所以占0.25个字节
V跟U同理,也占0.25个字节
综上:一个像素点YUV占1.5个字节。

1080P = 1920 x 1080 x 1.5 = 3M  (所以YUV444乘以3  YUV422乘以2)

  

 

扩展:

  YUV444的内存大小跟RGB是一样的。那有什么区别?

  RGB是“显示格式”,YUV是“传输和编码格式”。

 

posted @ 2026-01-15 20:22  一个不知道干嘛的小萌新  阅读(2)  评论(0)    收藏  举报