balans kolorów rgb

An advanced module which brings color-grading tools from cinematography into the photographic scene-referred pipeline.

Ten moduł nie jest odpowiedni dla początkujących bez znajomości teorii kolorów, którzy mogą chcieć trzymać się ustawień globalnej chromatyczności i globalnej jaskrawości, dopóki nie będą dobrze rozumieć wymiarów koloru.

🔗wstęp

Korekcja barwna jest ważną częścią edycji obrazu. Może pomóc w usuwaniu niechcianych przebarwień, a także może zapewnić twórczą zmianę odcieni kolorów, które dodadzą atmosfery twoim zdjęciom. W czasach fotografii filmowej większość atmosfery barwnej uzyskiwano za pomocą emulsji filmowej i wywoływaczy, przy czym pewne synchronizowanie kolorów odbywało się pod powiększalnikiem z kolorowymi głowicami. Pochłaniało to kosztowne zasoby i było zarezerwowane głównie dla przemysłu kinowego, gdzie pracę wykonywał kolorysta.

W erze cyfrowej, w której surowe obrazy wyglądają płasko i równomiernie, korekcja kolorów odgrywa tę samą rolę, co emulsje filmowe, poprzez ponowne wprowadzenie zmian kolorów ze względów estetycznych. Może również służyć do harmonizacji palety kolorów serii zdjęć (które mogły zostać wykonane w różnych warunkach), aby uzyskać spójny globalny wygląd. Do tego zadania niezwykle przydatny jest również wektoroskop.

Koloryści rozbijają na ogół proces korekcji barwnej na dwa etapy:

  1. Podstawowa korekcja barwna ma na celu usunięcie niechcianych zafarbów i stworzenie neutralnego punktu startowego,

  2. Korekcja zaawansowana nadaje zdjęciu ostateczny wygląd i atmosferę.

Podstawową korekcję barwną najlepiej wykonać w module kalibracji kolorów, który operuje na wielkościach fizycznych, lepiej dostosowanych do korekcji oświetlenia. Z drugiej strony, balans kolorów RGB dotyczy głównie drugorzędowej gradacji kolorów. Wykonanie prawdziwie neutralnej gradacji kolorów podstawowych powinno ułatwić przenoszenie drugorzędnej korekcji barwnej między zdjęciami (za pomocą stylów, presetów lub kopiowania i wklejania) z podobnym efektem.

🔗zasady ogólne

Moduł balans kolorów RGB jest ulepszeniem w stosunku do American Society of Cinematographers Color Decision List (ASC CDL) i używa masek alfa, aby efekt był prawidłowy podzielone między cienie i światła. Klasyczny CDL działa na cały zakres luminancji, a każdemu z jego parametrów przypisuje się większą wagę w niektórych częściach obrazu tylko jako efekt uboczny matematyki.

Ten moduł działa w większości (4 zakresy, chroma, żywość (ang. vibrance), kontrast) w liniowej przestrzeni kolorów RGB zaprojektowanej specjalnie do korekcji barwnej. Ta przestrzeń kolorów charakteryzuje się jednolitym rozmieszczeniem percepcyjnych odcieni, zachowując jednocześnie fizycznie skalowaną luminancję1. Percepcyjna część modułu (nasycenie i błyskotliwość (brillance)) działa w przestrzeni kolorów JzAzBz2, która zapewnia percepcyjne skalowanie zarówno jasności, jak i chromatyczności odpowiednie dla obrazów HDR. Obie przestrzenie kolorów zapewniają, że zmiany nasycenia i nasycenia barwy będą miały stałą barwę, co nie ma miejsca w przypadku większości innych operatorów nasycenia w darktable (zwłaszcza w starszym module balansu kolorów).

Moduł balansu kolorów RGB oczekuje scenocentrycznego wejścia liniowego, produkując scenocentryczne wyjście RGB (liniowe bądź nieliniowe), w zależności od ustawień modułu (kontrast_i_potęga wykluczą liniowość wyjścia).

