文档章节

视频监控之颜色模型——RGB、HSV模型

小薇
 小薇
发布于 2013/03/01 12:50
字数 1292
阅读 1355
收藏 5

目前常用的颜色模型可分为两类,一类面向诸如彩色显示器或打印机之类的硬件设备,另一类面向以彩色处理为目的的应用,如动画中的彩色图形。面向硬件设备的最常用彩色模型是 RGB 模型,而面向彩色处理的最常用的模型是 HSV 模型,其中 H表示色调(Hue),S 表示饱和度(Saturation),V 表示亮度(Value)。

RGB颜色模型

RGB 颜色模型由红、绿、蓝三种基色组成,它大多用于 CRT 显示器和颜色光栅图形。这个模型基于笛卡儿坐标系统,3 个轴分别为 R,G,B。通过红、绿、蓝三种基色可以混合得到大多数的颜色。如下图所示:

坐标原点代表(0,0,0)黑色,而坐标点(1,1,1)代表白色。坐标轴上的顶点代表三个基色,而余下的顶点则代表第一个基色的补色。为方便表示,将立方体归一化为单位立方体,这样所有的 R,G,B 的值都在[0,1]中。根据这个模型,每幅彩色图像包括3个独立的基色平面,或者说可分解到 3 个平面上。反过来如果一幅图像可被表示为 3个平面,使用这个模型比较方便。

HSV颜色模型

在 HSV 模型中,亮度(V)是光作用于人眼时所引起的明亮程度的感觉,它与被观察物体的发光强度有关。色调(H)是当人眼看到一种或多种波长的光时所产生的彩色感觉,它反映颜色的种类,是决定颜色的基本特性,如红色、棕色就是指色调。饱和度(S)指的是颜色的纯度,即掺入白光的程度,或者说是指颜色的深浅程度,对于同一色调的彩色光,饱和度越深颜色越鲜明或说越纯。通常把色调和饱和度通称为色度。

HSV 模型的三维表示从 RGB 立方体演变而来。如果设想沿对角线从白色顶点向黑色顶点观察,可以看到如图 2.2 所示的立方体六边形外形。六边形的边界表示不同的色彩,用于 HSV 六棱锥的顶部。在六棱锥中,饱和度沿水平轴测量,而亮度值通

过六棱锥中心的垂直轴测量。

色调(H)用与水平轴之间的角度来表示,范围从 0 度到 360 度。六边形的顶点以60 度为间隔。黄色位于 60 度处,绿色在 120 度处而青色在 150 度处,与红色相对。相补的颜色互成 180 度。

饱和度(S)从 0 到 1 变化。在此模型中它表示成所选色彩的纯度与该色彩的最大纯度(S=l)的比率。当 S=0.5 时所选色彩的纯度为四分之一。当 S=0 时,只有灰度。

亮度值(V)从六边形顶点的 0 变化到顶部的 1,顶点表示黑色。在六边形顶部的颜色强度最大。当 V=1,S=l 时,有纯色彩。白色是 V=l 且 S=0 的点。

HSV 对多数用户来说是一个较直观的模型。从指定一种纯彩色开始,即指定色调H 且让 V=S=1,可以通过将白色或黑色加入到纯色彩中来描述所要的颜色。增加黑色,减小 V 而 S 保持不变。要得到深蓝色,V=0.4,S=1 且 H=240 度。同样,将白色加进所选的色彩中时,参数 S 减小而 V 保持不变。浅蓝色可以用 S=0.3,V=1 且 H=240 度来设定。添加一些黑色和白色,则同时减小 V 和 S。通常要有一个该模型的接口给出颜色板中 HSV 参数选择。结合明暗、色泽和色调等术语的颜色概念反映在 HSV 六边形的剖切面中。

HSV 颜色空间清晰地将颜色分为色度和亮度,而阴影不会改变背景的色度,故常用此颜色空间来进行阴影检测。

RGB 和 HSV 模型之间的转换

由于 RGB 和 HSV 相互转化的算法较为繁杂,所以本文给出用伪代码实现的方法。

RGB 转化到 HSV 的算法如下:

max=max(R,G,B)
min=min(R,G,B)
if R=max,H=(G-B)/(max-min)
if G=max,H=2+(B-R)/ (max-min)
if B=max,H=4+(R-G)/ (max-min)
H=H*60
If H<0,H=H+360
V=max(R,G,B)
S=(max-min)/max

HSV 转化到 RGB 的算法如下:

if S=0 R=G=B=V
else{
    H/=60
    i=INTEGER(H)
    f=H-i
    a=V*(1-S)
    b=V*(1-S*f)
    c=V*(1-S*(1-f))
    switch(i)
    case 0:R=V;G=c;B=a;
    case 1:R=b;G=V;B=a;
    case 2:R=a;G=V;B=c;
    case 3:R=a;G=b;B=V;
    case 4:R=c;G=a;B=V;
    case 0:R=V;G=a;B=b;
}

Enjoy~

相关标签TAGS:   rgb      hsv    

原创文章:转载出处: 视频监控之颜色模型——RGB、HSV模型

本文转载自:http://50vip.com/blog.php?i=112

共有 人打赏支持
小薇

小薇

粉丝 348
博文 32
码字总数 6185
作品 26
杭州
个人站长
私信 提问
颜色空间:RGB,CMY,HSV,HSL,Lab详解

颜色空间(彩色模型、色彩空间、 彩色系统etc)是对色彩的一种描述方式,定义有很多种,区别在于面向不同的应用背景。 例如显示器中采用的RGB颜色空间是基于物体发光定义的(RGB正好对应光的...

li_wen01
2017/06/05
0
0
iOS-去除图片中指定范围内颜色的三种方式

实际项目场景:去除图片的纯白色背景图,获得一张透明底图片用于拼图功能 介绍两种途径的三种处理方式(不知道为啥想起了孔乙己),具体性能鶸并未对比,如果有大佬能告知,不胜感激。 Core I...

Tr2e
2017/12/21
0
0
人脸识别系列之人脸检测--训练基于肤色特征的检测

前言: 基于特征的方法是利用人脸的先验知识导出的规则进行人脸检测。 一般来说,常用的特征包括人脸和人脸器官典型的边缘和形状特征(如人脸轮廓、虹膜轮廓、嘴唇轮廓等)、纹理特征(纹理是...

ittazp
08/16
0
0
DevExpress:颜色选择控件ColorPickEdit

本文为我的.NET控件库DevExpress使用笔记,我的DevExpress版本为13.1 1、控件类型全称:DevExpress.XtraEditors.ColorPickEdit 2、控件所在程序集:DevExpress.XtraBars.v13.1.dll 3、工具箱...

北风其凉
2015/10/16
1K
0
关于颜色理论

制作网页的过程中,我一直不知道应该如何配色。 我的意思是,我不知道应该选择哪些颜色放在一起,完全凭感觉。于是昨天,我在网上找了一些资料,希望找到理论指导。 结果很失望。颜色理论研究...

阮一峰
2008/07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部