Czy istnieje algorytm mieszania kolorów, który działa jak mieszanie prawdziwych kolorów?

Powszechne mieszanie kolorów RGB bardzo różni się od mieszania kolorów dla obrazów, jest to mieszanie światła zamiast mieszania pigmentów.

Na przykład:

Blue (0,0,255) + Yellow (255,255,0) = Grey (128,128,128)

(Powinien to być niebieski + żółty = zielony)

Czy jest znany algorytm mieszania kolorów, który działa jak mieszanie prawdziwych kolorów?

Moje podejście

Próbowałem już:

Konwersja obu kolorów na HSV i mieszanie odcieni (pomnożone przez współczynnik obliczony z nasycenia) oraz prosta średnia dla kanałów nasycenia i wartości. Następnie obliczyłem średnią luminancję z obu kolorów i dostosowałem wynikowy kolor, aby pasował do tej luminancji. To działało całkiem dobrze, ale mieszanie odcienia czasami było błędne, np. sol.:

Red (Hue 0°) + Blue (Hue 240°) = Green (Hue 120°)

Zorientowałem się, że czasami muszę przesunąć wartość barwy o 360 ° (gdy różnica między odcieniami jest większa niż 180 °).

Red (Hue 360°) + Blue (Hue 240°) = Magenta/fuchsia (Hue 300°)

Ale to też nie było zbyt dobre, np .:

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°

(Hue 179 + Red) i (Hue 181 + Red) dają dwa całkowicie różne kolory.

NastępnieSpróbowałem przestrzeni kolorów CIE Lab (jak w Photoshopie), który ma być bliższy temu, jak ludzie postrzegają kolory.

Użyłem tylko prostej średniej dla każdego z odpowiadających im dwóch kanałów, ale wyniki nie były satysfakcjonujące, na przykład uzyskałem kolor różowy (64, 26, -9.5) z niebieskiego (98, -16, 93) i żółtego (30, 68, -112). Te współczynniki zostały zaczerpnięte z Photoshopa.

Może jeśli użyłbym innej operacji niż przeciętnie, może to działać, ale nie wiem co.

CMYK też nie działał, wyniki są jak w RGB lub LAB.

Wygląda na to żeani trywialny dodatek, ani subtraktywność mieszanie kolorów w którejkolwiek z tych przestrzeni barw daje naturalne wyniki.

Implementacje roboczeKrita - Malarz malarski

Edytor grafiki rastrowej Krita wprowadził w życie bardziej realistyczne mieszanie kolorów:http://commit-digest.org/issues/2007-08-12/ (Wtyczka miksera Painterly)

Mówią, że jest to pierwsza publiczna aplikacja, która implementuje specjalną technologię wykorzystującą równania Kubelki i Munk, które opisują zachowanie pigmentów.

Oto film o mieszaniu kolorów Krita:https://www.youtube.com/watch?v=lyLPZDVdQiQ

Papier autorstwa FiftyThree

Jest takżeartykuł o mieszaniu kolorów w aplikacji Paper na iOS opracowany przezPięćdziesiąt trzy. Opisują, w jaki sposób wprowadzają innowacje i eksperymentują w okolicy, a także oferują próbki mieszania niebieskiego i żółtego, które dają kolor zielony. Jednak rzeczywisty proces lub algorytm nie jest tam dokładnie opisany.

Cytat:

„W poszukiwaniu dobrego algorytmu mieszania początkowo próbowaliśmy interpolować różne przestrzenie kolorów: RGB, HSV i HSL, a następnie CieLAB i CieLUV. Wyniki były rozczarowujące” - mówi Chen. „Wiemy, że czerwone i żółte powinny dawać pomarańczowy, lub że czerwony i niebieski powinny być fioletowe - ale nie ma sposobu, aby dotrzeć do tych kolorów bez względu na to, jakiej przestrzeni kolorów używasz. Istnieje inżynieryjny aksjomat: Zrób najprostszą rzecz, moglibyśmy pracować. Cóż, próbowaliśmy teraz najłatwiejszych możliwych podejść i nie czuli się nawet tak daleko.

Wydaje się, że tak samo jak Krita, Paper wdraża model Kubelka-Munk:

[...] model Kubelka-Munk miał co najmniej sześć wartości dla każdego koloru, w tym wartości odbicia i absorpcji dla każdego z kolorów RGB. „Chociaż wygląd koloru na ekranie można opisać w trzech wymiarach, mieszanie kolorów faktycznie dzieje się w przestrzeni sześciowymiarowej” - wyjaśnia Georg Petschnigg, współzałożyciel i dyrektor generalny FiftyThree. Papier Kubelka-Munk pozwolił zespołowi przełożyć problem estetyczny na ramy matematyczne. [...]

Z tych wszystkich informacji wynika, żewdrożenie oparte na modelu Kubelka-Munk może być droga naprzód i oferować wyniki znacznie bliższe rzeczywistości.

Mimo że wygląda to na skomplikowany proces, nie widziałem jeszcze wielu dobrych informacji o tym, jak zaimplementować coś takiego.

Powiązane pytania

Pytania te zostały opublikowane po tym wszystkim, odnoszącym się do tego samego.

Żaden z nich tak naprawdę nie ma odpowiedzi.

Obliczanie koloru mieszanego w RGBAlgorytm znajdowania koloru między dwoma innymi - w przestrzeni barw pomalowanych kolorówWdrażanie Kubelka-Munk jak Krita do mieszania kolorów takich jak farbaInne powiązane linki i zasobyWyszukiwanie Kubelka-Munk na TwitterzeMieszanie farb (!! Con 2016) autorstwa Diany LiaoslajdywideoMieszanie inspirowane farbą i komponowanie do wizualizacji (N. Gossett, B. Chen)

questionAnswers(7)

yourAnswerToTheQuestion