基础:关于YUV 和 Cr Cb的区别
2017-03-23 21:05
176 查看
在网上找了好久,发现各种的版本,现在将其总结于此,方便人们的查看,顺便可以提提意见,看看到底是那个和那个····
第一种说法:
[R G B] -> [Y Cb Cr]转换
-------------------------
(R,G, B 都是 8bit unsigned)
Y = 0.299*R + 0.587*G + 0.114*B (亮度)
Cb = - 0.1687*R - 0.3313*G + 0.5 *B + 128
Cr = 0.5 *R - 0.4187*G - 0.0813*B + 128
[Y,Cb,Cr] -> [R,G, B] 转换
R = Y + 1.402 *(Cr-128)
G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)
B = Y + 1.772 *(Cb-128)
一般, C
值 (包括 Cb Cr)应该是一个有符号的数字,但这里被处理过了,方法是加上了
128.
第二种说法:
YUV与RGB相互转换的公式如下(RGB取值范围均为0-255):
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
第三种说法:
YUV色彩模型来源于RGB模型,该模型特点是将亮度和色度分离开,适合于图像处理领域。
应用:模拟领域
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'
YCbCr模型来源于YUV模型。YCbCr是
YUV 颜色空间的偏移版本.
应用:数字视频,ITU-R BT.601建议
Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128
R' = 1.164*(Y’-16) + 1.596*(Cr'-128)
G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)
B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
PS:上面各个符号都带了一撇,表示该符号在原值基础上进行了伽马校正,伽马校正有助于弥补在抗锯齿的过程中,线性分配伽马值所带来的细节损失,使图像细节更加丰富。在没有采用伽马校正的情况下,暗部细节不容易显现出来,而采用了这一图像增强技术以后,图像的层次更加明晰了。所以说H264里面的YUV应属于YCbCr。
第四种说法:
YUV使用红,绿,蓝的点阵组合来减少信号中的信息量。Y通道描述
Luma信号,它与亮度信号有一点点不同,值的范围介于亮和暗之间。 Luma是黑白电视可以看到的信号。U (Cb)和
V (Cr)通道从红 (U)和蓝 (V)中提取亮度值来减少颜色信息量。这些值可以从新组合来决定红,绿和蓝的混合信号。
YUV和RGB的转换:
Y = 0.299 R + 0.587 G + 0.114 B
U = -0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128
R = Y + 1.402 (V-128)
G= Y - 0.34414 (U-128) - 0.71414 (V-128)
B= Y + 1.772 (U-128)
yuv<-->rgb
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'
yCbCr<-->rgb
Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128
R' = 1.164*(Y’-16) + 1.596*(Cr'-128)
G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)
B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
Note: 上面各个符号都带了一撇,表示该符号在原值基础上进行了gamma
yuv色彩模型来源于rgb模型,该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。
应用:basic color model used in analogue color TV broadcasting.
YCbCr模型来源于yuv模型。YCbCr
is a scaled and offset version of the YUV color space.
应用:数字视频,ITU-R BT.601 recommendation
通过上面的比较可以确定,我们在h.264,mpeg等编码标准中用的yuv其实是YcbCr,
第五种说法:
YCbCr与RGB的相互转换
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
第六种说法:
YUV与RGB的相互转换
Y= 0.3*R + 0.59*G + 0.11*B
U= (B-Y) * 0.493
V= (R-Y) * 0.877
同样反过来,YUV转换成RGB的公式如下:
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
在网上找了好久,发现各种的版本,现在将其总结于此,方便人们的查看,顺便可以提提意见,看看到底是那个和那个····
第一种说法:
[R G B] -> [Y Cb Cr]转换
-------------------------
(R,G, B 都是 8bit unsigned)
Y = 0.299*R + 0.587*G + 0.114*B (亮度)
Cb = - 0.1687*R - 0.3313*G + 0.5 *B + 128
Cr = 0.5 *R - 0.4187*G - 0.0813*B + 128
[Y,Cb,Cr] -> [R,G, B] 转换
R = Y + 1.402 *(Cr-128)
G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)
B = Y + 1.772 *(Cb-128)
一般, C
值 (包括 Cb Cr)应该是一个有符号的数字,但这里被处理过了,方法是加上了
128.
第二种说法:
YUV与RGB相互转换的公式如下(RGB取值范围均为0-255):
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
第三种说法:
YUV色彩模型来源于RGB模型,该模型特点是将亮度和色度分离开,适合于图像处理领域。
应用:模拟领域
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'
YCbCr模型来源于YUV模型。YCbCr是
YUV 颜色空间的偏移版本.
应用:数字视频,ITU-R BT.601建议
Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128
R' = 1.164*(Y’-16) + 1.596*(Cr'-128)
G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)
B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
PS:上面各个符号都带了一撇,表示该符号在原值基础上进行了伽马校正,伽马校正有助于弥补在抗锯齿的过程中,线性分配伽马值所带来的细节损失,使图像细节更加丰富。在没有采用伽马校正的情况下,暗部细节不容易显现出来,而采用了这一图像增强技术以后,图像的层次更加明晰了。所以说H264里面的YUV应属于YCbCr。
第四种说法:
YUV使用红,绿,蓝的点阵组合来减少信号中的信息量。Y通道描述
Luma信号,它与亮度信号有一点点不同,值的范围介于亮和暗之间。 Luma是黑白电视可以看到的信号。U (Cb)和
V (Cr)通道从红 (U)和蓝 (V)中提取亮度值来减少颜色信息量。这些值可以从新组合来决定红,绿和蓝的混合信号。
YUV和RGB的转换:
Y = 0.299 R + 0.587 G + 0.114 B
U = -0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128
R = Y + 1.402 (V-128)
G= Y - 0.34414 (U-128) - 0.71414 (V-128)
B= Y + 1.772 (U-128)
yuv<-->rgb
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'
yCbCr<-->rgb
Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128
R' = 1.164*(Y’-16) + 1.596*(Cr'-128)
G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)
B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
Note: 上面各个符号都带了一撇,表示该符号在原值基础上进行了gamma
correction(伽马校正)。
yuv色彩模型来源于rgb模型,该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。应用:basic color model used in analogue color TV broadcasting.
YCbCr模型来源于yuv模型。YCbCr
is a scaled and offset version of the YUV color space.
应用:数字视频,ITU-R BT.601 recommendation
通过上面的比较可以确定,我们在h.264,mpeg等编码标准中用的yuv其实是YcbCr,
第五种说法:
YCbCr与RGB的相互转换
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
第六种说法:
YUV与RGB的相互转换
Y= 0.3*R + 0.59*G + 0.11*B
U= (B-Y) * 0.493
V= (R-Y) * 0.877
同样反过来,YUV转换成RGB的公式如下:
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
相关文章推荐
- 基础:关于YUV 和 Cr Cb的区别
- IPC网络高清摄像机基础知识4(Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别)
- hylan:卸载oracle 11g时,关于计算机基础知识的思考:delete和shift+delete的区别
- IPC网络高清摄像机基础知识4(Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别) 【转】
- 关于java基础类型与引用类型内存存储问题,以及string.intern()方法(String两种创建方式的区别)
- java基础 关于GBK和utf-8的区别
- 关于Hashtable和HashMap的区别 -- Java 基础
- 关于VC的project-〉 setting-〉c/c++,Category:Precompiled Headers,选第二个和第四个的区别?
- 关于句柄的基础知识
- 关于HTML Object中三个Style实例的区别
- 关于程序注释的基础知识
- 蛙蛙请教:js里的match方法和exec方法的区别,关于正则表达式的
- 关于C#中,继承类重写与隐藏基类方法的区别!
- 关于继承和覆盖(Override)的一些基础知识
- 关于Date和Calendar类的基础用法
- [导入]关于xslt中current()和(.)的区别
- 关于C++的一些细节[五:函数-基础]
- c#基础——关于类
- 每一个软件开发人员绝对必须掌握的关于 Unicode 和字符集的最基础的知识
- 关于Debug和Release之本质区别的讨论(z)