BINARISATION D'IMAGES

Signaler
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
-
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
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/39294-binarisation-d-images

Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
@NetHacker
En résumé :
1ère étape: Convertir ton image en niveaux de gris.
2étape : Déterminer un seuil de gris sous lequel les pixels deviendront blancs, et au dessus duquel les pixels deviendront noirs.

@Tous
Mais il y a une autre façon de transformer une image en niveaux de gris, autre que celle proposée par CPTPINGU. C'est :

Gris = R*0.2125 + V*0.7154 + B*0.0721

Cette méthode est plus proche de la sensibilité réelle de notre oeuil aux couleurs.

La question que je me pose, perso, c'est de savoir laquelle de ces deux méthodes est la mieux adaptée à un traitement tel que celui que nous propose Forman ici.
Et, question subsidiaire : Est-ce que les gris des anciennes épreuves dites "en noir et blanc" des photos argentiques tiennent compte de notre sensibilité aux couleurs, ou est-ce qu'ils ne sont qu'un simple effet photochimique sans correctif?
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
Pour faire la méthode de CptPingu avec mon source, tu peux utiliser la chaine de filtres suivante:
-RGB -> Luminance
-Seuillage (avec une valeur paramétrable)

Autre solution (mais beaucoup plus lente!):
-RGB -> Luminance
-Binarization (avec distance euclidienne et norme L infini)
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
Ben il y a la fonction Binarize dans ImgUtils.pas qui fait ça aussi, c'est même le principal intérêt de ce code...

Tout dépend dans quel contexte tu veux faire ça. Si tu veux une méthode simple (et rapide!) celle de CptPingu est très bien. Peut-être d'ailleurs faudrait-il plutôt faire son test avec la couleur verte, qui en général est mieux liée à l'intensité lumineuse.

Ma méthode est plus complexe, et sert à déterminer un seuil (la valeur 127 mentionnée par CptPingu) qui soit adapté à la statistique de l'image, par exemple pour extraire un objet sur un fond uni. Ca prend pas mal de temps. Une fois le seuil calculé, c'est exactement le même algo en remplaçant 127 par la valeur qu'on a trouvée.
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
125
Cette question aurait plus sa place sur le forum qu'ici.
Toutefois, pour réaliser cela, tu dois convertir ton image en noir et blanc
pixel.rouge = (pixel.rouge + pixel.vert + pixel.bleu) / 3
pixel.vert = (pixel.rouge + pixel.vert + pixel.bleu) / 3
pixel.bleu = (pixel.rouge + pixel.vert + pixel.bleu) /3

Puis la binariser:
pixel.rouge = si pixel.rouge > 127 alors blanc(0XFF) sinon noir (0X00)
pixel.vert = pixel.rouge
pixel.bleu = pixel.rouge
Messages postés
288
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
12 octobre 2011

Comment binariser une image en rendant tout ce qui est dans une couleur 0 et tout ce qui ne l'est pas 1 ? pour avoir enfin une image blanc et noir !
Afficher les 20 commentaires