YUV与RGB图像格式之间的关系

来源:互联网 发布:mac输入拼音声调 编辑:程序博客网 时间:2024/05/16 11:54

注:本文讲述的格式全部使用每个像素位置8位的方式来编码Y频道,并使用每样例8位的方式来编码每个UV色度样例。但是,大多数YUV格式平均使用的每像素位数都少于24位,这是因为它们包含的UV样例比Y样例要少。

更多资料:

http://www.360doc.com/content/09/0223/15/59579_2623401.shtml

http://blog.csdn.net/fyang2007/archive/2009/08/21/4470078.aspx

1简介

RGB是按三基色加光系统的原理来描述颜色,而YUV则是按照亮度,色差的原理来描述颜色。

其中YCbCr 则是在世界数字组织视频标准研制过程中作为ITU - R BT1601建议的一部分, 其实是YUV经过缩放和偏移的翻版。其中YYUV中的Y含义一致, Cb , Cr同样都指色彩, 只是在表示方法上不同而已。在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员,其应用领域很广泛,JPEGMPEG均采用此格式。一般人们所讲的YUV大多是指YCbCrYCbCr有许多取样格式, 444 , 422 , 411420

2 YUV采样

YUV的优点之一是,色度频道的采样率可比Y通道低,同时不会明显降低视觉质量。有一种表示法可用来描述YUV的采样频率比例,为A:B:C

l        4:4:4表示色度频道没有下采样。每像素32位。

l        4:2:2表示2:1的水平下采样,没有垂直下采样。对于每两个U样例或V样例,每个扫描行都包含四个Y样例。每像素16位。

l        4:2:0表示2:1的水平下采样和2:1的垂直下采样。每像素16位or每像素12位。

l        4:1:1表示4:1的水平下采样。此格式不常用。

YUV格式分为打包格式和平面格式。在打包格式中,YUV足见存储在一个数组中。像素被组织到了一些巨像素组中,巨像素组的布局取决于格式。在平面格式中,三者则是作为三个单独的平面进行存储。

2.1 4:4:4格式,每像素32位

这是一个打包格式。其中每个像素都被编码为四个连续字节,如fourcc码的AYUV,其组织顺序如下所示。其中A的字节包含了alpha的值。

示例:

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3

2.2 4:2:2格式,每像素16位

支持两个4:2:2格式,fourcc码如下:

l         YUY2

l         UYVY

两个都是打包格式,其中每个巨像素都是编码为四个连续字节的两个像素。这样会使得色度水平采样乘以系数2。

YUY2

 

UYVY

 

示例:

下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

存放的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 V3

映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]

 

2.3 4:2:0格式,每像素16位

IMC1

 

 

IMC3

示例:

下面八个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

[Y5 U5 V5] [Y6 U6 V6] [Y7U7 V7] [Y8 U8 V8]

存放的码流为:Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8

映射出的像素点为:[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]

              [Y5 U0 V5] [Y6 U0 V5] [Y7U2 V7] [Y8 U2 V7]

3 YUV444 to RGB24

这里只讨论YUV4:4:4与RGB24之间的转换。要将4:2:0或4:2:2YUV转换为RGB,建议先将YUV数据转换为4:4:YUV,然后再转换为RGB。

转换公式:

Clip()表示剪辑到(0,255)中。