Срочно нужно найти алгоритм подсчета "оттенка" цвета

Тема в разделе "WASM.WIN32", создана пользователем Guest, 17 июн 2007.

  1. Guest

    Guest Guest

    Публикаций:
    0
    Чтобы было понятнее о чем я - открываем Paint, выбираем цвет, открываем палитру и смотрим на циферку "оттенок". Вот как подсчитать эту циферку зная RGB? Может у кого-то сорцы пэинта имеются?
     
  2. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Это цветовое пространство называется HSV - "Оттенок-насыщенность-яркость". Причём это очень узкое и корявое цветовое пространство, в которое далеко не все оттенки из RGB вообще умещаются.
     
  3. Guest

    Guest Guest

    Публикаций:
    0
    В моем случае это очень хороший способ выделть "нужные" элементы на картинке. На картинке 2 типа элементов, единственное стабильное отличие это оттенок.
     
  4. Guest

    Guest Guest

    Публикаций:
    0
    Тему можно закрыть, спасибо за подсказку что это HSV.
    Код (Text):
    1. float RGBtoH(float R, float G, float B)
    2. {
    3.     float H, min, delta;
    4.  
    5.     if((B > G) && (B > R))
    6.     {
    7.         if(B == 0) return 0;
    8.         if(R > G) delta = B - G;
    9.         else      delta = B - R;
    10.         if(delta != 0) H = 4 + (R - G) / delta;
    11.         else H = 4 + (R - G);
    12.     } else if(G > R) {
    13.         if(G == 0) return 0;
    14.         if(R > B) delta = G - B;
    15.         else      delta = G - R;
    16.         if(delta != 0) H = 2 + (B - R) / delta;
    17.         else H = 2 + (B - R);
    18.     }else{
    19.         if(R == 0) return 0;
    20.         if(G > B) delta = R - B;
    21.         else      delta = R - G;
    22.         if(delta != 0) H = (G - B) / delta;
    23.         else H = (G - B);
    24.     }
    25.     H *= 60;
    26.     if(H < 0) H += 360;
    27.     return H;
    28. }