colore digitale blog

Il blog di Mauro Boscarol sulla gestione digitale del colore dal 1998

Nella serie Algoritmi e formule

Da RGB a HSB (detto anche HSV)

HSB (detta anche HSV) è una modalità di colore device-dependent derivata dalla modalità RGB con un cambiamento di coordinate. Adobe Photoshop usa la modalità HSB nel Color Picker mentre nei comandi e correzioni usa un’altra modalità che si chiama HSL.

HSB significa hue, saturation, brightness, HSV significa hue, saturation, value.

L’algoritmo di trasformazione da RGB a HSB utilizzato da Photoshop è lo storico algoritmo di Alvy Ray Smith utilizzato anche da PostScript, e pubblicato nel 1978 con il titolo “Color Gamut Transform Pairs“.

I valori di ingresso sono R, G e B compresi tra 0 e 255. I valori di uscita sono H, S e B. Il valore di H (hue, tinta) va da 0° a 360°, S e B (o V) assumono valori compresi tra 0 e 100.


// normalizzazione
var_R = R / 255                         
var_G = G / 255  
var_B = B / 255

// calcolo massimo, minimo e delta
var_Min = min( var_R, var_G, var_B )    
var_Max = max( var_R, var_G, var_B )  
del_Max = var_Max – var_Min             

// calcolo B
B = var_Max * 100

if ( del_Max == 0 ) 
  // si tratta di un grigio 
  {
     H = 0    
     S = 0
  }
else
  // non è un grigio, calcolo H e S
  {
     S = del_Max / var_Max * 100

     del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
     del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
     del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max

     if      ( var_R == var_Max ) H = del_B - del_G
     else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
     else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R

     if ( H < 0 ) ; H += 1
     if ( H > 1 ) ; H -= 1

     H = H*360
  }

 

Visitato 862 volte, negli ultimi 7 giorni 1 visite

Torna all'indice di Algoritmi e formule

Mauro Boscarol

26/5/2013 alle 17:20

Parole chiave , ,

Visitato 862 volte, negli ultimi 7 giorni 1 visite

Vuoi fare un commento a questo post?

Devi essere collegato per scrivere un commento.