RGB和YUV都是色彩空间,用于表示颜色,两者可以相互转化。 YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL)。YUV主要用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。与R GB视频信号传输相比,它最大的优点在于只需占用极少的带宽(RGB要求三个独立的视频信号同时传输)。
中"Y"表示明亮度(Lumina nce或Luma),也就是灰阶值;是个基带信号。而"U"和"V"表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。U和V不是基带信号,它俩是被正交调制了的。
"亮度"是通过RGB输入信号来创建的,方法是将RGB信号的特定部分叠加到一起。"色度"则定义了颜色的两个方面-色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。。通过运算,YUV三分量可以还原出R(红),G(绿),B(兰)。
一、和rgb之间换算公式的差异
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模型,
该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。
第一个公式是YUV转换RGB(范围0-255)时用的,第二个公式是用在YUV(601)也成为YCbCr转换RGB(范围0-255)时用的。
1.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
2.B= 1.164 * (Y - 16) + 2.018 * (U - 128)
G= 1.164 * (Y - 16) - 0.38 * (U - 128) - 0.813 * (V - 128)
R= 1.164 * (Y - 16) + 1.159 * (V - 128)
中"Y"表示明亮度(Lumina nce或Luma),也就是灰阶值;是个基带信号。而"U"和"V"表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。U和V不是基带信号,它俩是被正交调制了的。
"亮度"是通过RGB输入信号来创建的,方法是将RGB信号的特定部分叠加到一起。"色度"则定义了颜色的两个方面-色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。。通过运算,YUV三分量可以还原出R(红),G(绿),B(兰)。
一、和rgb之间换算公式的差异
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模型,
该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。
第一个公式是YUV转换RGB(范围0-255)时用的,第二个公式是用在YUV(601)也成为YCbCr转换RGB(范围0-255)时用的。
1.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
2.B= 1.164 * (Y - 16) + 2.018 * (U - 128)
G= 1.164 * (Y - 16) - 0.38 * (U - 128) - 0.813 * (V - 128)
R= 1.164 * (Y - 16) + 1.159 * (V - 128)
相关推荐
对于RGB和YUV值的转换工具,可以很直接的查看两者之间的数值关系,该工具尽支持windows系统
资源运行环境Android studio, java代码对RGB和YUV图像后台GPU加速flip rotate scale scrop处理, 可直接运行
本程序是MATLAB对于图像进行RGB与YUV格式的相互转化
用作RGB和YUV互相转换、换算的一个Android App工具,提供apk安装包,可以直接安装使用,以及提供项目源码。
YUV 和 RGB 颜色互转的小工具 自己写的,最近用到了YUV色彩,网上很多算法,可是都不甚完美,花了两天才弄明天,写个小工具,内涵源码,方便测试和使用。
RGB转YUV 转RGB为YUV
rgb转换为nv12格式,并保存为raw。 nv12转换为rgb格式,并保存为bmp。
在RGB和YUV之间转换xxYUV在RGB和YUV之间转换性能(macOS)苹果M1 YU12 YV12 NV12 NV21 xxYUV NEON 38 39 42 42 xxYUV AMX 67 67? ? 加速NEON 62 62 59 59 libyuv NEON 122 122 89 88 i7-8700B YU12 YV12 NV12 NV21...
YUV和RGB 色彩空间 什么是YCbCr ;YUV420P 和 YUV420SP 的区别;YUV和RGB的区别和互相转换
bmp格式的图片读取RGB并转换成YUV 输出等
Unity 工具之 YUV(YUV420 :I420,YV12,NV12,NV21)使用 shader 转为 RGB 显示 封装 YUV420ToRGBWrapper 1、首先根据 YUV 对应格式的 YUV 的排列方式,拆分 YUV; 2、然后,在通过 YUV 与 RGB 转换对应公式,进行...
用matlab代码rgb转yuv格式(包含yuv420sp,yuv420p,yuv422i等),输出二进制文件和文本文件,其中二进制.yuv文件用yuvplayer软件可以打开正确显示。
rgb转yuv420p的硬件加速,opengles 的shader实现
RGB转 YUV代码
代码是用C语言写的,实现rgb24格式转yuv420格式,代码是项目源代码里一个单独的模块,本人一直在用,供大家参考。
提供一种RGB和YUV值的转换工具,可很方便直观的查阅这这两者的对应关系,在需要查找这两种数值对比的用户会很好用。
VHDL xilinx RGB2YUV for LEARN
VC编写的RGB到YUV422的转化小程序
利用opencv开源库,c++实现rgb转yuv420
用来python2的opencv接口,需要事先安装opencv for python2.7