注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学习笔记

正确的方法如同学习书法,开始的时候要临摹,临摹好了然后创造自己的风格。

 
 
 

日志

 
 

[YUV相关]YUV格式及相互转换  

2013-12-18 20:26:24|  分类: image/video |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.定义

YUV是一种颜色的编码方法,Y'UVYUVYCbCrCYPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”代表明亮度(LuminanceLuma),也就是灰阶值; 而“U”和“V”表示的则是色度(ChrominanceChroma),作用是描述图像色彩及饱和度,用于指定像素的颜色。

“亮度”是通过RGB输入信号来创建的,方法是将RGB信号的特定部分叠加到一起。色度则定义了颜色的两个方面——色调与饱和度,分别用CrCb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异,而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异,此即所谓的色差信号,也就是我们常说的分量信号(YR-YB-Y)。 色差分为逐行和隔行显示,一般来说分量接口上面都会有几个字母来表示逐行和隔行的。用Y/Cb/Cr表示的是隔行,用Y/Pb/Pr表示则是逐行,如果电视只有Y/Cb/Cr分量端子的话,则说明电视不能支持逐行分量,而用Y/Pb/Pr分量端子的话,便说明支持逐行和隔行2种分量了。 分量色差传送的视频有多种方式,例如将三原色直接传送的RGB方式,将所有的颜色作同等处理,拥有最高的画质,在专业的彩色监视器及电脑显示器上均以此种方式。但由于RGB方式对传输带宽和存储空间消耗太大,为节省传输带宽,还使用分量色差方式,从RGB转换为亮度(Y)与色差(Cb/CrPb/Pr,分别代表隔行扫描及逐行扫描)。分量/色差端子采用三个同轴端子,对应的端子分别标记为绿色(亮度)、红色(色调)和蓝色(饱和度),这也成为目前消费级视频器材上的主流方式。

Y'UVYUV通常用来描述模拟信号,而相反的YCbCrYPbPr则是用来描述数位的影像信号,例如在一些压缩格式内MPEGJPEG中,现今,YUV在电脑系统上广泛使用。YUV Formats分为两个格式,YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。

打包格式(packed formats):将YUV值存储成Macro Pixels阵列,和RGB的存放格式类似。

平面格式(planar formats):将YUV的三个分量分别存放在不同的矩阵中。

紧缩格式中的YUV是混合在一起的,对于YUV4:4:4格式而言,用紧缩格式是合适的,因此就有了UYVYYUYV等。平面格式是指每Y分量,U分量和V分量都是以独立的平面组织的,也就是说所有的U分量必须在Y分量后面,而V分量在所有的U分量后面,此一格式适用于采样(subsample)。平面格式有I4204:2:0)、YV12IYUV等。

2.历史

Y'UV的发明是由于彩色电视与黑白电视的过渡时期,黑白电视只有Y信号,也就是亮度值,到了彩色电视的指定,是以YUV/YIQ的格式来处理彩色电视图像,把UV视作表示彩度的CChrominanceChroma),如果忽略C信号,那么剩下的YLuma)信号,就跟之前的黑白电视信号相同,这样一来便解决彩色电视机与黑白电视机的相容问题。Y'UV的最大优点在于只需占用极少的带宽。

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

3.YUV和RGB的转化

YCbCr颜色空间和它的变换(通常写为YUV)是一种流行而高效的表示一个颜色图像的方法。Y是亮度值,由RGB的加权平均可以得到:Y=kr*R+kg*G+kb*Bkr+kg+kb=1),这里k是加权因子。

颜色信号可以由不同的颜色差别来表示,对于一个颜色图像的完整的描述由给定Y和三个色差:CbCrCg来表示。Cb+Cr+Cg是一个常数,那么我们只需要两个色度参数就可以了,第三个可以通过其他两个计算出来。在YCbCr空间中,只有YCbCr值被传输和存储,而且CbCr的分辨率可以比Y低,因为人类的视觉系统对于亮度更加敏感,这就减少了表示图像的数据量,通常的观察情况下,RGBYCbCr表示的图像看上去没有什么不同,对于色度采用比亮度低的分辨率进行采样是一种简单而有效的压缩办法。一个RGB图像在捕捉之后转换为YCbCr格式用来减少存储和传输负担。在现实图像之前,再转回RGB。因为Cg=B+R+G-3Y-Cb-Cr,且kb+kr+kg=1,所以不需要存储和传输Cg参数。

