TRANSFORMATION IMAGE COULEURS A IMAGE NOIR SUR BLANC

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 18 nov. 2006 à 18:56
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 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.

https://codes-sources.commentcamarche.net/source/40370-transformation-image-couleurs-a-image-noir-sur-blanc

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
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és 78 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 21 mars 2018 2
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és 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
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

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
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 nov. 2006 à 18:56
Très bien commenté, bon exemple pour les débutants qui veulent avoir un accès très rapide aux pixels d'une image (GetDIBits).

Très bonne source didactique !
Rejoignez-nous