YUV格式(快速扫盲)

YUVxxx格式的由来

在某一格式下的存储的数据大小和解析出来的数据大小是不一样的!

如在YUV420存储时:
Y0U0 Y1 Y2U2 Y3
Y4V4 Y5 Y6V6 Y7

在YUV420还原显示时:
Y0U0V4 Y1U0V4 Y2U2V6 Y3U2V6
Y4U0V4 Y5U0V4 Y6U2V6 Y7U2V6

所谓YUVxxx就是在存储时:

第一行YUV的比例“Y0U0 Y1 Y2U2 Y3”,其中4个Y,2个U,0个V,所以叫YUV420。

或者说每种“Ya:Ub:Vc”格式下,每四个像素,存a个Y,b个U,c个V,最后称之为“YUVabc”

packed和planer

packed 是指打包(或者简单理解为以一定规则YUV交叉存到数组中)
planer是指平面(简单理解为先把某一个元素如Y全部存在一起,就像一个平面展开一样,其他的U和V也是类似,但有些特殊格式是UV元素存在先交叉再平面存储的情况,不过Y始终是平面存储的)

为什么会有这么多格式

第一次接触这些格式的人一般都了解不全所有的格式,也没有专业的组织维护这些格式,更没有相关强制标准。这些格式大多是因为编程习惯、大公司内部规则、某些中立非强制标准平台(如https://fourcc.org)长期维护所形成的公约,大家都互相默契认可。谁都可以创造这些格式,所以五花八门的。

主要格式有哪些:

主要格式

为什么没有YUV420 packed?

因为交织排列的情况下,每个通道最少也是一个,不可能是0个(否则该通道就没了,颜色错误了),所以在packed情况下,最低也是YUV411(与Y41P定义相同)。
参考linux下V4L2的packed接口:
https://docs.kernel.org/userspace-api/media/v4l/pixfmt-packed-yuv.html
参考NVIDIA的Cuda接口
https://docs.nvidia.com/cuda/archive/10.1/npp/group__image__color__model__conversion.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值