Quelle est la meilleure façon de calculer la moyenne de deux couleurs qui définissent un dégradé linéaire?
Si j'ai deux couleurs définies par leurs valeurs RVB, puis-je le moyen le Rouge, le Vert et le Bleu des valeurs et de les combiner afin de définir une troisième couleur qui ressemble à un visuel de la moyenne des deux?
ie NewColor = (R1+R2)/2,(G1+G2)/2,(B1+B2)/2
EDIT1: Merci pour toutes ces réponses. Pour mes besoins, je ne suis que de traiter avec les paires de couleurs sont des nuances de la même couleur donc je pense qu'en moyenne va travailler. Cependant, je vais essayer de la conversion de l'Espace de Laboratoire pour s'assurer que l'hypothèse est vraie et que la technique sera utile dans l'avenir.
EDIT2: Voici mes résultats FWIW. Color1 et Color2 sont mes deux couleurs et deux colonnes du milieu sont les résultats de calcul de la moyenne dans Lunb de l'espace, et en moyenne, RVB, respectivement. Dans ce cas, il n'y a pas beaucoup de différence entre les deux la couleur et les différences dans la sortie de la moyenne de techniques est subtile.
- Belle question. Je me demandais moi-même aussi, parfois.
Vous devez vous connecter pour publier un commentaire.
Prendre un regard sur les réponses à cette question.
Fondamentalement, vous voulez convertir les couleurs dans quelque chose appelé L'espace de laboratoire, et de trouver leur moyenne dans l'espace.
Espace de laboratoire est une manière de représenter les couleurs où les points qui sont proches les uns des autres sont ceux qui ressemblent à des humains.
Plusieurs réponses suggèrent la conversion à l'espace couleur Lab - ce qui est probablement une bonne approche pour les plus complexes de la couleur de la manipulation.
Mais si vous avez simplement besoin d'un moyen rapide pour prendre la moyenne des deux couleurs, ce qui peut être fait dans l'espace RVB. Vous avez juste à l'esprit une mise en garde: Vous devez carré les valeurs RVB avant de calculer la moyenne, puis de les prendre à la racine du résultat. (Si vous prenez simplement la moyenne, le résultat aura tendance à être trop sombre.)
Comme ceci:
Voici une vid qui explique pourquoi cette méthode est efficace: https://www.youtube.com/watch?v=LKnqECcg6Gw
NewColor = sqrt(R1^2*w + R2^2*[1 - w]), sqrt(G1^2*w + G2^2*[1 - w]), sqrt(B1^2*w + B2^2*[1 - w])
où w est un poids de 0 à 1.NewColorR = sqrt((R1^2+R2^2+R3^2)/3). This is just for red component. Do same for
vert " etblue
Moyenne dans Espace de couleur HSL pourrait produire de meilleurs résultats.
Je ne sais pas si prendre un simple moyenne des composantes est le "meilleur" de la perception de point de vue (qui sonne comme une question pour un psychologue), mais voici quelques exemples d'utilisation de composant simple calcul de la moyenne.
Le rouge-de la moutarde-vert est moche mais l'interpolation semble assez raisonnable.
Oui. Vous pouvez calculer la moyenne de deux couleurs en même temps comme ça. C'est l'approche utilisée par OpenGL pour mélanger les couleurs ensemble (par exemple, dans la création de mip maps pour le rendu des objets éloignés, ou la restitution de 50% de transparence de la texture). Il est rapide, simple, et assez "bon" pour de nombreuses situations. Il n'est pas complètement réaliste, cependant, et ne serait probablement pas utilisé sur la photo, la qualité des images.
Je pense, la réponse de arntjw va dans le bon sens, et reconnaît les logarithmes de la sous-couche, comme l'a dit Dan W. Cependant, la moyenne géométrique est pas sqrt((C1^2+C2^2)/2), mais sqrt(C1*C2). Si la moyenne de la couleur serait:
Les couleurs résultent sont plus proches de ce que nous attendons. Vous pouvez généraliser à plus de couleurs à l'aide d'ordre supérieur racines, et le poids de chaque couleur en ajoutant un exposant de ses composants.
Il y a effectivement un moyen beaucoup plus simple.
Échelle de l'image de 1px par 1px.
Couleur de la 1px est la couleur moyenne de ce que vous mis à l'échelle