YUV

一、预备知识

YUV也叫YCbCr,Y表示明亮度(Luminance、Luma),U和V则是色度浓度(Chrominance、Chroma)。Y、U和V三个分量的数据分别保存在三个Plane类中,可以通过getPlanes()得到。Plane实际是对ByteBuffer的封装。Image保证了plane #0一定是Y,#1一定是U,#2一定是V。且对于plane #0,Y分量数据一定是连续存储的,中间不会有U或V数据穿插,也就是说我们一定能够一次性得到所有Y分量的值。

YUV和RGB转换:

Y     Y = 0.299 x R + 0.587 x G + 0.114 x B + 0 
U    Cb = -0.169 x R - 0.331 x G + 0.499 x B + 128 
V    Cr = 0.499 x R - 0.418 x G - 0.0813 x B + 128  
R = Y + 1.402 (Cr-128)
G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
B = Y + 1.772 (Cb-128)

YUVFormats分成两个格式:

1、紧缩格式(packedformats):YUV是混合在一起的。

2、平面格式(planarformats):Y分量,U分量和V分量都是以独立的平面组织的

二、常见YUV

1、YUV444

其实就是YUV的数据各占用8位, 每个像素都由YUV组成

YYYYYYYYY VVVVVVVVV UUUUUUUU

2、YUV422

其实就是Y占用4位,U和V各占2位。

人对亮度比较敏感,而对色彩不怎么敏感。所以每个像素的亮度Y数据是绝对不动的,而色差数据可以进行丢弃

YYYYYYYY VVVV UUUU

3、YUV420

4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0以此类推。

每一行的相邻两个像素与下一行同位置的两个像素数据差异不大,可以进一步的丢数据。

YYYYYYYY VV UU

三、YUV420

参考文档:

 

YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)

最简单解释 YUV444,YUV422,YUV420中的4,2,0

java – Android Camera2 API YUV_420_888到JPEG

Android camera2 实现相机预览及获取预览帧数据流

Android: Image类浅析(结合YUV_420_888)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值