Na wyjściu balans kolorów RGB sprawdza, czy korygowane kolory pasują do przestrzeni kolorów RGB kolejki przetwarzania (domyślnie Rec 2020) i stosuje miękkie przycinanie nasycenia przy stałym odcieniu, aby przekierować kolory spoza gamutu do najbliższego gamutu, skalując zarówno nasycenie, jak i jasność. Zapobiega to wypychaniu chrominancji i nasycenia kolorów poza ich prawidłowy zakres, co pozwala na bezpieczne stosowanie bardziej drastycznych korekcji.

Pamiętaj, że ten moduł jest zgodny z definicjami CIE dotyczącymi barwy i nasycenia, jak wyjaśniono w sekcji wymiary koloru.

🔗kontrolki modułu

🔗zakładka główna

przesunięcie tonu
Obraca wszystkie kolory obrazu o kąt względem płaszczyzny chromatyczności, przy stałej luminancji i chromatyczności. Możesz użyć tego elementu sterującego, aby usunąć rozlane kolorowe światło na obiekt lub szybko zmienić kolor jakiegoś obiektu. To ustawienie najlepiej jest zwykle stosować lokalnie, używając masek.
globalne ożywienie
Wpływa na wymiar nasycenia koloru na całym obrazie, nadając priorytet kolorom o niskim nasyceniu. Pozwala to na zwiększenie nasycenia kolorów neutralnych bez podkreślania już kolorowych pikseli.
kontrast
To ustawienie jest stosowane w kanale luminancji przy stałym odcieniu i nasyceniu barwy. Ustawienie punktu (na karcie masek, pod kontrastem punktu środkowej szarości) pozwala ustawić punkt neutralny krzywej kontrastu:
  • w punkcie podparcia krzywa kontrastu pozostawia niezmienioną luminancję,
  • poniżej punktu podparcia krzywa kontrastu zmniejsza luminancję dla dodatnich wartości kontrastu lub zwiększa ją dla wartości ujemnych,
  • powyżej punktu podparcia krzywa kontrastu zwiększa luminancję dla dodatnich wartości kontrastu lub zmniejsza ją dla wartości ujemnych.

Punkt podparcia ma domyślną wartość 18.45%, która jest spójna z bieżącym trybem scenocentrycznym i która powinna pasować do większości zastosowań (przy założeniu, że globalna jasność została ustawiona według zaleceń przy użyciu modułu ekspozycji).

Algorytm kontrastu daje naturalne wyniki, które naśladują środkową część krzywej kontrastu filmu analogowego. Powoduje to jednak również zwiększenie zakresu dynamicznego obrazu, co może unieważnić ustawienia krzywej filmowej w kolejce. Aby dostosować globalny kontrast, powinieneś normalnie użyć modułu korektora tonów – suwak kontrastu balansu kolorów RGB najlepiej sprawdza się w przypadku masek, np. do selektywnych korekt na pierwszym planie lub w tle.

🔗liniowa korekcja koloru

Liniowa korekcja chrominancji wpływa na wymiar chrominancji proporcjonalnie do jej wartości wejściowej, przy stałym odcieniu i luminancji. Robi to globalnie, z płaskim współczynnikiem (przy użyciu globalnej chrominancji), a także dla każdej z masek cieni, tonów średnich i światła (zdefiniowanych na karcie masek w obszarze zakresów luminancji).

🔗percepcyjna korekcja nasycenia

Korekcja nasycenia percepcyjnego wpływa zarówno na luminancję, jak i na wymiary barwy w przestrzeni percepcyjnej, proporcjonalnie do wartości wejściowej, przy stałym odcieniu. Robi to globalnie, z płaskim współczynnikiem (przy użyciu globalnego nasycenia), a także dla każdej z masek cieni, półtonów i świateł (zdefiniowane na karcie masek w obszarze zakresów luminancji).

🔗percepcyjne renderowanie blasku

