Est-il un algorithme pour le mélange des couleurs qui fonctionne comme le mélange des couleurs réelles?
La commune de mélange de couleurs RVB est très différent à partir d'un mélange de couleurs pour les peintures,
c'est le mélange de la lumière au lieu du mélange des pigments.
Par exemple:
Blue (0,0,255) + Yellow (255,255,0) = Grey (128,128,128)
(Il devrait être Bleu + Jaune = Vert)
Est-il un algorithme connu pour le mélange des couleurs qui fonctionne comme le mélange des couleurs réelles?
Mon approche
J'ai déjà essayé suivantes:
La conversion de deux couleurs HSV et le mélange de teintes (multiplié par un coefficient calculé à partir de la saturation),
et un simple moyen pour la saturation et la valeur des canaux. Ensuite, j'ai calculé la moyenne de luminance à partir de deux
les couleurs et ajusté la couleur résultante de ce match de luminance.
Cela a fonctionné assez bien, mais la teinte de mélange a été parfois mal, de l'e. g.:
Red (Hue 0°) + Blue (Hue 240°) = Green (Hue 120°)
J'ai compris que parfois j'ai besoin de modifier la teinte de la valeur de 360° (lorsque la différence entre
des teintes est supérieure à 180°).
Red (Hue 360°) + Blue (Hue 240°) = Magenta/fuchsia (Hue 300°)
Mais cette évolution n'a pas été très bon aussi, par exemple:
Cyan (Hue 179°) + Red (Hue 0°) = Hue 89.5°
Cyan (Hue 181°) + Red (Hue 0°) --> shifting is performed (the difference is greater than 180°)
Cyan (Hue 181°) + Red (Hue 360°) = Hue 270.5°
(Teinte 179 + Rouge) et (Teinte 181 + Rouge) des résultats de deux couleurs différentes.
Puis j'ai essayé CIE espace couleur Lab (comme dans Photoshop), qui est conçu pour être au plus près à la façon dont les êtres humains perçoivent les couleurs.
Je l'ai utilisé qu'une simple moyenne correspondant à chacune des deux canaux, mais les résultats n'étaient pas satisfaisants,
pour exemple, j'ai obtenu rose (64, 26, -9.5) de bleu (98, -16, 93) et jaune (30, 68, -112). Ces coefficients
ont été prises à partir de Photoshop.
Peut-être que si j'ai utilisé une autre opération que la moyenne, il pourrait fonctionner, mais
Je ne sais pas quoi.
CMJN ne fonctionne pas trop, les résultats sont comme RVB ou LAB.
Il semble que ni le trivial additif ni soustractive le mélange des couleurs dans l'un de ces espaces de couleurs rendements des résultats naturels.
Implémentations de travail
Krita – Peinture mélangeur
Trame graphique de l'éditeur de Krita a eu un travail de mise en œuvre de plus réaliste, le mélange des couleurs à un certain point: http://commit-digest.org/issues/2007-08-12/ (Peinture de mixage plugin)
Ils disent que c'est la première application qui met en œuvre une technologie spéciale à l'aide de Kubelka et Munk les équations qui décrivent le comportement des pigments.
Voici une vidéo de Krita le mélange des couleurs: https://www.youtube.com/watch?v=lyLPZDVdQiQ
Papier par FiftyThree
Il y a aussi article au sujet de la couleur de fusion dans le Document app pour iOS développé par FiftyThree. Ils décrivent comment ils innovation et l'expérimentation dans le domaine et offrent également des échantillons de mélange de bleu et de jaune que les résultats en vert. Cependant, le processus réel ou de l'algorithme n'est pas vraiment décrite.
De citer:
"Dans la recherche d'un bon mélange de l'algorithme, nous avons d'abord essayé interpolation des valeurs de couleur différentes-espaces: RGB, HSV, et HSL, puis CieLAB et CieLUV. Les résultats ont été décevants", dit Chen. "Nous savons que le rouge et le jaune doit produire l'orange ou le rouge et le bleu doit faire purple—mais il n'y a pas moyen d'arriver à ces couleurs n'importe quel espace de couleurs que vous utilisez. Il y a un génie axiome: Faire la chose la plus simple qui pourrait éventuellement fonctionner. Eh bien, nous avions essayé la méthode la plus simple des approches possibles et qu'ils ne se sentent pas à même de loin, à droite."
Il semble même que Krita, Papier met en œuvre la Kubelka-Munk modèle:
[...] le Kubelka-Munk modèle avait au moins six valeurs pour chaque couleur, y compris la réflexion et l'absorption des valeurs pour chacune des couleurs RVB. "Tandis que l'apparition d'une couleur sur un écran peut être décrit en trois dimensions, le mélange de couleur est en fait qui se produit dans les six dimensions de l'espace", explique Georg Petschnigg, FiftyThree est co-fondateur et chef de la direction. Le Kubelka-Munk papier a permis à l'équipe de traduire un problème d'esthétique dans un cadre mathématique. [...]
Partir de toutes ces informations, il semble que mise en œuvre, basé sur la Kubelka-Munk modèle pourrait être la voie à suivre et offrent des résultats qui sont plus proches de la réalité.
Même s'il ressemble à un processus compliqué, je n'ai pas encore vu beaucoup de bonnes informations sur la façon de mettre en place quelque chose comme ça.
Questions liées
Ces questions ont été posté après celui-ci, tous liés à la même chose.
Aucun d'eux n'a vraiment la réponse.
- Calcul d'un mélange de couleur de RVB
- Algorithme pour trouver la couleur entre les deux autres, dans l'espace de couleurs peints de couleurs
- La mise en œuvre de Kubelka-Munk comme Krita pour mélanger les couleurs comme de la peinture
D'autres liens et ressources connexes
- Kubelka-Munk recherche sur Twitter
- De mélange de peintures (!!Con 2016) par Diana Liao
- Peinture Inspirée de Mélange de Couleur et de Composition pour la Visualisation (N. Gossett, B. Chen)
- Un dupe je pense: stackoverflow.com/questions/726549/...
- youtube.com/watch?v=lyLPZDVdQiQ
- Krita Pictural Exhumé: github.com/KDE/krita/tree/...
Vous devez vous connecter pour publier un commentaire.
La corriger réponse est NON, car il n'y a pas de corriger de travail modèle de la façon dont "le mélange des couleurs dans le monde réel" fonctionne vraiment. Il est BEAUCOUP trop complexe et conditionnel et pas vraiment comme simple Rouge-Bleu-Jaune choses que nous avons apprises à l'école (en fait, elle nécessite tout de la Chimie et de beaucoup de la Physique et de la Biologie à résoudre).
Toutefois, la simple réponse est: OUI, utilisation soustractive mélange plutôt que Additif mélange.
La couleur de mélange que nous avons appris à l'école primaire est basée sur le colorant combinaisons qui sont une forme de mélange des couleurs soustractives (très simplifié). C'est plus le nombre de couleurs que nous avons ensemble, le plus sombre, il devient comme chaque pigment soustrait un peu plus de lumière.
D'autre part, presque tous les couleurs sont additif en ce qu'elles sont basées sur la combinaison d'ondes de lumière (très simpliste), de sorte qu'ils deviennent plus lumineuses, parce que chaque couleur ajoute un peu plus de lumière.
RVB+ schéma est quelque peu, l'additif complément à l'soustractive schéma que nous avons appris dans la plupart des AMÉRICAINS écoles élémentaires (qui est RBY-). Cependant, ils ne correspondent pas exactement et il peut être difficile pour convertir entre eux (recherche maintenant ...)
OK, si vous voulez juste passer de combinaisons d'additifs dans l'espace RVB à soustractive, vous pouvez utiliser l'inverse bayesan type de formule de combiner deux couleurs:
Réglage de la différence dans la chromatique des pôles de G sur Y, puis de nouveau à G) est beaucoup plus difficile ...
Il a été souligné que cela génère Noir pour l'exemple, et techniquement c'est correct pour un vrai système soustractif, cependant, si vous souhaitez plus de la dilution/soustractive système, vous pouvez essayer ceci à la place:
Cela produit un gris foncé au lieu de Noir. Mais pour obtenir le Jaune ou quelque chose d'approchant, vous avez encore à fixer les couleurs du pôle-problème d'alignement.
il y a deux différentes possibilités de combinaison de couleurs:
additif mélange (tslo)
mélange soustractif (comme CMJN)
Sorte de mélange des couleurs soustractives le résultat est ce que vous attendiez, mais il n'y a pas de bleu, au lieu de cela, il est cyan:
Jaune + cyan = vert
En général soustractive de la couleur de mélange est juste de la "prise de distance" (filtrage) de blanc lors de l'additif mélange des couleurs est l'addition de noir. (les couleurs de base de soustractive sont inverses l'un de l'additif: rouge ->cyan, vert->magenta; bleu->jaune)
Donc si vous commencez avec un écran blanc en appliquant des filtres:
min( blanc (255,255,255), jaune (255,255,0), cyan (0,255,255)) = vert (0,255,0)
Il est le code pour mélanger les couleurs, de façon réaliste, dans krita: https://projects.kde.org/projects/calligra/repository/revisions/master/show/krita/plugins/extensions/painterlyframework.
Noter que le code, y compris les lampes de fichier est la GPLv2+. Il peut convertir RVB en longueurs d'onde, faire de la composition et de la convertir en arrière.
Je pense que votre problème avec la combinaison de teintes, c'est que vous le faites en ajoutant les deux angles et en divisant par deux. Comme vous l'avez remarqué, le résultat souvent n'a pas de sens. Je pense que vous seriez mieux de conversion les angles en coordonnées Cartésiennes sur le cercle unité, faisant la moyenne de ces, et de trouver l'angle du point résultant (en ignorant l'ampleur).
Une façon de le faire soustractive mélange de couleurs RVB est d'abord convertir les couleurs RGB en réflectance spectrale des courbes. La conversion est assez simple, et une fois que vous l'avez fait, vous pouvez faire un vrai mélange soustractif de la réflectance des courbes, puis convertir le résultat en RVB. Il y a une autre question similaire: stackoverflow.com/questions/10254022/, où ce processus est décrit plus en détail.
Demandais si le calcul de l'inversion de la valeur RVB de travail. Comme il s'agit de la soustraction des lumières, techniquement, la soustraction de la partie peut être calculé en mathématiques simples.
Par exemple cyan + jaune
cyan = 0x00ffff
jaune = 0xffff00
Leurs renversements sont 0xff0000 et 0x0000ff, ce qui signifie qu'ils absorbée lumières rouges et bleues complètement. Leur mélange 1:1 doit absorber la moitié de lumières rouge et bleu (puisque l'autre moitié du mélange peut encore le reflet de certains de lumière rouge et bleu), ce qui est cohérent avec (0xff0000 + 0x00ffff) /2 = 0x7f007f. Maintenant, on soustrait la valeur de 0xffffff nous avons 0x80ff80 qui est vert!
Cochez cette la mise en œuvre additive, soustractive et autre mélange alghoritms.
Est entièrement fonctionnel (écrits en java), de sorte que vous pouvez tester les couleurs qui vous avez besoin de mélanger, et voir si elle est adaptée à vos besoins.
Que d'autres réponses pointues, Bleu + Jaune (exactement Cyan + Jaune) est Vert sur soustractive CMJN alghoritm. Voyez par vous-même