YUV格式
YUV
YUV中Y代表明度信息,UV代表色度信息,其中Y∈[0,1] U,V∈[−0.5,0.5]
YCbCr是YUV的经过缩放和偏移的版本,根据量化范围不同分为limit range和full range
- limit range Y∈[16,235],Cb∈[16,240],Cr∈[16−240]
- full range Y,Cb,Cr∈[0,255]
YUV转YCbCr limit range进行线性映射即可
Y′=(235−16)∗Y+16
Cb=(240−16)×(U+0.5)+16
Cr=(240−16)×(V+0.5)+16
YUV转YCbCr full range同理,不过大部分使用的都是limit range
YUV转RGB
YUV转RGB公式不固定,基于BT.601和BT.709的不同标准变换的标准不一样,不过都是用的线性变换
- BT.601
⎣⎡YCbCr⎦⎤=⎣⎡0.2991.772−0.2991.4020.7010.5871.772−0.5871.402−0.5870.1141.7720.8861.402−0.114⎦⎤⎣⎡RGB⎦⎤
- BT.709
⎣⎡YCbCr⎦⎤=⎣⎡0.21261.8556−0.21261.57480.78740.71521.8556−0.71521.5748−0.71520.07221.85560.92781.5748−0.0722⎦⎤⎣⎡RGB⎦⎤
量化版YCbCr乘相应矩阵即可
YUV数据格式
因为YUV的特性,采样时可以通过公用UV来减少采样的数据,同时保证图像质量不会大幅下降,根据公用UV的多少分为以下三种格式
1. YUV444
一个Y对应一组UV
1 2
| YUV YUV YUV YUV YUV YUV YUV YUV
|
2. YUV422
两个Y对应一组UV
3. YUV420
四个Y对应一组UV
由于YUV的特性,即使只有Y显示的图像也可以分辨,所以YUV的存储可分为两大类
- planar: 先存Y后存UV
- packed: YUV交错存储
其中packed并不常见
以下为常见格式示例
YUV420p
- I420: YYYYYYYY UU VV
- YV12: YYYYYYYY VV UU
YUV420sp
- NV21: YYYYYYYY VU VU
- NV12: YYYYYYYY UV UV
标准文档
- BT.601
- BT.709