像素格式 RGB 和 YUV
1.RGB像素格式
RGB彩色模式是一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。
RGB显色模式大多应用在电子屏幕上,每一个像素点都是由R\G\B三种颜色叠加而成。存储表示时对每一种颜色进行256级量化,每一个颜色可以用一个8位的二进制数进行存储和表示,常用RGB颜色模式有RGB24位,以及RGB32。RGB24是指R\G\B各占8位;RGB32是指R\G\B\A四个分量各8位,A是指透明度。对一个w*h的图像,用RGB24格式存储时,需要w*h*8*3 bit的空间。存一幅RGB图片时是从左至右再从上至下一个像素点一个像素点的存储,一个像素分配24bit空间,从左至右R\G\B各占8bit通道。
(RGB还有RGB555和RGB565两者存储格式,这两者称为高彩色,RGB24和RGB32称位真彩色)
2.YUV像素格式
YUV色彩模式主要用于优化彩色视频信号的传输,对于黑白电视,用RGB颜色传输会大大浪费带宽,黑白电视只需要用一个8位二进制数进行量化。为了兼容黑白与彩色,因此发明了YUV。Y是指明度、U\V则是表现色度(色调和饱和度)用是描述影像色彩及饱和度,用于指定像素的颜色。YUV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV。如果只有Y分量则是黑白电视。
YUV每个分量也是采用8位量化的,但是大多是YUV格式平均使用的每像素位数都少于24位元,主要是为了节省空间对YUV进行了抽样,在整幅图像中对YUV进行了抽样,因此并不是每一个像素点都完全由YUV三个分量组成。主要有以下几种抽样方式
YUV4:4:4 完全抽样,每一个Y对应一组UV分量,对于w*h的一幅图像,存储需要w*h*3*8bit= 3*w*h 字节
YUV4:2:2 表示2:1水平抽样,垂直2:1抽样,每两个Y共用一组UV分量,对于w*h的一幅图像,存储需要w*h*1*8+w*h*1*8/2bit +w*h*1*8/2bit=2*w*h 字节
YUV4:2:0 表示2:1的水平抽样,垂直2:1抽样,每四个Y共用一组UV分量对于w*h的一幅图像,存储需要w*h*8bit+w*h**8bit/4+w*h**8bit/4=3/2*w*h 字节
YUV4:1:1 表示4:1水平抽样,垂直完全抽样,每四个Y共用一组UV分量对于w*h的一幅图像,存储需要w*h**8bit+w*h**8bit/4+w*h**8bit/4=3/2*w*h 字节
(YUV420并不是说有一个分量不存在,而是对uv分量交错取样)
YUV的存储格式有以下两种
- 紧缩格式(packed formats):将Y、U、V值储存成Macro Pixels阵列,和RGB的存放方式类似。
- 平面格式(planar formats):将Y、U、V的三个分量分别存放在不同的矩阵中。
紧缩格式(packed format)中的YUV是混合在一起的,对于YUV4:4:4格式而言,用紧缩格式很合适的,因此就有了UYVY、YUYV等。
YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。
UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样。
平面格式(planar formats)是指每Y分量,U分量和V分量都是以独立的平面组织的,也就是说所有的U分量必须在Y分量后面,而V分量在所有的U分量后面,此一格式适用于采样(subsample)。平面格式(planar format)有I420(4:2:0)、YV12、IYUV等。
YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00。
I420和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。注意,上图中,Y00、Y01、Y10、Y11共用U00、V00,其他依次类推。左图为I420,右图为YV12
NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种类似,即Y00、Y01、Y10、Y11共用U00、V00,左图为NV12,右图为NV21
常用的是YUV420中的I420\NV21\NV12
3.rgb与YUV转换
rgb与YUV之间可以相互转换,基本上所有图像算法都是基于yuv的;而所有显示面板都是接收rgb数据”,侧面的理解是在进行颜色数据运算时使用的是YUV颜色编码,而对图像经过后期处理进行显示时则用的是RGB编码。
4.YUV与RGB像素格式的处理
主要涉及:
分离YUV420P像素数据中的Y、U、V分量
分离YUV444P像素数据中的Y、U、V分量
将YUV420P像素数据去掉颜色(变成灰度图)
将YUV420P像素数据的亮度减半
将YUV420P像素数据的周围加上边框
生成YUV420P格式的灰阶测试图
计算两个YUV420P像素数据的PSNR
将RGB24格式像素数据封装为BMP图像
分离RGB24像素数据中的R、G、B分量
将RGB24格式像素数据转换为YUV420P格式像素数据
生成RGB24格式的彩条测试图
这一部分请参考(9条消息) 视音频数据处理入门:RGB、YUV像素数据处理_雷霄骅(leixiaohua1020)的专栏-****博客_rgb yuv
上一篇: YUV 学习记录 - II.分类
下一篇: 正则表达式匹配居民身份证
推荐阅读
-
基于 QT 播放器的实现 (a) Rgb、YUV 格式(带代码)
-
像素格式 RGB 和 YUV
-
YUV 常用图像格式 NV12、NV21、I420、YV12、YUYV 像素分布
-
色彩空间和像素格式
-
色彩空间和像素格式
-
色彩空间 RGB/CMYK/HSL/HSB/HSV/Lab/YUV 基本理论和转换方法:RGB 和 YUV
-
旷视天元开源图像比对工具 MegSpot,助力图像算法研发 - 1.多样化图像比对:可提供叠加比对、拖拽比对等多种比对方式,支持缩放、移动等同步操作,并可生成 GIF 保存比对结果。2. 2.专业呈现:支持像素级图像查看、图像直方图、RGB 查看;支持预览亮度、对比度、饱和度、灰度等指标。3. 视频对比:Cognizant Megapixel 可提供多种图像对比方法,如拖放对比等。 3.视频对比:除了支持视屏的所有图像对比功能外,CCTV MegSpot 还支持同步回放、回放暂停和快进、回放速度设置等功能。 4.跨平台支持:CCTV MegSpot 提供对 Mac、Linux 和 Windows 系统的跨平台支持,借助 Electron 框架,可以低成本完成跨平台应用的开发,并保证各平台体验的一致性。 此外,央视网MegSpot支持跨平台自动更新和数据持久化,确保用户体验的连续性,并支持中、英、日三种语言:MegSpot为大尺寸图像文件的对比提供了本地解决方案。 MegSpot 是一种用于比较大型图像文件的本地解决方案。
-
使用 FFmpeg 开发音频和视频流 (III) - 将视频 YUV 格式编码为 H264
-
全面解析 SPDIF、色差输出、S-Video、YUV、YCbCr、YPbPr、RGB 和 VGA/WXGA 的区别与用途
-
实操:使用FFmpeg和CUDA的硬解码与CPU主导的像素格式转换