<p><strong>所谓色域(Color Space)就是一种颜色的表示方法,针对不同的显示设备不同的系统,往往有不同的表示方法。</strong><strong>目前被广泛使用的色域可以被分为三大类:</strong><strong>RGB、YIQ/YUV/YCrCb、CMYK。</strong></p><p>※RGB应用最广泛,其又被称为Computer RGB;R'G'B'是RGB色域的Gamma矫正版,又被称为Studio RGB;</p><p>※YUV,YCrCb和YIQ被广泛应用于电视、视频系统中;</p><p>※CMYK则主要被应用于彩色打印系统中。</p><p><strong>注:</strong>此外,还有CMOS图像传感器中常用的RAW(Bayer)格式,这在我之前的文章中介绍过,这里就不重复了。</p><p>然而,上诉任何一种色域都没有办法直接表示色彩色调(intuitive notions of hue)、饱和度(saturation)和亮度(brightness)。关于如何通过RGB色域计算获得这些值,请自行查阅关于HSI/HSV色域的相关内容。</p><p>RGB作为最为基本的色域(绝大部分的图像传感器和扫描仪的直接输出都是RGB色域),任何其他的色域都可以通过RGB值经过一系列计算获得。</p><p><strong>注:</strong>本文在简单介绍各种色域的主要特征和主要应用背景后,将继续介绍各种色域之间的转换原理,并在最后直接提供转换公式,以方便大家使用。</p><p>色域基础知识</p><p><strong>RGB 色域</strong></p><p>顾名思义,RGB色域由红色(Red)、绿色(Green)和蓝色(Blue)的光学三原色组成。任何其他颜色的光线都可以由光学三原色按照特定比列组合而成。由于其易于在显示系统中实现,因此被广泛应用于电子成像系统、计算机图像显示和数字图像处理系统中。然而,将相机输出的RGB图像直接送到显示器上显示,效果却并不能令人满意。在不同厂家/型号的显示器上的显示效果也有着较大的差异,这主要是由于LCD显示器的非线性失真导致的。为了解决这个问题,一种非线性RGB编码(即Gamma矫正)应运而生。经过Gamma矫正之后的色域通常被称为R'G'B'色域或者Studio RGB色域。</p><p>RGB色域主要缺点是,它是一种“原始的”,未压缩的色域,相比于YUV色域其所需的数据带宽更高。</p><p><strong>YUV/YIQ色域</strong><br/></p><p>YUV色域被广泛应用于PAL、NTSC和SECAM电视(视频)系统中。其中,Y表示明亮程度(luma)信息,而U和V则表示色彩浓度信息(chroma)。这样做的直接好处就是,对于黑白电视(视频)系统,只需要传输Y就可以了。</p><p><strong>注:</strong>Luma和Brightness不是同一个概念。Luma表示色彩的明亮程度,而Brightness表示的光线的明亮程度(通常是背光)。<br/></p><p>YIQ是NTSC电视系统所使用的色域,Y还是表示(色彩)明亮程度,I(即In-Phase)表示从橙色到青色的色彩,而Q(即Quadrature-Phase)表示的是从紫色到黄绿色的色彩。</p><p><strong>YCrCb(YCbCr)色域</strong><br/></p><p>YCbCr是YUV的演进版本(系数有些变化,同时增加了偏置),但是在实际中,往往是把YUV和YCbCr认为是同一种是色域。比如YCbCr444/422/420往往和YUV444/422/420指的是同一种色域。以8bits的数据为例,RGB像素值的表示范围为0~255,而YCbCr/YUV确是限定范围的,Y的范围是15~235,而Cb/Cr(U/V)的范围是16~240(也有的版本是16~235),如下图所示:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F9fe9719b1a085c071eb421f6a8309ac5.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>YUV444、YUV422和YUV420的采样图示如下:<br/></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F32d84d4dc4e7b589db6c95598dcfceef.jpeg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>其中黑色的点为Y的采样点,圆圈为UV的采样点。显然YUV444和RGB的采样点是完全一致的,而YUV422和YUV420相对于RGB是有一定程度的“压缩”的。</p><p><strong>CMYK色域</strong><br/></p><p>CMYK也称作印刷色彩模式。它和RGB相比最大不同是,RGB模式是发光的色彩模式,你在一间黑暗的房间内仍然可以看见萤幕上的内容。CMYK是一种依靠反光的色彩模式,我们能阅读报纸的内容是为什么呢?是因阳光或灯光照射到报纸上,再把内容反射到我们的眼中。CMYK是需要有外界光源的情况下才可以看到的。所以在黑暗房间内是无法阅读的。只要是在印刷品上看到的图像,就是CMYK模式表现的。比如期刊、杂志、报纸、宣传画册等,都是运用了CMYK模式。</p><p>CMY是3种印刷油墨名称的首字母:青色Cyan、品红色Magenta、黄色Yellow。而K取的是black最后一个字母,为了避免与蓝色混淆而用K。从理论上讲,只需要CMY三种油墨就足够,把CMY加在一起就应该得到黑色。但是高纯度的油墨暂时还不能实现,CMY相加的结果是暗红色。因此,为了确保黑色的输出,还需要加入一种专门的黑墨来调和。</p><p>色域转换原理</p><p>比较有意思的是,YUV(YCbCr)与RGB之间的转换原理并非是通过数学理论推导出来的,而是基于生物仿真学(Biometric)实验结果的:</p><p>公式中的CA、CB的值在不同的标准中稍微有一点区别。具体请参考ITU601.SDTV,ITU709.PAL/NTSC。</p><p>加上Cb/Cr,写成矩阵的形式:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F85269eecf0cf23ad83ae3a4cd45623f8.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>进一步,可以写为:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2Fd143e90ccf5f8813a63fdc15cf.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>其中CC,CD为:</p><p>逆向形式为:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F1b54ebde8dd297b.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>色域转换公式</p><p>以下所有转YUV/YCbCr的公式输出的结果均为YUV/YCbCr444的格式,如需要转换为YUV422或者YUV420,则需要对UV(CbCr)分量做进一步处理。对于YUV422,可以直接丢弃每行的第二的采样点的UV值;对于YUV420,建议将相邻的四个采样点UV值取平均,以获得新的UV值。<br/></p><p><strong>RGB转YCbCr:SDTV(IUT601)公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F7f74aeb0958a7178cf879.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>RGB转YCbCr:HDTV(IUT709)公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F14b229fc67a1debbd4ae60.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>R'G'B'转YCbCr:SDTV(IUT601)公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2Fafb19e122e568b2840faac2e.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>R'G'B'转YCbCr:HDTV(IUT709)公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F966f4b6bb9c59a9f0c26b846.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>RGB转换YUV公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F916aa493d467e56eaa.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>RGB转YIQ公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F1394fcad89c9f2ef7b40cc886a6ce4b8.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>YCbCr:SDTV(ITU601)转RGB公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2Fb0a9e9681a03ed3aff6a3a3.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>YCbCr:HDTV(ITU709)转RGB公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F9af0a9117db75bcac28fd4c435ad5190.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>YCbCr:SDTV(ITU601)转R'G'B'公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F4a75a0586eada5ffde66aa994.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>YCbCr:HDTV(ITU709)转R'G'B'公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F5cc59be17bbe41ba87576af792.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>YUV转RGB公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2Faf4fb2aafdcc7bffb3ce2b3c743ec0fe.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>YIQ转RGB公式</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2Fcc9733c8011b3a72762de3a.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>YIQ转YUV公式</strong><br/></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F6fbdae4bbc54c7b70330a9d4c0f122ac.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p><strong>注:</strong>上述各公式中的偏置值均是基于8bits数计算的,如果是10bits或者更高bits,则应按比例增加该偏置值。</p><p><strong>CMYK转RGB公式</strong><br/></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2Fea23fb89f417ad85ba54ee13f1faa307.png&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>主要参考资料</p><p>1、IUT. BT601</p><p>2、IUT.BT709</p><p>3、Xilinx. Color-Space Converter: YCrCb to RGB, Application Note. XAPP931</p><p>4、Lattice. Color Space Converter IP Core User Guide, IPUG. IPUG63</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fspider.ws.126.net%2F50cb0d8a1d372ae2965d4cf0f0a5f120.png&thumbnail=660x&quality=80&type=jpg"/><br/></p>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/181554.html