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来实现。
  • 相关阅读:
    HTTP断点续传 规格严格
    Java Shutdown 规格严格
    linux 命令源码 规格严格
    JTable调整列宽 规格严格
    linux 多CPU 规格严格
    Hello can not find git path 规格严格
    Kill 规格严格
    拜拜牛人 规格严格
    Swing 规格严格
    Debugging hangs in JVM (on AIX but methodology applicable to other platforms) 规格严格
  • 原文地址:https://www.cnblogs.com/gosteps/p/5286345.html
Copyright © 2011-2022 走看看