YUV 与RGB之间的变换
2017-02-18 14:54
176 查看
颜色空间是一个三维坐标系统,每一种颜色由一个点表示。在 RGB 颜色空间中,红,绿,蓝是基本元素。RGB
格式是显示器通常使用的格式。在 YUV 空间中,每一个颜色有一个亮度信号 Y,和两个色度信号 U 和
V。亮度信号是强度的感觉,它和色度信号断开,这样的话强度就可以在不影响颜色的情况下改变。YUV 格式通常用于
PAL制,即欧洲的电视传输标准,而且缺省情况下是图像和视频压缩的标准。
大多数的计算机图形工作者熟悉 RGB,而大多数的具有图像背景的则熟悉
YUV。RGB可以认为是三个分别表示红,绿,蓝颜色的灰度图像。把它们组合在一起就可以产生各种各样的颜色。
YUV
使用RGB的信息,但它从全彩色图像中产生一个黑白图像,然后提取出三个主要的颜色变成两个额外的信号来描述颜色。把这三个信号组合回来就可以产生一个全彩色图像。
那么 YUV 是怎么产生的呢?当时,工程师们需要找到一种办法来使彩色电视广播可以兼容黑白电视。他们使用的彩色信号也需要保全带宽因为
RGB 数据不能适合信号空间的限制。通过合并颜色信息,YUV 使用比 RGB 更小的带宽,并且与黑白电视兼容。
YUV 使用红,绿,蓝的点阵组合来减少信号中的信息量。Y 通道描述 Luma 信号,它与亮度信号有一点点不同,值的范围介于亮和暗之间。
Luma 是黑白电视可以看到的信号。U (Cb) 和 V (Cr) 通道从红 (U) 和蓝 (V)
中提取亮度值来减少颜色信息量。这些值可以从新组合来决定红,绿和蓝的混合信号。
一些对 YUV 的较深的研究揭示了当从视频图像中提取时,为什么蓝色总是看起来不很舒服的两个原因。U 通道的范围是从红到黄,V
通道的范围是从蓝到黄。因为黄色其实是红和绿,红色基本上被传输三次,
绿色是两次而蓝色只有一次。重建亮度部份揭示了另外一个原因,蓝色通道只有11%的亮度。
Luma = 30% 红 + 59% 绿 + 11% 蓝
下面简介一下YUV和RGB的转换。
VGA卡通过设置红,蓝,绿三色的强度来显示颜色。这三种颜色形成笛卡尔坐标系统的轴线。任何一种颜色都是这个颜色空间的一点。你不需要使用这个坐标来定义颜色空间的一点。一个灰度图像只使用颜色空间中那些有着相同红,蓝,绿强度的点。
我们可以作一个坐标,其中红,蓝,绿是相等的。这个坐标叫做亮度坐标。我们还可以通过从亮度中提取红和蓝部份作两个新的坐标。新的坐标是红和蓝的色度值,用于添加颜色到图像中。亮度坐标标识为
Y,蓝的色度坐标标识为 U,红的色度坐标标识为
V。我们建立的这三个新坐标形成了JPEG图像中使用的三个部份。以下的公式用于在这两个坐标系统之间互相转换。
Y=0.299R+0.587G+0.114B
U=-0.1687R-0.3313G+0.5B+128
V=0.5R-0.4187G-0.0813B+128
R=Y+1.402 (V-128)G
=Y-0.34414 (U-128)-0.71414(V-128)B
=Y+1.772(U-128)
需要注意的是我们只使用RGB颜色空间中三个坐标都为正的象限。当我们从YUV转换到RGB时,我们必须确保坐标不是负数而且它们没有超过允许的最大值。那么为什么我们要使用YUV颜色空间呢?那时因为人的眼睛对亮度的敏感高于对色度的敏感。通常
JPEG 在进行其它任何压缩前会丢掉 3/4 的色度信息。这可以减少图像所要存储信息的1/2。如果三个部份全部存储的话,4
pixels就需要3 x 4 = 12个值。如果两个部份的 3/4 的信息可以丢掉不要的话,我们就只需要 1 x 4 + 2 x 1
= 6 个值。
本文来自:我爱研发网(52RD.com) 详细出处:http://www.52rd.com/bbs/dispbbs.asp?boardid=87&id=103634&star=1#332789
YUV图象存储机制:
Y:U:V=8:4:4
Y:
占用1个字节(8bit)
U,V:
每2个象素占用1个字节(8bit),及每个象素占4bit
Y:U:V=8:2:2
Y:
占用1个字节(8bit)
U,V:
每4个象素占用1个字节(8bit),及每个象素占2bit
用解码器对该文件(clock.mpg)解压后产生的"YUV"目标码文件的说明:
Y文件的长度为:84,480
BYTE
U,V文件的长度分别为:21,120
BYTE
84480/21120=4
对该组YUV文件可得出结论:Y:U:V=8:2:2
RGB图象存储机制:
R:表示红色信息,占用1个字节(8bit)
G:表示绿色信息,占用1个字节(8bit)
B:表示蓝色信息,占用1个字节(8bit)
R:G:B
=
8:8:8
YUV与RGB图象之间的变换关系:
Y=
0.2990R+0.5870G+0.1140B
U=-0.1687R-0.3313G+0.5000B
+
128
V=
0.5000R-0.4187G-0.0813B
+
128
反变换关系:
R=
1.0Y
+
0
+1.402
(V-128)
G=
1.0Y
-
0.34413(U-128)-0.71414(V-128)
B=
1.0Y
+
1.772
(U-128)+0
另一种变换关系:
Y
=
<(R
+
2G
+
B)/4>
U
=
R
-
G
V
=
B
-
G
反变换:
G
=
Y
-
<(U
+V)/4>
R
=
U
+
G
B
=
V
+
G
说明:式中表示<=W的最大整数
以前曾见看过这类的文章,
下面是他们的转换公式。
格式是显示器通常使用的格式。在 YUV 空间中,每一个颜色有一个亮度信号 Y,和两个色度信号 U 和
V。亮度信号是强度的感觉,它和色度信号断开,这样的话强度就可以在不影响颜色的情况下改变。YUV 格式通常用于
PAL制,即欧洲的电视传输标准,而且缺省情况下是图像和视频压缩的标准。
大多数的计算机图形工作者熟悉 RGB,而大多数的具有图像背景的则熟悉
YUV。RGB可以认为是三个分别表示红,绿,蓝颜色的灰度图像。把它们组合在一起就可以产生各种各样的颜色。
YUV
使用RGB的信息,但它从全彩色图像中产生一个黑白图像,然后提取出三个主要的颜色变成两个额外的信号来描述颜色。把这三个信号组合回来就可以产生一个全彩色图像。
那么 YUV 是怎么产生的呢?当时,工程师们需要找到一种办法来使彩色电视广播可以兼容黑白电视。他们使用的彩色信号也需要保全带宽因为
RGB 数据不能适合信号空间的限制。通过合并颜色信息,YUV 使用比 RGB 更小的带宽,并且与黑白电视兼容。
YUV 使用红,绿,蓝的点阵组合来减少信号中的信息量。Y 通道描述 Luma 信号,它与亮度信号有一点点不同,值的范围介于亮和暗之间。
Luma 是黑白电视可以看到的信号。U (Cb) 和 V (Cr) 通道从红 (U) 和蓝 (V)
中提取亮度值来减少颜色信息量。这些值可以从新组合来决定红,绿和蓝的混合信号。
一些对 YUV 的较深的研究揭示了当从视频图像中提取时,为什么蓝色总是看起来不很舒服的两个原因。U 通道的范围是从红到黄,V
通道的范围是从蓝到黄。因为黄色其实是红和绿,红色基本上被传输三次,
绿色是两次而蓝色只有一次。重建亮度部份揭示了另外一个原因,蓝色通道只有11%的亮度。
Luma = 30% 红 + 59% 绿 + 11% 蓝
下面简介一下YUV和RGB的转换。
VGA卡通过设置红,蓝,绿三色的强度来显示颜色。这三种颜色形成笛卡尔坐标系统的轴线。任何一种颜色都是这个颜色空间的一点。你不需要使用这个坐标来定义颜色空间的一点。一个灰度图像只使用颜色空间中那些有着相同红,蓝,绿强度的点。
我们可以作一个坐标,其中红,蓝,绿是相等的。这个坐标叫做亮度坐标。我们还可以通过从亮度中提取红和蓝部份作两个新的坐标。新的坐标是红和蓝的色度值,用于添加颜色到图像中。亮度坐标标识为
Y,蓝的色度坐标标识为 U,红的色度坐标标识为
V。我们建立的这三个新坐标形成了JPEG图像中使用的三个部份。以下的公式用于在这两个坐标系统之间互相转换。
Y=0.299R+0.587G+0.114B
U=-0.1687R-0.3313G+0.5B+128
V=0.5R-0.4187G-0.0813B+128
R=Y+1.402 (V-128)G
=Y-0.34414 (U-128)-0.71414(V-128)B
=Y+1.772(U-128)
需要注意的是我们只使用RGB颜色空间中三个坐标都为正的象限。当我们从YUV转换到RGB时,我们必须确保坐标不是负数而且它们没有超过允许的最大值。那么为什么我们要使用YUV颜色空间呢?那时因为人的眼睛对亮度的敏感高于对色度的敏感。通常
JPEG 在进行其它任何压缩前会丢掉 3/4 的色度信息。这可以减少图像所要存储信息的1/2。如果三个部份全部存储的话,4
pixels就需要3 x 4 = 12个值。如果两个部份的 3/4 的信息可以丢掉不要的话,我们就只需要 1 x 4 + 2 x 1
= 6 个值。
本文来自:我爱研发网(52RD.com) 详细出处:http://www.52rd.com/bbs/dispbbs.asp?boardid=87&id=103634&star=1#332789
YUV图象存储机制:
Y:U:V=8:4:4
Y:
占用1个字节(8bit)
U,V:
每2个象素占用1个字节(8bit),及每个象素占4bit
Y:U:V=8:2:2
Y:
占用1个字节(8bit)
U,V:
每4个象素占用1个字节(8bit),及每个象素占2bit
用解码器对该文件(clock.mpg)解压后产生的"YUV"目标码文件的说明:
Y文件的长度为:84,480
BYTE
U,V文件的长度分别为:21,120
BYTE
84480/21120=4
对该组YUV文件可得出结论:Y:U:V=8:2:2
RGB图象存储机制:
R:表示红色信息,占用1个字节(8bit)
G:表示绿色信息,占用1个字节(8bit)
B:表示蓝色信息,占用1个字节(8bit)
R:G:B
=
8:8:8
YUV与RGB图象之间的变换关系:
Y=
0.2990R+0.5870G+0.1140B
U=-0.1687R-0.3313G+0.5000B
+
128
V=
0.5000R-0.4187G-0.0813B
+
128
反变换关系:
R=
1.0Y
+
0
+1.402
(V-128)
G=
1.0Y
-
0.34413(U-128)-0.71414(V-128)
B=
1.0Y
+
1.772
(U-128)+0
另一种变换关系:
Y
=
<(R
+
2G
+
B)/4>
U
=
R
-
G
V
=
B
-
G
反变换:
G
=
Y
-
<(U
+V)/4>
R
=
U
+
G
B
=
V
+
G
说明:式中表示<=W的最大整数
以前曾见看过这类的文章,
下面是他们的转换公式。
相关文章推荐
- YUV 与RGB之间的变换
- YUV 与RGB之间的变换
- RGB颜色空间与YUV等颜色空间之间的转换单元
- YUV与RGB之间的转换
- Objective c 分数之间的加减乘除 …
- 【数字图像处理】YUV420转RGB并BMP存储<纯C++实现>
- FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
- YUV420 和RGB之间的转换的程序,YUV采样频率采用cif
- 关于YUV和RGB之间的转换公式
- 颜色的RGB 指数
- YUV & RGB
- Android&nbsp;两个Activity之间切换
- YUV色彩模型 & YUV与RGB的转换公式 & YUV420的存储格式
- YCrCb(YUV) & RGB
- 常用RGB颜色表 色值
- YUV格式、RGB格式、JPEG格式、MJPEG格式之间的转换(C程序)之一
- 如何将RGB色彩信息和YUV色彩信息之间转换
- YUV与RGB图像格式之间的关系
- YUV与RGB图像格式之间的关系
- FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)