TRANSFORMATION IMAGE COULEURS A IMAGE NOIR SUR BLANC
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
18 nov. 2006 à 18:56
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 2009
-
11 mars 2007 à 22:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 11 mars 2007 à 22:14
Effectivement, ça n'est pas une source d'expert ? le niveau n'est pas très adapté
cs_boutemine
Messages postés78Date d'inscriptiondimanche 8 mai 2005StatutMembreDernière intervention21 mars 20182 19 nov. 2006 à 21:38
Salut Malkuth, merci pour ces infos.
Je suis un debutant et pas un expert.
La transformation en gris dans cette source est aproximative (Je ne trouve pas le vrai algo) car l'algo ne distingue pas entre &h00ff00 ou &h0000ff ainsi de suite...
C'est le probleme que tu a regle pour moi, merci encore.
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 19 nov. 2006 à 14:19
le seul petit hic c'est que s'est pas du noir et blanc mais du niveau de gris, la création d'image noir et blanc (que des points noir ou blanc sans intermediaire, necécite un algoritme suplémentaire aprés le passage en niveau de gris).
ensuite on a tendance a affecter des poids diférents au couleurs
RGB pour un meilleur rendu (chipotage d'expert que je ne suit pas, je me range donc à leur avis)
ca donne (R*0,11 + G*0,59 + B*0,3), ce qui pour un PC sera trés bien aproximer par
NivGris = (76 * Bleu + 151 * vert + 28 * Rouge) >> 8
(aucun float et la division se fais par décalage donc ca reste trés rapide).et pour aller un peu plus vite on arrat tendance a créer une table de précalcule pour chaque composante :
Dim PrecRouge(255) As byte
For i as integer = 0 to 255
PrecRouge(i)=i * 28
'idem pour les autres tables vert et bleu en changeant le coefficient...
ensuite dans la boucle tu fais un truc dans ce genre
11 mars 2007 à 22:14
19 nov. 2006 à 21:38
Je suis un debutant et pas un expert.
La transformation en gris dans cette source est aproximative (Je ne trouve pas le vrai algo) car l'algo ne distingue pas entre &h00ff00 ou &h0000ff ainsi de suite...
C'est le probleme que tu a regle pour moi, merci encore.
19 nov. 2006 à 14:19
ensuite on a tendance a affecter des poids diférents au couleurs
RGB pour un meilleur rendu (chipotage d'expert que je ne suit pas, je me range donc à leur avis)
ca donne (R*0,11 + G*0,59 + B*0,3), ce qui pour un PC sera trés bien aproximer par
NivGris = (76 * Bleu + 151 * vert + 28 * Rouge) >> 8
(aucun float et la division se fais par décalage donc ca reste trés rapide).et pour aller un peu plus vite on arrat tendance a créer une table de précalcule pour chaque composante :
Dim PrecRouge(255) As byte
For i as integer = 0 to 255
PrecRouge(i)=i * 28
'idem pour les autres tables vert et bleu en changeant le coefficient...
ensuite dans la boucle tu fais un truc dans ce genre
NivGris=(PrecBleu(Bleu)+PrecVert(vert)+PrecRouge(Rouge))>>8
sinon la source est bonne, consise et rapide.
Si tu veut voir des algo de noir et blanc :
http://www.csharpfr.com/codes/TRAITEMENT-IMAGE-NOIR-BLANC_40239.aspx
c'est en csharp parcontre ...
Et un trés bon article sur le travaile d'image en .Net (mais avec des choses a glaner même pour les non .Net) :
http://www.techheadbrothers.com/Articles.aspx?Id=8d3eb481-8a98-42a6-8033-e851c797aa60
18 nov. 2006 à 18:56
Très bonne source didactique !