Question

Comment convertir les valeurs RVB d'un pixel en une seule valeur monochrome ?

Était-ce utile?

La solution

J'ai trouvé une solution possible dans le FAQ sur les couleurs.Le composante de luminance Y (du Système CIE XYZ) capture ce qui est le plus perçu par les humains comme de la couleur sur un seul canal.Alors, utilisez ces coefficients :

mono = (0.2125 * color.r) + (0.7154 * color.g) + (0.0721 * color.b);

Autres conseils

Cet article MSDN les usages (0.299 * color.R + 0.587 * color.G + 0.114 * color.B);

Cet article Wikipédia les usages (0.3* color.R + 0.59 * color.G + 0.11 * color.B);

Ce article scientifique récent compare l'état de l'art en matière de conversion de photographies couleur en niveaux de gris, y compris la formule de luminance simple et des techniques plus complexes.

Cela dépend de vos motivations.Si vous souhaitez simplement transformer une image arbitraire en niveaux de gris et lui donner un aspect plutôt beau, les conversions dans d'autres réponses à cette question feront l'affaire.

Si vous convertissez des photographies couleur en noir et blanc, le processus peut être à la fois très compliqué et subjectif, nécessitant des ajustements spécifiques pour chaque image.Pour avoir une idée de ce qui pourrait être impliqué, jetez un oeil à ceci Didacticiel d'Adobe pour Photoshop.

La réplication de cela dans le code serait assez complexe et nécessiterait toujours l'intervention de l'utilisateur pour obtenir l'image résultante esthétiquement "parfaite" (quoi que cela signifie !).

Comme mentionné également, une traduction en niveaux de gris (notez que les images monochromes n'ont pas besoin d'être en niveaux de gris) à partir d'un triplet RVB est soumise au goût.

Par exemple, vous pouvez tricher, extraire uniquement le composant bleu, en jetant simplement les composants rouge et vert et en copiant la valeur bleue à leur place.Une autre solution simple et généralement correcte serait de prendre la moyenne du triplet RVB du pixel et d'utiliser cette valeur dans les trois composants.

Le fait qu'il existe un marché considérable pour les plugins de conversion de niveaux de gris/monochrome professionnels et pas très bon marché du tout pour Photoshop uniquement, indique que la conversion est aussi simple ou complexe que vous le souhaitez.

La logique derrière la conversion de n’importe quelle image RVB en monochrome n’est pas une transformation linéaire triviale.À mon avis, un tel problème est mieux résolu par les techniques de « segmentation des couleurs ».Vous pouvez réaliser une "segmentation des couleurs" par le clustering k-means.

Voir l'exemple de référence du site MathWorks.

https://www.mathworks.com/examples/image/mw/images-ex71219044-color-based-segmentation-using-k-means-clustering

Image originale en couleurs.

Picture with colours

Après la conversion en monochrome à l'aide du clustering k-means Picture after converting to monochrome using k-means clustering

Comment cela marche-t-il?

Collectez toutes les valeurs de pixels de l’image entière.À partir d’une image de W pixels de large et H pixels de haut, vous obtiendrez des valeurs de couleur W * H.Maintenant, en utilisant l'algorithme k-means, créez 2 clusters (ou bacs) et jetez les couleurs dans les "bacs" appropriés.Les 2 clusters représentent vos nuances noir et blanc.

Vidéo Youtube démontrant la segmentation d'images à l'aide de k-means ? https://www.youtube.com/watch?v=yR7k19YBqiw

Les défis de cette méthode

L'algorithme de clustering k-means est sensible aux valeurs aberrantes.Quelques pixels aléatoires avec une couleur dont la distance RVB est éloignée du reste de la foule pourraient facilement fausser les centroïdes et produire des résultats inattendus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top