YUV 图像理解

什么是YUV(原文链接

YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间

  在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号B-Y(即U)、R-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。

  由此可见,RGB和YUV都属于颜色空间(或者叫“色彩空间”),如果不清楚色彩空间的概念。

分量意义

Y:表示明亮度(Luminance或者Luma),也被叫做“灰阶值”;

UV:表示为色度(Chrominance或者Chroma),作用是描述的是色彩和饱和度,用于指定像素的颜色。

格式:

yuv格式主要分成两种,一种为planar(棋盘格式)和packed

planer:存储格式为先存储所有的Y分量,再存储U分量,再存储V分量。yuv444存储格式如下图所示

 packed:每一个像素都是由yuv存储,例如YUV YUV,具体的yuv444如下图所示:

 

yuv 存储格式中,又可以分为多种存储格式,主要分成以下三种:

yuv444: 表示每一个像素中的Y分量都对应的有一个U分量和V分量;

yuv422:表示每一个像素中的相邻的两个Y分量公用一个U分量和V分量,按照颜色进行区分;

 

yuv420:表示每一个像素中的相邻的4个Y分量共用一组U分量和V分量,Y1Y2Y9Y10共用U1和V1如yuv444存储格式如下图所示。

注:同一种存储类型内部排列顺序不一样,也会导致显示不正常,比如花屏,和绿屏的现象。比如yuv420 分为yuv420sp和yuv420p等的排列方式。yuv420p格式的 yyyyyyyyuuvv。yuv420sp则uv为交错存储,为方便理解如下图所示:

 格式

yuv分成很多格式,例如yuv420p,yuv420sp等等,那么常见的yuv planar格式分成哪些呢?目前常见的格式如下所列。

yuv420p:又被称为I420,YU12,IYUV,UV平面的stride,width和height都是Y平面的1/2,注意:stride 不一定和width相等。

YV12:名字和YU12只有一个U、V之差。这个格式也是yuv420的一种,唯一不一样的地方是在存储过程中,U平面和V平面的顺序相反,也就是说先存储Y接着存储V最后存储U

J420:和I420存储方式上完全一样,不同的地方是y分量有取值范围(0-255)而不是有限范围(16-240,limited range,在 iOS 上也叫做 video range)

IMC1:与I420在存储方式上一样,但是在存储中,会把没有用到的空间留出来,保持和Y一样,也就是说UV分量的stride和Y一样。存储如下图所示:

 

IMC3:和IMC1一样,只是再存储的时候改变了uv的存储顺序。

I422:UV分量的stride、width和Y分量的1/2,但是height是Y分量的一样

J422: 与I422的差别与J420与J420差别一样,这里不再描述。

NV12:只有2个平面分别是Y平面和UV平面,因此Y的width,stride和UV平面的width,stride一样长,但是height只有Y平面的1/2,它是属于YUV420SP格式,因此在后面的uv存储为u0v0u1v1,内存可以理解为

y0y1y2y3y4y5y6y7
u0v0u1v1u2v2u3v3

注:NV12 是 iOS 相机(AVCaptureOutput)可直接输出的两种视频帧格式之一,另外一种是 BGRA32(kCVPixelFormatType_32BGRA)。

在 iOS 上,NV12 还分为 Full Range (0-255, kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) 和 Video Range (16-240, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange),区别仅为亮度(Y)分量的取值范围,一般而言,Full Range 适用于静态图像(拍照),Video Range 适用于视频采集(摄像)。

NV21:和NV12一样也是属于yuv420sp的格式的一种,和NV12的区别是先存储v再存储u,因此这里不再进行描述。

AYUV:

是 Packed 打包格式,其中每个像素编码为四个连续字节,每个像素在内存中按照 V, U, Y, A 的顺序排列(A 指 alpha 通道),如下图所示:

AYUV Format

 YUYV:也经常被称作为V422YUY2YUNV,是两个y分量共用一组uv,从内存的布局上为YUYV,

y0u0y1v0y2u1y3v1

UYVY:也经常被称作为 Y422UYNV,和YUYV差不多,只是uv的顺序相反而已,不再描述。

RGB和YUV420P格式大小计算

和RGB比较,计算一帧的数据大小,假设分辨率为1280X720:

yuv420p:1280x720x1.5 = 1.318M 由于uv的with和height都只有1/2,所以y的数据量为width x 1 x height x 1 + u 的 width x 1/2 x height x 1/2+ v的stride x 1/2 x height x 1/2 因此 最后得出 stride x height x 1.5

RGB : width x height x 3

相比之下,yuv420p比rgb还是要小很多的。

参考资料

https://paaatrick.com/2020-01-26-yuv-pixel-formats/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值