RGB 色彩空间的基础是对叠加型三原色(红绿蓝)的应用。之所以选择它们,是因为把它们组合起来后可以产生色域很宽(256*256*256)的各种颜色。实际上,人类的视觉系统( Human visual system,HVS)也是基于对三原色的感知,因为视锥细胞的灵敏度位于红绿蓝的光谱周围。这通常是数字成像中默认的色彩空间,因为这就是人类看数字图像的方式。

但是,利用 RGB 色彩空间计算颜色之间的差距,并不是衡量两个颜色相似度(similarity)的最好方式。RGB 并不是感知均匀的色彩空间。也就是说,两种具有一定差距的颜色可能看起来非常接近,而另外两种具有同样差距的颜色看起来却差别很大。

未解决这个问题,引入了一些具有感知均匀特性的颜色表示法。CIEL*a*b* 就是一种这样的颜色模型。把图像转换到这种表示法后,我们就可以真正地使用图像像素与目标颜色之间的欧氏距离,来度量颜色之间的视觉相似度。

0. rgb2gray 的实现

def rgb2gray(rgb):return np.dot(rgb[..., :3], [0.299, 0.587, 0.144])

1. rgb2hsv

HSV,H:hue,S:saturation,V:value

  • [0, 255] ⇒ [0, 1],也即将原始的 rgb 3 通道上的 256 级灰度值,线性压缩在 0-1 区间内;

    • R′=R/255R'=R/255,G′=G/255G'=G/255,B′=B/255B'=B/255
  • Cmax=max(R′,G′,B′)C_{\max}=\max(R',G',B'),Cmin=min(R′,G′,B′)C_{\min}=\min(R',G',B'),Δ=Cmax−Cmin\Delta=C_{\max}-C_{\min}

此时便可以计算 hsv 了:

H=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪0°,60°⋅(G′−B′Δmod6),60°⋅(B′−R′Δ+2),60°⋅(R′−G′Δ+4),Δ=0R′=CmaxG′=CmaxB′=Cmax,S=⎧⎩⎨0,ΔCmax,Cmax=0Cmax≠0,V=Cmax

H=\left\{ \begin{split} &0°,& \Delta=0\\ &60°\cdot \left(\frac{G'-B'}{\Delta} \mod 6\right),& R'=C_{\max}\\ &60°\cdot \left(\frac{B'-R'}{\Delta}+2\right),& G'=C_{\max}\\ &60°\cdot \left(\frac{R'-G'}{\Delta} +4\right),& B'=C_{\max} \end{split}, \right.\quad S=\left\{ \begin{split} &0,&C_{\max}=0\\ &\frac{\Delta}{C_{\max}}, &C_{\max}\neq 0 \end{split} \right.,\quad V=C_{\max}

【学习 OpenCV】—— 色彩空间(RGB、HSV、rgb2hsv、rgb2gray 的实现)相关推荐

  1. RGB色彩空间和HSV色彩空间的理解

    RGB色彩空间和HSV色彩空间的理解 本文的结构如下: 1.RGB色彩空间 2.HSV色彩空间(附HSV颜色分量范围表) 3.RGB到HSV的转换的Demo   使用OpenCV实现RGB转HSV,并 ...

  2. Opencv色彩空间(GRAY、XYZ、HSV、YCrCb、HLS)展示,以及利用HSV标记指定的颜色

    本文简单介绍了几个常见的色彩空间转换: 因为HSV应用非常广泛,所以单独介绍其强大的功能: 本文用到的两个原始图像,如下图所示: 目录 一.Opencv色彩空间(GRAY.XYZ.HSV.YCrCb. ...

  3. Opencv的RGB到HSV颜色空间转换

    从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...

  4. 【机器视觉学习笔记】OpenCV C++ 与 HSV颜色模型

    目录 HSV颜色模型 Opencv中的HSV 获取颜色值的小工具 平台:Windows 10 20H2 Visual Studio 2015 opencv_contrib-3.4.12 HSV颜色模型 ...

  5. 乐鑫Esp32学习之旅 24 分享在 esp32 SDK实现冷暖光色温RGB/HSV平滑调节的封装,轻松集成到您的项目去。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  6. OpenCV实战(7)——OpenCV色彩空间转换

    OpenCV实战(7)--OpenCV色彩空间转换 0. 前言 1. RGB 色彩空间 2. 色彩空间转换 2.1 CIE L*a*b* 色彩空间 2.2 其它色彩空间 3. 用色调.饱和度和亮度表示 ...

  7. 跟着小琼琼学习opencv~

    楼楼最近整理笔记,发现了自己学习Opencv时候的码的代码和简单介绍,现贴上来~主调用方法在最下方.转载请注明出处~ #include <opencv2\xfeatures2d\nonfree. ...

  8. python怎么编写视觉识别_Python视觉识别--OpenCV色彩空间\图像运算\ROI(四)

    (七) 色彩空间 什么是色彩空间,人们建立了多种色彩模型,以一维.二维.三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间 色彩空间有很多,但是常用的色彩空间一共5种:RGB ...

  9. openCV色彩空间转换

    RGB 人眼的色彩空间 BGR opencv默认使用的色彩空间 他们的最大差别是R,B排列顺序不一样,若是把RGB直接放入opencv系统中会造成颜色有差异. 给opencv的数据是要BGR的,电脑内 ...

  10. 05 OpenCV色彩空间处理

    色彩空间(Color Space)是一种用于描述颜色的数学模型,它将颜色表示为多维向量或坐标,通常由三个或四个独立的分量来表示.不同的色彩空间在颜色的表示方式.可表达颜色的范围.计算速度和应用场景等方 ...

最新文章

  1. 递归第一弹:初步理解
  2. linux命令大全增删改查,crudini命令
  3. Win32多线程编程(3) — 线程同步与通信
  4. 算法训练营01-学习总览
  5. Java死锁示例–如何分析死锁情况
  6. jdbc mysql分页_JDBC【数据库连接池、DbUtils框架、分页】
  7. 电脑端腾讯视频如何设置离线下载完成后自动关机
  8. AlexNet--CNN经典网络模型详解(pytorch实现)
  9. Java 面向对象 --单例模式
  10. 微信公众平台开发(45)食物营养及热量查询
  11. 高等组合学笔记(十一):分拆与Gauss二项式系数,恒等式与展开式
  12. 高德地图 android api 实现自动定位
  13. ovnif摄像头修改ip
  14. USB 协议整理 二:USB概述及协议基础(一)
  15. linux cab文件怎么安装包,IE控件cab包手动安装
  16. 金蝶k/3 现金流量表编制口诀
  17. linux系统读移动硬盘,在linux系统上识别与挂载移动硬盘数据
  18. 《阳光下》 ——【传递正反馈】
  19. Qlv转换MP4格式 让你不再错过
  20. python画速度等值线图_python画contour图

热门文章

  1. anno arm移植Qt环境后,编译正常,程序无法正常启动问题的记录
  2. Java复习总结(二)Java SE基础知识
  3. Spark Streaming处理File Streams
  4. kafka自带的zk启动_kafka-eagle监控和管理kafka
  5. 2020-08-27
  6. mysql被除数为0不报错_SQLServer中进行sql除法运算结果为小数时显示0的解决方案...
  7. Moreau Decomposition 和 共轭次梯度定理
  8. 获取公司的maven库 和 idea maven 中Projects Settings的Libraries中正常,但是在Maven Projects中Dependencies一直出现红线的解决办法
  9. OpenCV3.4.3+Qt5.9.4(QtCreator)开发环境搭建
  10. python aop编程_学习笔记: AOP面向切面编程和C#多种实现