Percepcyjna korekcja jasności wpływa zarówno na luminancję, jak i na wymiary barwy w przestrzeni percepcyjnej, proporcjonalnie do jej wartości wejściowej, przy stałym odcieniu iw kierunku prostopadłym do nasycenia. Jej efekt jest zbliżony do zmiany ekspozycji, ale skalowany percepcyjnie. Robi to globalnie, z płaskim współczynnikiem (przy użyciu globalnego nasycenia), a także dla każdej z masek cieni, półtonów i świateł (zdefiniowanych na karcie masek w obszarze zakresów luminancji).

🔗karta “4 sposoby”

Każde ustawienie w karcie 4 sposobów składa się z tych samych trzech komponentów, definiujących kolor przy użyciu niezależnych współrzędnych:

  1. luminancji,

  2. odcienia,

  3. oraz chrominancji.

Takie dane wejściowe koloru określają przesunięcie koloru zastosowane do obrazu globalnie lub w określonym zakresie luminancji.

Each hue slider has a color picker, which may be used to compute the opponent color of the selected region. This is useful to revert unwanted color casts (e.g. skin redness), since shifting the color to its opponent cast neutralizes it.

🔗globalne przesunięcie

Jest to równoważne przesunięciu ASC CDL i przywraca ono dodawanie stałej wartości RGB do wszystkich pikseli, podobnie jak korekta poziomu czerni w module ekspozycji. Ta kontrolka nie używa maskowania.

🔗wznios cieni

Jest to koncepcyjnie równoważne wzniosowi z sekcji wznios/gamma/wzmocnienie, chociaż zaimplementowane inaczej, i przywraca on mnożenie zamaskowanych pikseli przez stałą wartość RGB. Jest nakładany za pomocą maski cieni.

🔗wzmocnienie w światłach

Jest to równoważne nachyleniu ASC CDL i przywraca mnożenie zamaskowanych pikseli przez stałą wartość RGB. Nakłada się je za pomocą maski świateł.

🔗potęga

