欢迎来到天天文库
浏览记录
ID:57568350
大小:58.08 KB
页数:8页
时间:2020-08-27
《yuv-rgb-互转-公式-及算法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用的过程,所以在不同的应用领域中为了更好更准确的满足各自的需求,就出现了各种各样的色彩空间模型来量化的描述颜色。我们比较常接触到的就包括RGB/CMYK/YIQ/YUV/HSI等等。 对于数字电子多媒体领域来说,我们经常接触到的色彩空间的概念,主要是RGB,YUV这两种(实际上,这两种体系包含了许多种具体的颜色表达方式和模型,如sRGB,A
2、dobeRGB,YUV422,YUV420…),RGB是按三基色加光系统的原理来描述颜色,而YUV则是按照亮度,色差的原理来描述颜色。 即使只是RGBYUV这两大类色彩空间,所涉及到的知识也是十分丰富复杂的,自知不具备足够的相关专业知识,所以本文主要针对工程领域的应用及算法进行讨论。2YUV相关色彩空间模型2.1YUV与YIQYcrCb 对于YUV模型,实际上很多时候,我们是把它和YIQ/YCrCb模型混为一谈的。 实际上,YUV模型用于PAL制式的电视系统,Y表示亮度,UV
3、并非任何单词的缩写。 YIQ模型与YUV模型类似,用于NTSC制式的电视系统。YIQ颜色空间中的I和Q分量相当于将YUV空间中的UV分量做了一个33度的旋转。 YCbCr颜色空间是由YUV颜色空间派生的一种颜色空间,主要用于数字电视系统中。从RGB到YCbCr的转换中,输入、输出都是8位二进制格式。 三者与RGB的转换方程如下: RGB->YUV: 实际上也就是:Y=0.30R+0.59G+0.11B,U=0.493(B-Y),V=0.877(R-Y)
4、 RGB->YIQ: RGB->YCrCb: 从公式中,我们关键要理解的一点是,UV/CbCr信号实际上就是蓝色差信号和红色差信号,进而言之,实际上一定程度上间接的代表了蓝色和红色的强度,理解这一点对于我们理解各种颜色变换处理的过程会有很大的帮助。 我们在数字电子多媒体领域所谈到的YUV格式,实际上准确的说,是以YcrCb色彩空间模型为基础的具有多种存储格式的一类颜色模型的家族(包括YUV444/YUV422/YUV420/YUV420P等等)。并不是传统意义上用于
5、PAL制模拟电视的YUV模型。这些YUV模型的区别主要在于UV数据的采样方式和存储方式,这里就不详述。 而在CameraSensor中,最常用的YUV模型是YUV422格式,因为它采用4个字节描述两个像素,能和RGB565模型比较好的兼容。有利于CameraSensor和Cameracontroller的软硬件接口设计。3YUV2RGB快速算法分析 这里指的YUV实际是YcrCb了,YUV2RGB的转换公式本身是很简单的,但是牵涉到浮点运算,所以,如果要实现快速算法,算法结构本身没什么好
6、研究的了,主要是采用整型运算或者查表来加快计算速度。首先可以推导得到转换公式为: R=Y+1.4075*(V-128) G=Y–0.3455*(U–128)–0.7169*(V–128) B=Y+1.779*(U–128)3.1整型算法 要用整型运算代替浮点运算,当然是要用移位的办法了,我们可以很容易得到下列算法: u=YUVdata[UPOS]-128; v=YUVdata[VPOS]-128; rdif=v+((v*103)>>8)
7、; invgdif=((u*88)>>8)+((v*183)>>8); bdif=u+((u*198)>>8); r=YUVdata[YPOS]+rdif; g=YUVdata[YPOS]-invgdif; b=YUVdata[YPOS]+bdif;为了防止出现溢出,还需要判错计算的结果是否在0-255范围内,做类似下面的判断。 if(r>255) r=255; if(r<0) r=0;
8、 要从RGB24转换成RGB565数据还要做移位和或运算: RGBdata[1]=((r&0xF8)
9、(g>>5)); RGBdata[0]=(((g&0x1C)<<3)
10、(b>>3));3.2部分查表法 查表法首先可以想到的就是用查表替代上述整型算法中的乘法运算。 rdif=fac_1_4075[u]; invgdif
此文档下载收益归作者所有