YUV 格式(转)

 

YUV 格式有两大类:Planar(平面格式) 和 Packed(打包格式)。

  • Planar:先连续存储所有像素点的 Y,紧接着存储所有像素点的 U,随后是所有像素点的 V。相当于将 YUV 拆分成三个平面 (plane) 存储。
  • Packed:每个像素点的 Y, U, V 是连续交替存储的。

YUV 分为三个分量,Y 表示亮度(Luminance),即灰度值;UV 表示色度(Chrominance),描述色彩和饱和度。

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

YUV 的存储格式与其采样方式密切相关。

主流的采样方式有 4 种:YUV(4:4:4), YUV(4:2:2), YUV(4:2:0), YUV(4:1:1)

  • YUV 4:4:4 采样:每一个 Y 对应一组 UV 分量(4 个 Y 采样就对应 4 个 Cb 和 4 个 Cr 采样)。平均一个像素占用 8+8+8 = 24 位。
  • YUV 4:2:2 采样:每两个 Y 共用一组 UV 分量(4 个 Y 采样就对应 2 个 Cb 和 2 个 Cr 采样)。平均一个像素占用 8+4+4 = 16 位。
  • YUV 4:2:0 采样:每四个 Y 共用一组 UV 分量(4 个 Y 采样就对应 2 个 Cb 或 2 个 Cr 采样)。平均一个像素占用 8+4+0 = 12 位。
  • YUV 4:1:1 采样:每四个 Y 共用一组 UV 分量(4 个 Y 采样就对应 1 个 Cb 和 1 个 Cr 采样)。平均一个像素占用 8+2+2 = 12 位。

YUV411 这个格式很少使用,这里就不介绍了。

YUV444 格式

YUV444P

        
Y1Y2Y3Y4Y5Y6Y7Y8
Y9Y10Y11Y12Y13Y14Y15Y16
Y17Y18Y19Y20Y21Y22Y23Y24
Y25Y26Y27Y28Y29Y30Y31Y32
U1U2U3U4U5U6U7U8
U9U10U11U12U13U14U15U16
U17U18U19U20U21U22U23U24
U25U26U27U28U29U30U31U32
V1V2V3V4V5V6V7V8
V9V10V11V12V13V14V15V16
V17V18V19V20V21V22V23V24
V25V26V27V28V29V30V31V32

YUV422 格式 ( YCbYCr / YUYV ,CbYCrY / UYVY / I422 ,422P , 422SP )

打包格式 (Packed) :YCbYCr / YUYV ,CbYCrY / UYVY / I422

平面格式 (Planar) :422P , 422SP

YCbYCr / YUYV

YUYVYUYV
Y1U1Y2V1Y3U2Y4V2
Y5U3Y6V3Y7U4Y8V4
Y9U5Y10V5Y11U6Y12V6
Y13U7Y14V7Y15U8Y16V8
Y17U9Y18V9Y19U10Y20V10
Y21U11Y22V11Y23U12Y24V12
Y25U13Y26V13Y27U14Y28V14
Y29U15Y30V15Y31U16Y32V16

CbYCrY / UYVY / I422

UYVYUYVY
U1Y1V1Y2U2Y3V2Y4
U3Y5V3Y6U4Y7V4Y8
U5Y9V5Y10U6Y11V6Y12
U7Y13V7Y14U8Y15V8Y16
U9Y17V9Y18U10Y19V10Y20
U11Y21V11Y22U12Y23V12Y24
U13Y25V13Y26U14Y27V14Y28
U15Y29V15Y30U16Y31V16Y32

YUV422P

        
Y1Y2Y3Y4Y5Y6Y7Y8
Y9Y10Y11Y12Y13Y14Y15Y16
Y17Y18Y19Y20Y21Y22Y23Y24
Y25Y26Y27Y28Y29Y30Y31Y32
U1U2U3U4U5U6U7U8
U9U10U11U12U13U14U15U16
V1V2V3V4V5V6V7V8
V9V10V11V12V13V14V15V16

YUV422SP

        
Y1Y2Y3Y4Y5Y6Y7Y8
Y9Y10Y11Y12Y13Y14Y15Y16
Y17Y18Y19Y20Y21Y22Y23Y24
Y25Y26Y27Y28Y29Y30Y31Y32
U1V1U2V2U3V3U4V4
U5V5U6V6U7V7U8V8
U9V9U10V10U11V11U12V12
U13V13U14V14U15V15U16V16

YUV420 格式( I420 / YU12 , YV12 , NV12 , NV21 )

分为:YUV420P ( I420 / YU12 , YV12 ),YUV420SP ( NV12 , NV21 )

YU12 是 I420 的别称,YV12 与之是 UV 顺序不同。

NV12 和 NV21 则是 UV 交织顺序不同。

I420 / YU12 (YUV420P)

又称 YU12 ( Y 后面紧跟着 V,位深为 12 )

        
Y1Y2Y3Y4Y5Y6Y7Y8
Y9Y10Y11Y12Y13Y14Y15Y16
Y17Y18Y19Y20Y21Y22Y23Y24
Y25Y26Y27Y28Y29Y30Y31Y32
U1U2U3U4U5U6U7U8
V1V2V3V4V5V6V7V8

YV12 (YUV420P)

与 I420(YUV420P) 的 UV 存储顺序相反

        
Y1Y2Y3Y4Y5Y6Y7Y8
Y9Y10Y11Y12Y13Y14Y15Y16
Y17Y18Y19Y20Y21Y22Y23Y24
Y25Y26Y27Y28Y29Y30Y31Y32
V1V2V3V4V5V6V7V8
U1U2U3U4U5U6U7U8

NV12 (YUV420SP)

UV 分量交织存储

        
Y1Y2Y3Y4Y5Y6Y7Y8
Y9Y10Y11Y12Y13Y14Y15Y16
Y17Y18Y19Y20Y21Y22Y23Y24
Y25Y26Y27Y28Y29Y30Y31Y32
U1V1U2V2U3V3U4V4
U4V4U5V5U7V7U8V8

NV21 (YUV420SP)

VU 分量交织存储。与 YUV420P(NV12) 的 UV 交织存储顺序相反

        
Y1Y2Y3Y4Y5Y6Y7Y8
Y9Y10Y11Y12Y13Y14Y15Y16
Y17Y18Y19Y20Y21Y22Y23Y24
Y25Y26Y27Y28Y29Y30Y31Y32
v1U1V2U2V3U3V4U4
v4U4V5U5V7U7V8U8

YUV 转 RGB

不管 YUV 的格式如何,最终得到的就是 Y、U、V 三个向量的值。

那么 Y、U、V 的数据如何转为 RGB 图片呢?毕竟 RGB 图片上有很多强大的算法。

YUV 与 RGB 的转换公式:

U 和 V 组件可以被表示成原始的 R、G,和 B:

从 RGB 到 YUV

如一般顺序,转移组件的范围可得到:

在逆转关系上,从 YUV 到 RGB,可得:

从 YUV 到 RGB

取而代之,以矩阵表示法(matrix representation),可得到公式:

                                                                                                     RGB 转 YUV 的转换矩阵

                                                                                                         YUV 转 RGB 的转换矩阵


链接:https://www.jianshu.com/p/cf583040c930

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值