Functions

mitk::ColorConversions Namespace Reference

some conversion routines to convert between different color spaces More...

Functions

void Hsv2Rgb (float h, float s, float v, float &r, float &g, float &b)
 convert a HSV color to RGB color, H from 0 to 360, all other parameters 0 to 1
void Rgb2Hsv (float r, float g, float b, float &h, float &s, float &v)
 convert a RGB color to HSV color, rgb parameters from 0 to 1

Detailed Description

some conversion routines to convert between different color spaces


Function Documentation

void mitk::ColorConversions::Hsv2Rgb ( float  h,
float  s,
float  v,
float &  r,
float &  g,
float &  b 
)

convert a HSV color to RGB color, H from 0 to 360, all other parameters 0 to 1

Definition at line 33 of file mitkColorConversions.cpp.

References int(), and QuadProgPP::t().

Referenced by mitk::ColorSequenceCycleH::GetNextColor().

{
  if (s == 0.0)
  {
    r = g = b = v; // gray
    return;
  }

  int Hi = (int)( h / 60.0 ) % 6;
  if (h >= 360 ) Hi = 6;

  float f = (float)(h / 60.0 - (float)Hi);
  float p = (float)(v * (1.0 - s));
  float q = (float)(v * (1.0 - s * f));
  float t = (float)(v * (1.0 - s * (1.0 - f)));

  switch (Hi)
  {
    case 0: case 6: r = v; g = t; b = p; break;
    case 1: r = q; g = v; b = p; break;
    case 2: r = p; g = v; b = t; break;
    case 3: r = p; g = q; b = v; break;
    case 4: r = t; g = p; b = v; break;
    case 5: r = v; g = p; b = q; break;
  }
}
void mitk::ColorConversions::Rgb2Hsv ( float  r,
float  g,
float  b,
float &  h,
float &  s,
float &  v 
)

convert a RGB color to HSV color, rgb parameters from 0 to 1

Definition at line 70 of file mitkColorConversions.cpp.

    { 
       /* r = r/255;
        b = b/255;
        g = g/255;*/
        
        float mn=r,mx=r; 
        int maxVal=0; 
      
        if (g > mx){ mx=g;maxVal=1;} 
        if (b > mx){ mx=b;maxVal=2;}  
        if (g < mn) mn=g; 
        if (b < mn) mn=b;  

        float  delta = mx - mn; 
      
        v = mx;  
        if( mx != 0 ) 
          s = delta / mx;  
        else  
        { 
          s = 0; 
          h = 0; 
          return; 
        } 
        if (s==0.0f) 
        { 
          h=-1; 
          return; 
        } 
        else 
        {  
          switch (maxVal) 
          { 
          case 0:{h = ( g - b ) / delta;break;}         // yel < h < mag 
          case 1:{h = 2 + ( b - r ) / delta;break;}     // cyan < h < yel 
          case 2:{h = 4 + ( r - g ) / delta;break;}     // mag < h < cyan 
          } 
        } 
      
        h *= 60; 
        if( h < 0 ) h += 360; 
    }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines