zoukankan      html  css  js  c++  java
  • HSV颜色模型

    HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
    注意的是OpenCV中H∈ [0, 180), S ∈ [0, 255], V ∈ [0, 255]
    这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。
    色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
    饱和度S:取值范围为0.0~1.0;
    亮度V:取值范围为0.0(黑色)~1.0(白色)。
    RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。
    HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。

     

    HSV颜色分量范围

        一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。

    H:  0— 180

    S:  0— 255

    V:  0— 255

    此处把部分红色归为紫色范围:

    绿

    hmin

    0

    0

    0

    0

    156

    11

    26

    35

    78

    100

    125

    hmax

    180

    180

    180

    10

    180

    25

    34;

    77

    99

    124

    155

    smin

    0

    0

    0

    43

    43

    43

    43

    43

    43

    43

    smax

    255

    43

    30

    255

    255

    255

    255

    255

    255

    255

    vmin

    0

    46

    221

    46

    46

    46

    46

    46

    46

    46

    vmax

    46

    220

    255

    255

    255

    255

    255

    255

    255

    255

     

    HSV六棱锥

    H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰
    HSV颜色空间模型

    HSV颜色空间模型[2]

    度。相隔120度。互补色分别相差180度。

    V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。
    RGB转化到HSV的算法
    max=max(R,G,B):
    min=min(R,G,B)
    V=max(R,G,B)
    S=(max-min)/max:
    HSV颜色空间模型(圆锥模型)

    HSV颜色空间模型(圆锥模型)[3]

    ifR = max,H =(G-B)/(max-min)* 60

    ifG = max,H = 120+(B-R)/(max-min)* 60
    ifB = max,H = 240 +(R-G)/(max-min)* 60
    ifH < 0,H = H+ 360
    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 5: R = v; G = a; B = b;
    HSV对用户来说是一种直观的颜色模型。我们可以从一种纯色彩开始,即指定色彩角H,并让V=S=1,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小V而S不变,同样增加白色可以减小S而V不变。例如,要得到深蓝色,V=0.4 S=1 H=240度。要得到淡蓝色,V=1 S=0.4 H=240度。
    一般说来,人眼最大能区分128种不同的色彩,130种色饱和度,23种明暗度。如果我们用16Bit表示HSV的话,可以用7位存放H,4位存放S,5位存放V,即745或者655就可以满足我们的需要了。
    由于HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛,如Photoshop(在Photoshop中叫HSB)等等,但这也决定了它不适合使用在光照模型中,许多光线混合运算、光强运算等都无法直接使用HSV来实现。
  • 相关阅读:
    十一招解决:系统IE部分网页打不开怎么办(转载)
    基于阿里云server搭建SVNserver
    hdu 2825 Wireless Password(ac自己主动机&amp;dp)
    压力单位MPa、Psi和bar之间换算公式
    hdu4506小明系列故事——师兄帮帮忙 (用二进制,大数高速取余)
    图像处理之霍夫变换(直线检測算法)
    hdu1171 Big Event in HDU 01-背包
    [视频] x264 压缩笔记
    UVALive 4043 Ants
    关于游戏手柄按键的设计
  • 原文地址:https://www.cnblogs.com/gosteps/p/5286345.html
Copyright © 2011-2022 走看看