|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1354
|
Perchè funziona la conversione da rgb ad hsl?
Ho trovato su internet un algoritmo che mi consente di calcolare i valori di luminanza, tonalità e saturazione a partire da rgb.
Eccolo: var_R = ( R / 255 ) //RGB values = From 0 to 255 var_G = ( G / 255 ) var_B = ( B / 255 ) var_Min = min( var_R, var_G, var_B ) //Min. value of RGB var_Max = max( var_R, var_G, var_B ) //Max. value of RGB del_Max = var_Max - var_Min //Delta RGB value L = ( var_Max + var_Min ) / 2 if ( del_Max == 0 ) //This is a gray, no chroma... { H = 0 //HSL results = From 0 to 1 S = 0 } else //Chromatic data... { if ( L < 0.5 ) S = del_Max / ( var_Max + var_Min ) else S = del_Max / ( 2 - var_Max - var_Min ) 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 } Quello che vorrei capire è perchè funziona. In effetti mantenendo costante il valore di tonalità di un pixel e cambiando la luminanza questo in effetti diviene più luminoso senza cambiare colore. Ma quello che ha inventato l'algoritmo che ragionamento a fatto? Qualcuno lo sa? Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2003
Città: Rimini
Messaggi: 2279
|
La luce va dal nero al bianco. Nero = 0 luce, bianco = 100% di luce. Quindi se vuoi aumentare la luminosità ti basta "spostare" il colore verso il bianco. Se hai 3 valori RGB, il bianco ha tutti i valori al massimo; se vuoi andare verso il bianco devi aggiungere ai colori una stessa costante.
Tutto ciò a grandi linee e in un linguaggio non scientifico; cmq il principio è quello... Fai delle prove: apri paint, fai doppio click su un colore e poi cambia manuakmente i suoi valori RGB come ti ho detto, vedrai che funziona. ![]()
__________________
Gigabyte 965P-DS3 ¤ E6600@400*8 ¤ Scythe Ninja Plus Rev.B ¤ Ram 4GB ¤ HD SSD Crucial M4 128GB
Gainward 4850 Golden Sample ¤ Antec NEO 550HE ¤ CM Centurion 534 ¤ Dell Ultrasharp U2312HM Notebook Asus N551JW ¤ i7-4750HQ ¤ nVidia 960M 4GB ¤ 16GB DDR3 ¤ SSD Intel 850EVO 500GB |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1354
|
Sì però in quel modo cambia la luminosita rimanendo costante la tonalità, però cambia anche la saturazione.
Usando l'algoritmo invece è possibile cambiare 1 sola delle tre variabili hsl. Ciao |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
|
Re: Perchè funziona la conversione da rgb ad hsl?
Quote:
Anche se può sembrare ovvio, la capacità di riprodurre un dato colore è molto complessa e ancor di più lo è verificare (misurare) se il colore prodotto è proprio quello che si voleva. Se devi produrre pezzi meccanici di una data dimensione, la verifica viene fatta misurandoli con un calibro, per esempio. Ma per i colori? Qual'è l'analogo del calibro? Ci sono strumenti (molto complessi) per la misura del colore. Ma qui sorge il vero problema: la tolleranza. Se per i pezzi meccanici è semplicemente un numero, per i colori cos'è? Un colore RGB viene identificato da tre numeri, per cui sembrerebbe comodo stabilire una tolleranza numerica su R, su G e su B (visualizzando RGB come spazio tridimensionale, la tolleranza su un colore rappresenta un cubetto nell'intorno del colore). Grossolanamente funziona, ma se si vuole essere precisi non va affatto bene. Perché il colore non è assoluto come la dimensione di un pezzo meccanico, c'è di mezzo la fisica dell'occhio umano. Semplificando: due colori vicini nello spazio RGB possono essere percepiti molto diversi dall'occhio, e viceversa due colori lontani nello spazio RGB possono apparire uguali (sempre all'occhio umano). Nasce quindi la necessità di trovare rappresentazioni di colori in cui la distanza numerica dei colori rappresenta quanto più fedelmente quella dell'occhio umano. HSL si avvicina a quell'esigenza, ma lo spazio comunemente utilizzato per questi scopi è il "Lab".
__________________
---> Lombardp CSS Certified Expert (Master Level) at Experts-Exchange Proud user of LITHIUM forum : CPU technology Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1354
|
Grazie, ora mi è molto più chiaro.
Ciao. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:09.