前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面经|2. 面试官:“除了RGB,你还知道哪些颜色通道?”

面经|2. 面试官:“除了RGB,你还知道哪些颜色通道?”

作者头像
灿视学长
发布2021-05-28 11:23:30
2.4K0
发布2021-05-28 11:23:30
举报
文章被收录于专栏:灿视学长灿视学长

百面AI,致力构建起最强AI算法面经!欢迎关注我们!

1.使用颜色空间进行空间变换的项目

在我所做的一些项目中,目前使用颜色空间变换的比较少,目前就是看pix2pix-tensorflow中使用过,直接上图:

项目中使用了Lab空间变换来学习A->B图像的映射。在测试的时候,同样是使用了Lab变换,将生成的图来进行前向预测,再将输出结果转换成RGB图像。

当然,后面要是看到了其它项目使用到的话,我这边再进行补充!

2. 相关颜色空间

2. 1. RGB

RGB 是我们接触最多的颜色空间,由三个通道表示一幅图像,分别为红色(R),绿色(G)和蓝色(B)三个通道。这

三种颜色的不同组合可以形成几乎所有的其他颜色。RGB 颜色空间是图像处理中最基本、最常用、面向硬件的颜色空间。

RGB 颜色空间利用三个颜色分量的线性组合来表示颜色,任何颜色都与这三个分量有关,而且这三个分量是高度相关的,所以连续变换颜色时并不直观,想对图像的颜色进行调整需要更改这三个分量才行。

但是,人眼对于这三种颜色分量的敏感程度是不一样的,在单色中,人眼对红色最不敏感,蓝色最敏感,所以 RGB 颜色空间是一种均匀性较差的颜色空间。如果颜色的相似性直接用欧氏距离来度量,其结果与人眼视觉会有较大的偏差。对于某一种颜色,我们很难推测出较为精确的三个分量数值来表示。

所以,RGB 颜色空间适合于显示系统,却并不适合于图像处理。

2.2 CMY/CMYK颜色空间

CMY是工业印刷采用的颜色空间。它与RGB对应。简单的类比RGB来源于是物体发光,而CMY是依据反射光得到的。具体应用如打印机:一般采用四色墨盒,即CMY加黑色墨盒。

2.3 HSV颜色空间

由于上述的原因,在实际图像处理中,我们使用更多的是HSV颜色空间,因为它可以比RGB更接近人们对彩色的感知经验。

其中,HSV主要是由表达彩色图像的三个部分组成:

  • Hue,色相、色调
  • Saturation:饱和度
  • Value,明度

其中用一张图可以表明H、S、V三者之间的关系:

img

  • H用极坐标的极角表示
  • S用极坐标的极轴长度表示
  • V用圆柱中轴的高度表示 其中,Hue是用角度度量,取值范围为0~
360^{\circ}

,表示所处的光谱颜色的位置。Hue=0表示红色,Hue=120表示绿色,Hue=240表示蓝色,等等。 Saturation是饱和度,其表示颜色接近光谱色的程度。其中,饱和度越高,表明颜色就越深。饱和度为0考试为纯色,取值范围为0~1,值越大,表示颜色越饱和。 Value表明了颜色空间中颜色的阴暗程度,明度越高,表示颜色越亮,范围为0~1,0为纯黑色。

2.4 HLS颜色空间

HLS 和 HSV 比较类似,这里一起介绍。HLS 也有三个分量,hue(色相)、saturation(饱和度)、lightness(亮度)。

HLS 中的 L 分量为亮度,亮度为100,表示白色,亮度为0,表示黑色。其中,S与L与HSV中保持一致。

2.5 YUV/YCbCr颜色空间

YUV是通过亮度-色差来描述颜色的颜色空间。亮度信号经常被称作Y,色度信号是由两个互相独立的信号组成。视颜色系统和格式不同,两种色度信号经常被称作UV或PbPr或CbCr。这些都是由不同的编码格式所产生的,但是实际上,他们的概念基本相同。在DVD中,色度信号被存储成Cb和Cr(C代表颜色,b代表蓝色,r代表红色)。

2.6 Lab颜色空间

Lab颜色模型弥补了RGB和CMYK两种色彩模式的不足。它是一种设备无关的颜色模型,也是一种基于生理特征的颜色模型。Lab是由一个亮度通道(channel)和两个颜色通道组成的。在Lab颜色空间中,每个颜色用L、a、b三个数字表示,各个分量的含义是这样的:

  • L代表明度,取值0~100
  • a代表从绿色到红色的分量 ,取值-128~127
  • b代表从蓝色到黄色的分量,取值-128~127

2.7 LUV颜色空间

LUV通常是指一种颜色空间标准,目的是建立与视觉统一的颜色空间,因为人类眼睛有响应不同波长范围的三种类型的颜色传感器,所有可视颜色的完整绘图是三维的。但是颜色的概念可以分为两部分:明度和色度。

