Conversion HSL à RGB

Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008 - 19 juin 2004 à 02:00
martinbrochet Messages postés 33 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 25 mai 2005 - 25 mai 2005 à 14:13
Bonjours à tous !

Je cherche une personne forte en math ! Voici mon problème, j'ai besoin de faire des transformations d'images, et pour se faire, j'ai besoin d'une conversion RGB à HSL, puis HSL à RGB. Le problème est que je ne sais pas comment mathématiquement retrouver le RGB avec la formule HSL si dessous :

[ ((R-V)+(R-B)) ]
H = acos [ ------------------------------------- ]
[ 2*sqrt((R-V)*(R-V) + (R-B)(V-B)) ]

S = 1 - [ 3*MIN(R,V,B) ]
[----------------- ]
[ (R + V + B) ]

L = (R + V + B)/3

Je sais que c'est un peu violent... Voici un aperçu de mon programme
http://www.cppfrance.com/code.aspx?ID=23785
qui permettra de faire une recherche de contour et autre calcul.

Merci de votre attention

>:) Stéph >:)

5 réponses

Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008
19 juin 2004 à 02:03
oh là ! la formule passe mal à l'écran ! Je l'écrit autrement :

H=2*Pix1.R-Pix1.G-Pix1.B;
H=((float)(Result.H))/(2*(float)sqrt((Pix1.R-Pix1.G)*(Pix1.R-Pix1.G)+(Pix1.R-Pix1.B)*(Pix1.G-Pix1.B)));
H=(float)acos(Result.H);

S=(1-(3*min(R, V, B)/(Pix1.R+Pix1.G+Pix1.B)));

L=(Pix1.R+Pix1.G+Pix1.B)/3;

>:) Stéph >:)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juin 2004 à 11:41
Tu sais, il existe une API pour ce genre de conversion :

Je te donne la déclaration en VB car je ne connais pas l'équivalent en C :

'fonction permettant de convertir une couleur RGB en une couleur HLS
Private Declare Sub ColorRGBToHLS Lib "shlwapi.dll" ( _
ByVal LNG_Couleur As Long, _
LNG_Teinte As Long, _
LNG_Luminnce As Long, _
LNG_Saturation As Long)

'fonction permet de convertir une couleur HLS en une couleur RGB
Private Declare Function ColorHLSToRGB Lib "shlwapi.dll" ( _
ByVal Hue As Long, _
ByVal Lum As Long, _
ByVal Sat As Long) As Long


DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008
20 juin 2004 à 14:30
Merci beaucoup ! Ca m'évite des calculs trop compliqués !

>:) Stéph >:)
0
Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008
20 juin 2004 à 16:00
Mais j'ai un problème : je n'est pas une version assez récente de shlwapi.lib pour pouvoir m'en servir... tu connais pas un endroit où je peux l'avoir ?

merci

>:) Stéph >:)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
martinbrochet Messages postés 33 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 25 mai 2005
25 mai 2005 à 14:13
bonjour je souhaite passer 24 bits au 8 bits dois je simplement fair le
moyenne des R G et B (cad (R+G+B)/3) ca peut pas etre aussi simple tout
de meme
?????

comment qu'on fait alors pour passer du 24 bits au 8 bits?

merci d'avance


Martin B
0
Rejoignez-nous