色彩格式之RGB与YUV
2014-10-25 15:35
239 查看
一. RGB色彩模型
1.1 色彩模型原理
已有的研究结论表明, 自然界的任意颜色由三种基本颜色混合而成。三基色为: 红(Red),绿(Green), 蓝(Blue)组成, 这是RGB 色彩模型的原理。所以,描述一个颜色可以用R、G、B颜色分量表示.
1.2 色彩空间
色彩空间又称色域,就是某种技术系统所能定义的色彩范围。
计算机领域中,用数字量化的方式表示颜色。以颜色格式RGB888为例,RGB888表示R、G、B每个分量用8bit表示,每个分量的范围就是0~255.所能表示的颜色总数为2^24=16M。它的色彩空间大小是16M。计算机领域中,用像素深度描述,即每像素占的bit数。
1.3 常用颜色格式
计算机系统中,RGB色彩模型常用的格式有RGB565, RGB666, RGB888等。RGB565表示R占5bit,G占6bit,B占5bit;其他格式依此类推。有些时候还会增加Alpha值,在此不多做陈述。
RGB565比RGB888 每pixel所需的存储空间小,占用的带宽也小,同时表示的色域也小。各有适合的应用场景。相互之间是可以兼容的,但是从高色域转到低色域会有色域的损失。
1.4 存储格式
1.5 真彩色/伪彩色/直彩色
真彩色,是指存储时用的R、G、B三基色分量即是显示时用的R,G,B三基色分量;
伪彩色,是指存储时用色彩偏移作为索引,经过查表转换新的R、G、B三基色分量;
直彩色,是指存储时用的R、G、B三基色分量,每个分量分别作为索引,查表转换为显示时用的R,G,B三基色分量;
二. YUV 色彩模型
2.1 色彩模型
已有的研究结论表明,色彩可以用亮度,色调,色彩饱和度来描述。
亮度,色光的明暗程度,用黑色(0%)~白色(100%)度量; 色调,物体反色或者透过物体的颜色,用0~360度的标准色轮度量; 饱和度, 色调中灰色成分所占的比例;
YUV(又成YCrCb)色彩模型,用亮度信号Y和两个色差信号R-Y(U),B-Y(V)表示。Cr描述颜色中红色信号与颜色中亮度信号值之间的差异,Cb描述颜色中蓝色信号与颜色中亮度信号值之间的差异。
2.2 常用的颜色格式
常常听到的YUV格式有YUV444, YUV422, YUV420, YUV411, YUV420P等等。重点描述YUV422, YUV420, YUV420P三种格式。
那YUV格式名字的含义是什么? 444/422/420描述的是Y,U,V三个分量的采样比率。
重要说明:
1.YUV420并不意味着只有Y,U分量,没有V分量;对于每行扫描来讲,如果某行Y,U,V分量的比率是4:2:0,那么相邻行Y,U,V分量的比率是4:0:2
下面以 宏块2X2像素阵列为例, 可以分析下YUV444, YUV422, YUV420是如何采样的, 码流如何还原到每个像素?
YUV444
原始像素:Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03 <- first line
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12 <- second line
码流存放: Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12
像素映射: Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12
YUV422
原始像素:Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03 <- first line
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12 <- second line
码流存放: Y00 U00 Y01 V01 Y02 U02 Y03 V03
Y10 U10 Y11 V11 Y12 U12 Y12 V13
像素映射: Y00 U00 V01 Y01 U00 V01 Y02 U02 V03 Y03 U02 V03
Y10 U10 V11 Y11 U10 V11 Y12 U12 V13 Y12 U12 V13
YUV420
原始像素:Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03 <- first line
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12 <- second line
码流存放: Y00 U00 Y01 Y02 U02 Y03
Y10 V10 Y11 Y12 V12 Y12
像素映射: Y00 U00 V10 Y01 U00 V10 Y02 U02 V12 Y03 U02 V12
Y10 U00 V10 Y11 U00 V10 Y12 U02 V12 Y12 U02 V12
2.3 存储格式
YUV通常的储存格式packed(包)和panar(平面)模式
packet mode(YUV): Y, U, V连续交叉存储;
panar mode(YUV): 先连续存储所有的Y, 再连续存储所有的U,再连续存储所有的V。
三. RGB和YUV的优缺点
YUV相比与RGB的一个大优点是可以减少占用的带宽小。以RGB888, YUV422, YUV420作比较:
RGB888转到YUV4222, 带宽缩小1/2。 YUV422转换到YUV420, 带宽缩小1/2. 但是效果损失不一样,后者损失更大。
四. 参考信息
http://baike.so.com/doc/5509659.html
http://en.wikipedia.org/wiki/Chroma_subsampling#4:2:0
http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html
1.1 色彩模型原理
已有的研究结论表明, 自然界的任意颜色由三种基本颜色混合而成。三基色为: 红(Red),绿(Green), 蓝(Blue)组成, 这是RGB 色彩模型的原理。所以,描述一个颜色可以用R、G、B颜色分量表示.
1.2 色彩空间
色彩空间又称色域,就是某种技术系统所能定义的色彩范围。
计算机领域中,用数字量化的方式表示颜色。以颜色格式RGB888为例,RGB888表示R、G、B每个分量用8bit表示,每个分量的范围就是0~255.所能表示的颜色总数为2^24=16M。它的色彩空间大小是16M。计算机领域中,用像素深度描述,即每像素占的bit数。
1.3 常用颜色格式
计算机系统中,RGB色彩模型常用的格式有RGB565, RGB666, RGB888等。RGB565表示R占5bit,G占6bit,B占5bit;其他格式依此类推。有些时候还会增加Alpha值,在此不多做陈述。
RGB565比RGB888 每pixel所需的存储空间小,占用的带宽也小,同时表示的色域也小。各有适合的应用场景。相互之间是可以兼容的,但是从高色域转到低色域会有色域的损失。
1.4 存储格式
1.5 真彩色/伪彩色/直彩色
真彩色,是指存储时用的R、G、B三基色分量即是显示时用的R,G,B三基色分量;
伪彩色,是指存储时用色彩偏移作为索引,经过查表转换新的R、G、B三基色分量;
直彩色,是指存储时用的R、G、B三基色分量,每个分量分别作为索引,查表转换为显示时用的R,G,B三基色分量;
二. YUV 色彩模型
2.1 色彩模型
已有的研究结论表明,色彩可以用亮度,色调,色彩饱和度来描述。
亮度,色光的明暗程度,用黑色(0%)~白色(100%)度量; 色调,物体反色或者透过物体的颜色,用0~360度的标准色轮度量; 饱和度, 色调中灰色成分所占的比例;
YUV(又成YCrCb)色彩模型,用亮度信号Y和两个色差信号R-Y(U),B-Y(V)表示。Cr描述颜色中红色信号与颜色中亮度信号值之间的差异,Cb描述颜色中蓝色信号与颜色中亮度信号值之间的差异。
2.2 常用的颜色格式
常常听到的YUV格式有YUV444, YUV422, YUV420, YUV411, YUV420P等等。重点描述YUV422, YUV420, YUV420P三种格式。
那YUV格式名字的含义是什么? 444/422/420描述的是Y,U,V三个分量的采样比率。
format | Y与UV比率(水平分量) | U与V比率(垂直分量) |
YUV444 | 1:1:1 | 1:1 |
YUV422 | 2:1 | 1:1 |
YUV420 | 2:1 | 1:0或者0:1 |
1.YUV420并不意味着只有Y,U分量,没有V分量;对于每行扫描来讲,如果某行Y,U,V分量的比率是4:2:0,那么相邻行Y,U,V分量的比率是4:0:2
下面以 宏块2X2像素阵列为例, 可以分析下YUV444, YUV422, YUV420是如何采样的, 码流如何还原到每个像素?
YUV444
原始像素:Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03 <- first line
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12 <- second line
码流存放: Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12
像素映射: Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12
YUV422
原始像素:Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03 <- first line
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12 <- second line
码流存放: Y00 U00 Y01 V01 Y02 U02 Y03 V03
Y10 U10 Y11 V11 Y12 U12 Y12 V13
像素映射: Y00 U00 V01 Y01 U00 V01 Y02 U02 V03 Y03 U02 V03
Y10 U10 V11 Y11 U10 V11 Y12 U12 V13 Y12 U12 V13
YUV420
原始像素:Y00 U00 V00 Y01 U01 V01 Y02 U02 V02 Y03 U03 V03 <- first line
Y10 U10 V10 Y11 U11 V11 Y12 U12 V12 Y12 U12 V12 <- second line
码流存放: Y00 U00 Y01 Y02 U02 Y03
Y10 V10 Y11 Y12 V12 Y12
像素映射: Y00 U00 V10 Y01 U00 V10 Y02 U02 V12 Y03 U02 V12
Y10 U00 V10 Y11 U00 V10 Y12 U02 V12 Y12 U02 V12
2.3 存储格式
YUV通常的储存格式packed(包)和panar(平面)模式
packet mode(YUV): Y, U, V连续交叉存储;
panar mode(YUV): 先连续存储所有的Y, 再连续存储所有的U,再连续存储所有的V。
三. RGB和YUV的优缺点
YUV相比与RGB的一个大优点是可以减少占用的带宽小。以RGB888, YUV422, YUV420作比较:
format | 带宽(bit) | |
RGB888 | 24/pixel | |
YUV422 | 16/pixel (32bit/2pixel) | |
YUV420 | 6/pixel (24bit/4pixel) |
四. 参考信息
http://baike.so.com/doc/5509659.html
http://en.wikipedia.org/wiki/Chroma_subsampling#4:2:0
http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html
相关文章推荐
- YUV色彩模型 & YUV与RGB的转换公式 & YUV420的存储格式
- Atitit rgb yuv hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
- 色彩格式介绍:YUV,YCbCr,YPbPr,BT.656,BT.601
- YUV格式与RGB格式的换算
- 视频与图像RGB/YUV格式详解
- yuv数据格式介绍与rgb的转换,图像文件的封装
- YUV RGB 常见视频格式解析
- YUV格式转RGB格式
- YUV / RGB 格式及快速转换算法
- YUV / RGB 格式及快速转换算法
- YUV420SP格式图片转RGB
- 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高) 这段时间一直在搞视频格式的转换问题,终于最近将一个图片的YUV
- YUY2(YUV) 与 RGB 格式图片的相互转换 以及 基于YUY2(YUV)的blending
- Atitit rgb yuv hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
- 视频与图像RGB/YUV格式详解
- RGB、YUV像素格式
- YUV与RGB格式转换的教训与思考(一)
- 常见的RGB和YUV格式分析
- 色彩空间:RGB、YUV与YCbCr
- YUV格式学习:YUV444转换RGB24