LUV的存在三个分量,L是亮度,u和v是色度坐标。对于一般的图像,u和v的取值范围为-100到+100,亮度为0到100。

2.8 代码举例

代码语言:javascript
复制
import matplotlib.pyplot as plt
import cv2
 
canshi_BGR = cv2.imread("./canshi.png")
 
# show BGR canshi
plt.subplot(3, 3, 1)
plt.imshow(canshi_BGR)
plt.axis('off')
plt.title('canshi_BGR')
 
# BGR to RGB
canshi_RGB = cv2.cvtColor(canshi_BGR, cv2.COLOR_BGR2RGB)
plt.subplot(3, 3, 2)
plt.imshow(canshi_RGB)
plt.axis('off')
plt.title('canshi_RGB')
 
# BGR to GRAY
canshi_GRAY = cv2.cvtColor(canshi_BGR, cv2.COLOR_BGR2GRAY)
plt.subplot(3, 3, 3)
plt.imshow(canshi_GRAY)
plt.axis('off')
plt.title('canshi_GRAY')
 
 
# BGR to YCrCb
canshi_YCrCb = cv2.cvtColor(canshi_BGR, cv2.COLOR_BGR2YCrCb)
plt.subplot(3, 3, 4)
plt.imshow(canshi_YCrCb)
plt.axis('off')
plt.title('canshi_YCrCb')
 
# BGR to HSV
canshi_HSV = cv2.cvtColor(canshi_BGR, cv2.COLOR_BGR2HSV)
plt.subplot(3, 3, 5)
plt.imshow(canshi_HSV)
plt.axis('off')
plt.title('canshi_HSV')
 
# BGR to HLS
canshi_HLS = cv2.cvtColor(canshi_BGR, cv2.COLOR_BGR2HLS)
plt.subplot(3, 3, 6)
plt.imshow(canshi_HLS)
plt.axis('off')
plt.title('canshi_HLS')
 
# BGR to CIE L*a*b
canshi_Lab = cv2.cvtColor(canshi_BGR, cv2.COLOR_BGR2Lab)
plt.subplot(3, 3, 7)
plt.imshow(canshi_Lab)
plt.axis('off')
plt.title('canshi_Lab')
 
# BGR to CIE L*u*v
canshi_Luv = cv2.cvtColor(canshi_BGR, cv2.COLOR_BGR2Luv)
plt.subplot(3, 3, 8)
plt.imshow(canshi_Luv)
plt.axis('off')
plt.title('canshi_Luv')
 
plt.show()

2.9 转换的具体公式(看了也记不住,整理在这,感兴趣的看看就好!反正我直接查API了)

2.9.1 RGB与灰度图之间的转换
  • RGB -> GRAY
  • Gray -> RGB
2.9.2 RGB与YCrCb之间的转换
  • RGB -> YCrCb
  • YCrCb -> RGB
2.9.3 RGB转HSV
  • RGB -> HSV
  • HSV -> RGB
2.9.4 RGB与HLS转换
  • RGB -> HLS
  • HLS -> RGB
2.9.5 RGB与Lab转换
  • RGB转Lab RGB无法直接转换成Lab,需要先转换成XYZ再转换成Lab,即:RGB—>XYZ—>Lab。 1.首先是RGB转XYZ:

则:

其中:

等价于

2.其次是XYZ转Lab

上面两个公式中,

L^{\star}

a^{\star}

b^{\star}

是最终的LAB色彩空间三个通道的值。X,Y,Z是RGB转XYZ后计算出来的值,

X_{n}

Y_{n}

Y_{n}

一般默认是1,1,1

  • Lab转RGB 同样,需要Lab -> XYZ ->RGB. 1.Lab -> XYZ

其中,

3. 小结

传统图像处理关于颜色空间部分,基本上了解下,毕竟现在深度学习时代,基本上很多都只知道RGB~但是,我们是专业的AI从业人员,专业的CV工程师。

4. 往期干货


关于我

你好,我是灿视。目前我正致力于做出最强的AI算法面经。如果你从业算法,或者打算从业算法,可以关注我们哦!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 灿视学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.使用颜色空间进行空间变换的项目
  • 2. 相关颜色空间
    • 2. 1. RGB
      • 2.2 CMY/CMYK颜色空间
        • 2.3 HSV颜色空间
          • 2.4 HLS颜色空间
            • 2.5 YUV/YCbCr颜色空间
              • 2.6 Lab颜色空间
                • 2.7 LUV颜色空间
                  • 2.8 代码举例
                    • 2.9 转换的具体公式(看了也记不住,整理在这,感兴趣的看看就好!反正我直接查API了)
                      • 2.9.1 RGB与灰度图之间的转换
                      • 2.9.2 RGB与YCrCb之间的转换
                      • 2.9.3 RGB转HSV
                      • 2.9.4 RGB与HLS转换
                      • 2.9.5 RGB与Lab转换
                  • 3. 小结
                  • 4. 往期干货
                  • 关于我
                  相关产品与服务
                  图像处理
                  图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档