Conversion RGB en monochrome

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

19
demandé sur Ashwin Nanjappa 2008-08-18 12:27:32

6 réponses

j'ai trouvé une solution possible dans le FAQ couleur . Le "composant de luminance 151940920 Y (du "système CIE XYZ 151950920") capte ce qui est le plus perçu par les humains comme la couleur dans un canal. Ainsi, utilisez ces coefficients:

mono = (0.2125 * color.r) + (0.7154 * color.g) + (0.0721 * color.b);
18
répondu Ashwin Nanjappa 2008-08-18 08:27:43

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

cet article de Wikipedia utilise (0.3* color.R + 0.59 * color.G + 0.11 * color.B);

6
répondu Mark Cidade 2015-10-08 01:07:23

Ce récent article scientifique compare l'état-of-the-art dans la conversion des photos en couleur en niveaux de gris, y compris le simple fait de luminance de la formule et des techniques plus complexes.

6
répondu palm3D 2017-08-21 04:37:50

cela dépend de vos motivations. Si vous voulez juste transformer une image arbitraire en échelle de gris et la faire paraître assez bonne, les conversions dans d'autres réponses à cette question feront l'affaire.

si vous convertissez des photographies en couleurs en noir et blanc, le processus peut être à la fois très compliqué et subjectif, nécessitant des retouches spécifiques pour chaque image. Pour une idée de ce qui pourrait être impliqué, jetez un oeil à ce tutoriel D'Adobe pour Photoshop.

répliquer cela en code serait assez impliqué, et exigerait toujours l'intervention de l'utilisateur pour obtenir l'image résultante esthétiquement "parfait" (quoi que cela signifie!).

5
répondu Carl Russmann 2008-08-18 19:38:49

comme mentionné aussi, une traduction en échelle de gris (notez que les images monochromatiques n'ont pas besoin d'être en échelle de gris) à partir d'un triplet RVB est sujette au goût.

par exemple, vous pourriez tricher, extraire seulement le composant bleu, en jetant simplement les composants rouges et verts, 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 professionnels et pas-très-bon-à-bon-tout-non-sirree grayscale/convertisseur monochrome pour Photoshop seul, indique que la conversion est tout aussi simple ou complexe que vous le souhaitez.

4
répondu Henrik Paul 2008-08-25 08:30:01

la logique qui sous-tend la conversion d'une image basée sur le RVB en image monochrome can n'est pas une transformation linéaire insignifiante. À mon avis, Un tel problème est mieux traité par des techniques de" Segmentation des couleurs". Vous pouvez obtenir la "segmentation des couleurs" par le regroupement des moyens de K.

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 conversion en monochrome à l'aide de K-means clustering Picture after converting to monochrome using k-means clustering

Comment cela fonctionne?

collecter toutes les valeurs de pixels de l'image entière. À partir d'un image qui est W pixels de large et h pixels de haut, vous obtiendrez W *H valeurs de couleur. Maintenant, en utilisant l'algorithme k-means, créez 2 clusters (ou bins) et jetez les couleurs dans les "bins"appropriés. Les 2 amas représentent vos teintes noir et blanc.

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

Défis avec cette méthode

l'algorithme de regroupement K-means est sensible aux valeurs aberrantes. Quelques pixels aléatoires avec une couleur dont la distance RVB est loin du reste de la foule pourraient facilement fausser les centroïdes pour produire des résultats inattendus.

0
répondu Sau 2018-07-10 20:14:06