视频图像格式YUV详解

一 简介

YUV 是一种表示颜色的模型。基于人类眼睛对亮度高度敏感、对颜色敏感度低于亮度的生理特征 YUV在对照片或视频编码时完整保存像素的亮度分量(Y),根据不同要求采样保存UV分量。

根据历史的演进,YUV的发明是由于彩色电视与黑白电视的过渡时期。黑白视频只有Y(Luma,Luminance)视频,也就是灰阶值。到了彩色电视规格的制定,是以YUV/YIQ的格式来处理彩色电视图像。

YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。

YUV和Y'UV通常用来编码电视的模拟信号,而YCbCr则是用来描述视频的数字信号,适合视频与图片压缩以及传输,例如MPEG、JPEG。但在现今,YUV通常已经在电脑系统上广泛使用。

二 理解亮度敏感

什么是亮度敏感?只有理解了亮度敏感,我们才能更好的理解YUV。先看如下图:

上图是一张纯黑的图片,对于眼睛来说是没有亮度可言的。而下图:

可以明显看到图中白色的“二”字,因为“二”字的亮度明显高于周围,所以我们很清晰的看到这个字。 再看下图:

上图中可以很清晰的看到一个小人和一个三角形、正方形。 小人是白色的,三角形和正方形是浅灰色的,但是相对于小人,你是不是对三角形和正方形的颜色分辨的不太清晰,相信我稍微加重或者减轻浅灰色,你都不太能感觉出来,但你能明显的感觉的它们是什么形状,黑白电视也是由此受到启发的。

到这里我们就知道了什么是亮度,而且明白我们的眼睛确实是对亮度很敏感。而YUV中的Y就是指黑白的图画,UV就是颜色。一张色彩艳丽的图如果存储成YUV数据的话,Y就是这张图的黑白照,UV就是把它涂上颜色;因此我们完全可以抛弃掉UV,只保留Y,那样就是看这张图的黑白照而已~

 三 YUV的采样和存储

由于人眼对 Y 的敏感度远超于对 U 和 V 的敏感,所以有时候可以多个 Y 分量共用一组 UV,这样既可以极大得节省空间,又可以不太损失质量。因此才会出现YUV 420,YUV 422,YUV 444的格式。

其实图像最开始是用到在电视上的,所以我们可以用电视做为想象和参考,电视以前都是电子仪扫描,所以我们首先要明白什么是扫描线,

什么是扫描线?这是关于电视显示的术语,用来描述电视是如何显示画面的。wiki中是这么解释的:

电视萤幕由电子枪射出的电子,经由磁场偏向后打在屏幕上而发光,因此每一个图框都由电子枪的扫描线画出来。
电子枪的扫描线从左上角像素点到右下角像素点顺序移动,喷射电子显像。

再来说回YUV,因为UV分别代表不同颜色信号,所以直接使用R与B信号表示色度的UV。 也就是说UV信号告诉了电视要偏移某象素的颜色,而不改变其亮度。 或者UV信号告诉了显示器使得某个颜色亮度依某个基准偏移。 UV的值越高,代表该像素会有更饱和的颜色。

彩色图像记录的格式,常见的有RGB、YUV、CMYK等。 彩色电视最早的构想是使用RGB三原色来同时传输。这种设计方式是原来黑白带宽的3倍,在当时并不是很好的设计。RGB诉求于人眼对色彩的感应,YUV则着重于视觉对于亮度的敏感程度,Y代表的是亮度,UV代表的是彩度(因此黑白电影可省略UV,相近于RGB),分别用Cr和Cb来表示,因此YUV的记录通常以Y:UV的格式呈现。

采样通常用3部分的比例表示J:a:b(例如4:2:2)。如果有alpha通道,也用4个数的比例(例如4:2:2:4)。

概念上来说,我们考虑的是J个像素宽,2个像素高的区域。

J: 水平采样的参考,也可以说是宽度,通常是4(因为最小宏像素是4个Y共享一个uv,所以取4)
a: 第一行J个像素的色度个数(Cr, Cb)
b: 第一行和第二行有差别的色度个数(Cr, Cb)。注意b的值通常为0或者等于a。
主流的采样方式有三种:YUV4:4:4,YUV4:2:2,YUV4:2:0
可以看到4:4:4格式的亮度、色度采样分布。就像图中所表示的,画面中每个象素都有与之对应的色度和亮度采样信息。

其次就是4:2:2,就是说,每4点Y采样,就有2点Cb和2点Cr。在这种格式中,色度信号的扫描线数量和亮度信号一样多,但是每条扫描线上的色度采样点 数却只有亮度信号的一半。当4:2:2信号被解码的时候,“缺失”的色度采样,通常由一定的内插补点算法通过它两侧的色度信息运算补充。
再看4:2:2格式亮度、色度采样的分布情况。在这里,每个象素都有与之对应的亮度采样,同时一半的色度采样被丢弃,所以我们看到,色度采样信号每隔 一个采样点才有一个。当着张画面显示的时候,缺少的色度信息会由两侧的颜色通过内插补点的方式运算得到。就像上面提到的那样,人眼对色度的敏感程度不如亮 度,大多数人并不能分辨出4:2:2和4:4:4颜色构成的画面之间的不同。
色度信号分辨率最低的格式,也就是DVD所使用的 格式,就是4:2:0了。事实上4:2:0是一个混乱的称呼,按照字面上理解,4:2:0应该是每4点Y采样,就有2点Cb和0点Cr,但事实上完全不是 这样。事实上,4:2:0的意思是,色度采样在每条横向扫描线上只有亮度采样的一半,扫描线的条数上,也只有亮度的一半!换句话说,无论是横向还是纵向, 色度信号的分辨率都只有亮度信号的一半。

YUV的格式

YUV格式有两大类:planar和packed。

  •  对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
  •  对于packed的YUV格式,每个像素点的Y,U,V是连续交叉存储的。

(1) YUVY 格式 (属于YUV422)

image

YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。

(2) UYVY 格式 (属于YUV422)

image

UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样。

(3) YUV422P(属于YUV422)

image

YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00。

(4)YV12,YU12格式(属于YUV420)

image

YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。注意,上图中,Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00,其他依次类推。

(5)NV12、NV21(属于YUV420)

image

NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种类似,即Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00


I420: YYYYYYYY UU VV    =>YUV420P
YV12: YYYYYYYY VV UU    =>YUV420P
NV12: YYYYYYYY UVUV     =>YUV420SP
NV21: YYYYYYYY VUVU     =>YUV420SP

  • 5
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值