Question

Ma question initiale

Je l'ai lu pour convertir un pixel RVB en RVB en niveaux de gris, on doit utiliser

r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11

Je lis aussi, et comprendre que g a une pondération plus élevée parce que l'oeil humain est plus sensible au vert. La mise en œuvre, j'ai vu les résultats étaient les mêmes que je recevrais de fixer une image à « échelle de gris » dans un éditeur d'image comme le Gimp.

Avant que je lis cela, j'imaginé que pour convertir un pixel à échelle de gris, on le convertir en HSL ou HSV, puis réglez la saturation à zéro (donc, en supprimant toutes les couleurs). Cependant, quand je l'ai fait, je suis une sortie d'image tout à fait différente, même si elle a également manqué la couleur.

Comment fonctionne exactement s = 0 diffère de la « correcte » que je lis, et pourquoi il est « incorrect »?

résultats en cours en fonction des réponses et d'autres recherches

Il semble que ce qui coefficients de luminance à utiliser est l'objet d'un débat. Diverses combinaisons et des algorithmes à-ont des résultats différents niveaux de gris. Voici quelques-uns des préréglages utilisés dans des domaines tels que les normes de télévision:

  • les coefficients définis par l'UIT-R BT.601 (NTSC?) Ne sont 0.299r + 0.587g + 0.114b
  • les coefficients définis par l'UIT-R BT.709 (version plus récente) sont 0.2126r + 0.7152g + 0.0722b
  • les coefficients de tiers égaux, (1/3)(rgb), équivaut à s = 0

article scientifique détaille différentes techniques et leurs résultats en niveau de gris pour diverses images , plus subjective enquête sur 119 personnes.

Cependant, lors de la conversion d'une image en niveaux de gris, pour obtenir l'effet artistique « meilleur », on sera presque certainement ne pas utiliser ces coefficients prédéfinis, mais peaufinage la contribution de chaque canal pour produire la meilleure sortie pour l'image particulière.

Était-ce utile?

La solution

Bien que ces coefficients de transformation existent, rien ne vous lie à les utiliser. Tant que l'intensité totale de chaque pixel est inchangée, les contributions de chaque canal peuvent être quelque chose, allant de 0 à 100%.

Photographes convertir des images à des mélangeurs de canal de l'utilisation de niveaux de gris pour régler les niveaux de chaque canal (RVB ou CMJN). Dans l'image, il y a, de sorte qu'il pourrait être souhaitable (selon votre intention) de nombreux rouges et verts d'avoir ces canaux plus fortement représentés dans l'intensité du niveau de gris que le bleu.

est ce qui distingue la transformation « scientifique » de l'image à partir d'une combinaison « artistique » des bandes.

Une considération supplémentaire est la plage de dynamique de valeurs dans chaque bande, et de tenter de les conserver dans l'image en niveaux de gris. Stimuler les ombres et / ou des points saillants pourrait nécessiter l'augmentation de la contribution de la bande bleue, par exemple.

Autres conseils

Un article intéressant sur le sujet ici .... « parce que les yeux humains ne détectent pas la luminosité linéairement avec la couleur ».

http://www.scantips.com/lumin.html

On dirait que ces coefficients proviennent de l'ancienne technologie CRT et ne sont pas bien adaptés aux écrans d'aujourd'hui, de la Couleur FAQ :

Les coefficients 0,299, 0,587 et 0,114 luminance calculée correctement pour les moniteurs ayant phosphores qui étaient contemporaine à l'introduction de télévision NTSC en 1953. Ils sont toujours appropriée pour le calcul de vidéo luma devant être discuté ci-dessous dans la section 11. Cependant, ces coefficients ne luminance pas avec précision de calcul pour moniteurs contemporains.

Impossible de trouver le coefficient de conversion droit, cependant.

Voir aussi RVB à la conversion monochrome

Utilisation s = 0 dans HSL / HSV et la conversion des résultats en RVB R = G = B, est donc la même chose que faire r_old * 1/3 + g_old * 1/3 + b_old * 1/3.

Pour comprendre pourquoi, jetez un oeil à la Wikipedia qui décrit la conversion HSV- > RGB. La saturation s sera 0, donc C et X seront aussi. Vous vous retrouverez avec R_1,G_1,B_1 être (0,0,0) puis ajoutez m aux valeurs RVB finales qui se traduit par (m,m,m) = (V,V,V). Idem pour HSL, le résultat sera (m,m,m) = (L,L,L).

EDIT: OK, viens de comprendre ce qui précède n'est pas la réponse complète, bien que ce soit un bon point de départ. Les valeurs RGB seront tous les mêmes, que ce soit L ou V, mais cela dépend encore de la façon dont L et V ont été calculées à l'origine, encore une fois, voir Wikipedia . Semble le programme / formules que vous avez utilisé pour convertir utilisé la solution de 1/3 * R + 1/3 * G + 1/3 * B ou l'un des deux autres (hexcone / bi-hexcone).

Alors, après tout, en utilisant HSL / HSV signifie simplement que vous devrez décider quelle formule utiliser plus tôt et la conversion en valeurs RVB en niveaux de gris est plus tard juste isoler le dernier composant.

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