Y=kr*R+(1-kb-kr)*G+kb*B

Cb=0.5/(1-kb)*(B-Y)

Cr=0.5/(1-kr)*(R-Y)

 

R=Y+(1-kr)/0.5*Cr

G=Y-2*kb*(1-kb)/(1-kb-kr)*Cb-2*kr(1-kr)/(1-kb-kr)*Cr

B=Y+(1-kb)/0.5*Cb

ITU-RBT601协议定义了kb=0.114kr=0.299,那么代换参数就有了如下等式:

Y=0.299R+0.587G+0.114B

Cb=0.564(B-Y)

Cr=0.713(R-Y)

 

R=Y+1.402Cr

G=Y-0.344Cb-0.714Cr

B=Y+1.772Cb

YCbCr采样格式

3.1. YUV 4:4:4

4:4:4采样就是说三种元素YCbCr有同样的分辨率,这样的话,在每个像素点上都对这三种元素进行采样,数字4是指在水平方向上对于各种元素的采样率,比如说,每四个亮度采样点就有四个Cb和四个Cr采样值。4:4:4采样完整地保留了所有的信息值。YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。

YUV4:4:4

Y00 U00 V00

Y01 U01 V01

Y02 U02 V02

Y03 U03 V03

Y10 U10 V10

Y11 U11 V11

Y12 U12 V12

Y13 U13 V13

3.2. YUV4:2:2

4:2:2采样(有时记为YUY2),每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。采样之后的数据如下所示:

YUV4:2:2

Y00 U00

Y01 V01

Y02 U02

Y03 V03

Y10 U10

Y11 V11

Y12 U12

Y13 V13

3.3. YUV4:1:1

4:1:1的色度抽样,是在水平方向上对色度进行4:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存。

YUV4:1:1

Y00 U00

Y01

Y02 V02

Y03

Y10 U10

Y11

Y12 V12

Y13

3.4. YUV4:2:0

4:2:0并不意味着只有YCb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x222列相邻的像素组成的宏像素需要占用6字节内存。

YUV4:2:0

Y00 U00

Y01

Y02 U02

Y03

Y10 V10

Y11

Y12 V12

Y13

4.YUV各格式之间的转化

YUV各格式之间的相互转化一般是先还原成YUV444格式,再进行其它格式的转换,进行多次格式转换,图像数据并不丢失,但是表示UV色度和饱和度会略有差异,以YUV422转化为YUV420为例。首先是YUV444,其数据为:

YUV4:4:4

Y00 U00 V00

Y01 U01 V01

Y02 U02 V02

Y03 U03 V03

Y10 U10 V10

Y11 U11 V11

Y12 U12 V12

Y13 U13 V13

转换为YUV422之后,其数据为:

YUV4:2:2

Y00 U00

Y01 V01

Y02 U02

Y03 V03

Y10 U10

Y11 V11

Y12 U12

Y13 V13

将其还原为YUV444,其数据为:

还原为YUV444

Y00 U00 V01

Y01 U00 V01

Y02 U02 V03

Y03 U02 V03

Y10 U10 V11

Y11 U10 V11

Y12 U12 V13

Y13 U12 V13

在转化为YUV420,其数据为:

压缩为YUV420

Y00 U00

Y01

Y02 U02

Y03

Y10 V11

Y11

Y12 V13

Y13

与直接压缩为YUV420的数据相比,只是数据V略有差异,但是数据量是一致的。其原因是对图像进行压缩之后,图像丢失了部分数据,但是因为不同的像素点之间使用相邻的公用数据,即图像丢失的数据是变化部分。

  评论这张
 
阅读(1459)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017