Jest to równoważne potędze ASC CDL i przywraca stosowanie stałego wykładnika RGB. Nie jest zamaskowana i musi być znormalizowana, ponieważ funkcja potęgowania ma inne zachowanie powyżej i poniżej 1, a my jesteśmy w nieograniczonej kolejce przetwarzania, w której biały jest zwykle większy niż 1. Parametr normalizacji jest dostępny w [maskach](# masks-tab) pod punktem podparcia bieli.

🔗zakładka masek

Ta zakładka definiuje pomocnicze kontrolki dla poprzednich zakładek. Kontrolki maskowania zwykle nie wymagają żadnych modyfikacji przez użytkownika, ponieważ ustawienia domyślne są kalibrowane tak, aby odpowiadały większości potrzeb i spełniały normalne oczekiwania dotyczące scenocentrycznej kolejki przetwarzania. Te ustawienia należy zmienić tylko w określonych scenariuszach.

🔗zakresy luminancji

Wykresy pokazują krycie (na osi y) 3 masek luminancji względem luminancji pikseli (na osi x). Najciemniejsza krzywa reprezentuje maskę cieni, najjaśniejsza reprezentuje maskę świateł, a trzecia krzywa reprezentuje maskę śródtonów.

Tylko maski cieni i świateł mogą być sterowane bezpośrednio — maska półtonów jest obliczana pośrednio na podstawie innych i działa jako zmienna dopasowująca.

odcięcie cieni
Kontroluje miękkość lub twardość przejścia od całkowicie kryjącej (100%) do całkowicie przezroczystej (0%) maski cieni.
punkt środkowej szarości dla maski
Ustawia wartość luminancji, przy której wszystkie trzy maski mają krycie 50%. W praktyce służy to do określenia, w jaki sposób obraz jest dzielony na cienie i światła.
zanikanie świateł
Kontroluje miękkość lub twardość przejścia od całkowicie nieprzezroczystego (100%) do całkowicie przezroczystego (0%) dla maski świateł.

Dla każdego z tych ustawień przycisk maski, znajdujący się po prawej stronie suwaka, wyświetla odpowiednią maskę (cienie, półcienie, światła) nałożoną jako szachownicę. Wciąż widoczny obszar obrazu (nie ukryty przez maskę) to obszar, na który będą miały wpływ suwaki cieni, półtonów i świateł w innych zakładkach.

Wszystkie podglądy masek wyświetlają dane wyjściowe modułu, w tym wszelkie wprowadzone zmiany kolorów, dzięki czemu można je również aktywować podczas edycji, aby zobaczyć tylko tę część obrazu, na którą mają one wpływ.

Maski luminancji obliczane są na wejściu modułu, są więc niewrażliwe na wszelkie zmiany luminancji, dokonywane wewnątrz modułu.

🔗progi

punkt podparcia bieli
Ustawia luminancję punktu bieli w EV. Jest to używane do normalizacji ustawienia potęgi w zakładce 4 zakresów. Ekranocentryczne implementacje funkcji potęgowej zakładają biel na poziomie 100%, co eliminuje konieczność normalizacji. Dla zastosowań scenocentrycznych musi to jednak zostać wzięte pod uwagę.

The color picker to the right of the slider automatically sets the white fulcrum to the maximum luminance from the selected region, which should be sufficient in most cases.

punkt szarości
Ustawia punkt odniesienia dla ustawienia kontrast na zakładce głównej. Odpowiada to wartości luminancji, która pozostanie niezmieniona przez regulację kontrastu. To ustawienie zwykle odpowiada średniej szarości wartości liniowej. Jeśli postępowałeś zgodnie z zaleceniami dotyczącymi scenocentrycznego przepływu pracy i ustawiłeś globalną jasność na wczesnym etapie, używając modułu ekspozycji, prawidłowa wartość powinna zwykle wynosić około 18-20%.

The color picker to the right of the slider automatically sets the contrast gray fulcrum to the average luminance from the selected region. This relies on the assumption that the average luminance is usually close to middle-gray, which is not true if you have specular highlights or primary light sources in the frame, or for low/high-key images.

🔗saturation formula

Note that this setting is not really appropriate for the masks tab (since it is not technically related to the masks) but is placed here because it is not meant to be used regularly and in the spirit of saving some display real-estate. Two options are provided:

JzAzBz (2021)
This mode is the original saturation algorithm. It uses the JzAzBz uniform color space (UCS) to compute the saturation. This color space is not meant for color changes and its lightness does not account for the Helmholtz-Kohlrausch effect, which states that colorful colors will look brighter than neutral or near-neutral colors (greys and pastels) having the same luminance. It also suffers from non-smooth behaviour near black, with colors being darkened too much.
darktable UCS (2022)
The darktable Uniform Color Space has been designed from the ground up, using psychoperceptual measurement datasets, for the sole purpose of the color manipulation (saturation) performed by this module. This color space does account for the Helmholtz-Kohlrausch effect and has a built-in gamut mapping formula that is more accurate and efficient than can be achieved in JzAzBz. It displays a smoother behaviour which makes saturation changes more even across the lightness range.

🔗ustawienia podglądu maski

Te ustawienia dotyczą podglądów masek wyświetlanych po kliknięciu przycisków masek w sekcji zakresów luminancji. Te ustawienia są zapisywane globalnie, więc zostaną zastosowane do wszystkich kolejnych obrazów, chyba że zostaną zmienione.

kolor 1 i 2 próbnika koloru
Ustawia dwa kolory podkładu maski tablicy szachownicy tła. Możesz ustawić je na przeciwne kolory bieżącego obrazu, aby ułatwić czytelność.
rozmiar próbnika
Ustawia szerokość komórek próbnika w pikselach (dostosowane do DPI monitora).

🔗FAQ

🔗nasycenie czy chrominancja?

Jak opisano w sekcji wymiary koloru, nasycenie i chrominancja przemieszczają się po płaszczyźnie (jasność, nasycenie) w różnych kierunkach. Ponadto nasycenie w balansie kolorów RGB wykorzystuje scenocentryczną przestrzeń liniową, podczas gdy nasycenie wykorzystuje przestrzeń percepcyjną, która przeskalowuje kolor w celu uzyskania równomiernych odstępów.

W praktyce należy użyć ustawienia chrominancji, jeśli chcesz zachować liniowość sceny emisji światła i/lub zachować niezmienioną luminancję. Te zmiany mogą mieć jednak większy wpływ na niektóre odcienie niż na inne, ponieważ przestrzeń kolorów nie jest w pełni skalowana percepcyjnie.

Nasycenie jest bliższe efektowi zmieszania białej farby z jakimś kolorem bazowym. Zmniejszenie nasycenia czerwieni zdegraduje go do różu, podczas gdy zmniejszenie jego nasycenia spowoduje degradację do szarego odcienia przy tej samej luminancji. Nasycenie jest być może bardziej intuicyjnym sposobem interakcji z kolorem, ze względu na jego związek z malarstwem.

Wybór jednego lub drugiego jest głównie kwestią decyzji, w którym miejscu na wykresie (jasności, nasycenia) chcesz przesunąć kolory i od czego mają zacząć. Aby osiągnąć pastelowe kolory, drogą do osiągnięcia jest nasycenie. Aby osiągnąć kolory przypominające laser (prawie monochromatyczne), ryzykując, że będą wyglądać syntetycznie, należy wybrać chrominancję.

🔗jaki ma to związek z triadą wznios/gamma/wzmocnienie?

Algorytm wznios/gamma/wzmocnienie opiera się na ekranocentrycznej przestrzeni kolorów, ponieważ zakłada ograniczony i symetryczny zakres dynamiczny, z punktem bieli na poziomie 100% i szarości na poziomie 50%. Dlatego też jest po prostu bezużyteczny w przestrzeni scenocentrycznej. Jednak jedyną niezgodną częścią jest wznios. gamma to dokładnie potęga ASC CDL, a wzmocnienie to dokładnie nachylenie ASC CDL.

Moduł balansu kolorów RGB ma po prostu dwa nachylenia zamiast jednego: wzmocnienie, zastosowane do podświetleń wyodrębnionych z całego obrazu przez maskę, oraz wznios, zastosowany podobnie, ale w cieniach.

🔗zmiana kontrastu

Podczas gdy balans kolorów RGB dotyczy głównie koloru (inne moduły radzą sobie z globalnym kontrastem w sposób zachowujący chromatyczność), luminancja jest w takim samym stopniu częścią koloru, jak odcień lub nasycenie i należy się tym zająć również tutaj, ponieważ na tym właśnie opiera się postrzeganie nasycenia. Jeśli chcesz na przykład zmienić kolor czerwony na różowy, zmniejszenie jego chrominancji zmieni kolor na szary, więc musisz również zwiększyć jego luminancję.

Istnieje kilka sposobów zmiany kontrastu w balansie kolorów RGB, lokalnie (z maskami) lub globalnie (bez):

  • w zakładce głównej użyj ustawienia kontrastu (prawdopodobnie obok opcji punktu szarości na karcie masek). Należy pamiętać, że spowoduje to podniesienie punktu bieli, a tym samym zwiększenie zakresu dynamicznego obrazu, co może unieważnić ustawienia modułu krzywej filmowej w dalszej części procesu.

  • w percepcyjnej korekcie nasycenia zmniejsz nasycenie świateł i ponownie nasyć cienie, aby uzyskać zwiększenie kontrastu luminancji,

  • w percepcyjnym renderowaniu blasku dodaj blask w światłach i usuń blask w cieniach, aby uzyskać zwiększenie kontrastu luminancji,

  • w zakładce [4 zakresy](#4 sposoby-karta) ustaw wznios cieni dla luminancji_ na wartości ujemne, a wzmocnienie w światłach na wartości dodatnie, co powoduje również zwiększenie kontrastu luminancji.

Różnica między tymi metodami polega na tym, jak efekt będzie ważony w stosunku do danych wejściowych modułu. Zaleca się wykonanie większości regulacji kontrastu luminancji w modułach krzywej filmowej i korektora tonów, a następnie dokonanie ostatecznych zmian w balansie kolorów RGB podczas sprawdzania kolorów.

🔗przetwarzanie wewnętrzne

Poniżej przedstawiamy wewnętrzną kolejność operacji w module:

  1. Przekształcenie z kolejki RGB do przestrzeni Kirka/Filmlight Ych,

  2. Zastosowanie przesunięcia odcienia przy stałych chrominancji i luminancji,

  3. Obliczenie maski luminancji za pomocą Y,

  4. Zastosowanie ustawienia liniowej chrominancji i ożywienia przy stałym odcieniu i luminancji,

  5. Przekształcenie w przestrzeń Kirk/Filmlight RGB,

  6. Zastosowanie ustawienia 4 zakresów (z wyjątkiem potęgi luminancji),

  7. Przekształcenie do przestrzeni Kirka/Filmlight Yrg,

  8. Zastosowanie potęgi luminancji i kontrastu na Y,

  9. Przejście w przestrzeń JzAzBz,

  10. Zastosowanie ustawienia nasycenia percepcyjnego i jasności percepcyjnej,

  11. Miękkie przycięcie chrominancji do gamutu kolejkowego RGB przy stałym odcieniu i jasności,

  12. Przekształcenie z powrotem do kolejki przetwarzania RGB.

🔗uwagi

Ustawienie globalnej chrominancji na -100% nie da prawdziwego obrazu monochromatycznego, jak to ma miejsce w przypadku innych algorytmów. Powodem tego jest to, że używana przestrzeń RGB ma punkt bieli D65 zdefiniowany w przestrzeni CIE LMS 2006, podczas gdy darktable wykorzystuje punkt bieli zdefiniowany w przestrzeni CIE XYZ 1931 i nie ma dokładnej konwersji między tymi przestrzeniami. Rezultatem będzie więc lekko przyciemniony czarno-biały obraz. Jeśli twoim zamiarem jest uzyskanie prawdziwego czarno-białego obrazu przy użyciu kanału luminancji, moduł kalibracji kolorów oferuje ustawienie wstępne B&W w oparciu o luminancję, które robi dokładnie to samo, ale bez rozbieżności punktu bieli.

Ten moduł ma włączone mapowanie gamutów (w stosunku do kolejkowego RGB). Oznacza to, że jeśli oryginalny obraz zawiera na początku kolory w dużej mierze spoza przestrzeni, włączenie balansu kolorów RGB bez określonego ustawienia nieznacznie zmieni jego kolory. To chyba najlepsze rozwiązanie.

Maksymalne nasycenie dozwolone w roboczej przestrzeni RGB jest rejestrowane dla każdego odcienia podczas inicjalizacji modułu, a później jest buforowane w LUT, aby zachować wydajność. Jeśli profil roboczy zostanie później zmieniony, balans kolorów RGB nie zostanie powiadomiony, co oznacza, że nie zaktualizuje swojej pamięci w zakresie barwy/nasycenia LUT. Aby wymusić aktualizację LUT, możesz po prostu zmienić dowolne ustawienie w module balansu kolorów RGB, a następnie zmienić je z powrotem. Nie zaleca się zmiany roboczej przestrzeni RGB w połowie sesji edycyjnej, ponieważ może to spowodować nieoczekiwane zmiany chrominancji i odcieni.

Ze względu na wydajność pomijane są nieliniowe konwersje z i do roboczej przestrzeni RGB, co oznacza, że wewnętrzna kolorymetria będzie nieprawidłowa podczas korzystania z nieliniowych przestrzeni kolorów. Zwróć uwagę, że nie ma powodu, aby używać nieliniowych przestrzeni jako działającego RGB, ponieważ utrudniają one mieszanie alfa, nie dając w zamian żadnych korzyści.


  1. Richard A. Kirk, Chromaticity coordinates for graphic arts based on CIE 2006 LMS with even spacing of Munsell colours, 2019. https://doi.org/10.2352/issn.2169-2629.2019.27.38 ↩︎

  2. Safdar et al., Perceptually uniform color space for image signals including high dynamic range and wide gamut, 2017. https://doi.org/10.1364/OE.25.015131 ↩︎

translations