Крива насиченості

Технічна інформація
Опис
Перерозподіл насиченості та блискучості за допомогою кривих
Призначення
коригуюче чи креативне.
На вході
лінійний простір, RGB, на основі сцен.
Обробка
Darktable UCS або JzAzBz (перцептивний).
На виході
лінійний простір, RGB, на основі сцен.

Перерозподіляє насиченість та блискучість зображення як функцію власного вхідного значення, використовуючи дві незалежні криві, які можна редагувати. На відміну від звичайного повзунка насиченості чи “резонансу” (vibrance), кожна крива дозволяє точно визначити ступінь корекції для будь-якої точки в діапазоні насиченості — наприклад, зберігаючи вже насичені кольори й водночас підсилюючи майже нейтральні (або навпаки).

Опціональний керований фільтр із урахуванням контурів дозволяє згладити значення, отримані з кривих, завдяки чому корекція змінюється поступово в зонах переходу насиченості, а не відбувається різко.

🔗Вступ

Глобальні елементи керування насиченістю та “резонансом” (vibrance) кольорів застосовують до всього зображення єдиний коефіцієнт, іноді зважений за колірністю. Часто це надто грубий інструмент: відтінки шкіри, небо та листя зазвичай знаходяться в різних точках діапазону насиченості., тому їх одночасна зміна на однакову величину рідко забезпечує природний результат.

Крива насиченості будує криву над усім діапазоном перцептивно нормалізованої осі насиченості (від 0 до 100% межі локального колірного охоплення) і дозволяє додавати, переміщувати або видаляти контрольні вузли в будь-якому місці цієї кривої. Друга, незалежна крива виконує аналогічну функцію для блискучості — перцептивної характеристики, що поводиться як зміна експозиції з урахуванням насиченості. Обидві криві використовують значення насиченості конкретного пікселя як вхідний параметр; таким чином, корекція застосовується локально відповідно до насиченості пікселя, а не на основі просторової маски (якщо не активовано керований фільтр — див. керований фільтр).

🔗Загальні принципи

Значення RGB кожного пікселя конвертується в перцептивний колірний простір і зводиться до двох величин: кута відтінку та нормалізованої насиченості в діапазоні від 0 (нейтральний колір) до 1 (межа колірного охоплення для відповідного відтінку та яскравості). Це нормалізоване значення шукається на горизонтальній осі кривих насиченості та блискучості, а отримані значення з вертикальної осі на цих кривих слугують мультиплікативними коригувальними коефіцієнтами, що застосовуються за незмінного відтінку.

В налаштуванні Формула насиченості доступні дві перцептивні формули:

JzAzBz
Оригінальна формула. Використовує сприйняттєво рівномірний колірний простір JzAzBz, який не повністю враховує ефект Гельмгольца — Кольрауша і може поводитися менш плавно поблизу чорного кольору.
Darktable UCS
Сприйняттєво рівномірний колірний простір Darktable , розроблений спеціально для маніпулювання насиченістю. Він враховує ефект Гельмгольца — Кольрауша та містить вбудовану, точнішу модель відображення колірного охоплення, що забезпечує плавніші результати в усьому діапазоні яскравості. Це стандартна й рекомендована формула.

Кольори, що після корекції опинилися б за межами цільового охоплення, піддаються м’якому обмеженню (soft-clipping) зі збереженням відтінку та зміщенням до найближчого рівня насиченості в межах охоплення, на відміну від жорсткого відсікання. Це дозволяє застосовувати сильнішу корекцію кривих без появи постеризації чи різкого відсікання поблизу межі охоплення. М’яке обмеження застосовується один раз після обробки кривою насиченості та ще раз після обробки кривою блискучості.

🔗Елементи керування модулем

Модуль має дві вкладки (по одній на криву), ряд спільних елементів керування під графіком кривої та розгортальний розділ Керований фільтр.

🔗Вкладка “Насиченість”

Крива насиченості
Відображає залежність вихідного множника насиченості (вісь Y) від нормалізованої вхідної насиченості (вісь X). Крива за замовчуванням — це пряма лінія на рівні 50%, що відповідає нейтральному множнику (коефіцієнту 1). Переміщення вузла вище середньої лінії збільшує насиченість в цій точці вхідного діапазону, а переміщення нижче — зменшує її.
  • Клікніть на кривій, щоб додати вузол; перетягніть наявний вузол, щоб змінити його положення

  • Клікніть на вузлі правою кнопкою миші, утримуючи клавішу Ctrl, щоб скинути його до нейтрального стану

  • Клікніть на вузлі правою кнопкою миші, щоб видалити його, якщо є більше двох вузлів

  • Двічі клікніть у будь-якому місці графіка, щоб скинути активну криву

  • Наведіть курсор на вибраний вузол і прокрутіть коліщатко, щоб трохи змінити його значення; використання клавіші Ctrl під час прокручування забезпечує більший крок зміни

Тло графіка показує логарифмічно стиснуту гістограму розподілу вхідної насиченості зображення, тож ви можете побачити, які частини діапазону заповнені, перш ніж розміщувати вузли. Градієнтна смуга під графіком демонструє відповідний перцептивний градієнт (без урахування відтінку) для довідки.

🔗Вкладка “Блискучість”

Крива блискучостіі
Працює ідентично кривій насиченості, але її вихідний множник застосовується до параметра сприйманої блискучості. Зміни блискучості відбуваються за незмінного відтінку й поєднують зсуви яскравості та кольоровості, ортогональні до чистої насиченості; це ближче до локального коригування експозиції з урахуванням насиченості.

Застосовуються ті самі принципи взаємодії з вузлами, що й для кривої насиченості. Перемикання між вкладками не скидає налаштування іншої кривої — обидві вони завжди активні, і їх можна комбінувати. Значення обох кривих визначаються на основі одного й того самого вхідного параметра для конкретного пікселя: це може бути або вхідний рівень насиченості пікселя, або — якщо активовано керований фільтр — його згладжене значення.

🔗Спільні елементи керування

Піпетка
Зчитує значення нормалізованої насиченості у вибраній точці та відображає його на графіку активної кривої у вигляді вертикальної напрямної, використовуючи стандартну поведінку піпетки. Використовуйте цей інструмент, щоб визначити положення певного об’єкта (наприклад, ділянки шкіри чи неба) на вхідній осі перед налаштуванням форми кривої. Він завжди зчитує нефільтровану насиченість пікселів, незалежно від налаштувань керованого фільтра.
show saturation mask
Toggles a grayscale preview of the normalized input saturation used to look up both curves, shown in place of the image. Brighter areas correspond to higher input saturation. With the guided filter disabled, this shows the raw per-pixel saturation. With it enabled, it shows the exact coordinate described under protect near-neutrals that both curves are looked up with – raw near neutral, fully smoothed above the protected zone. noise protection never shifts this coordinate, in the mask or in the actual correction; it only damps the resulting saturation and brilliance factors after the curve lookup, so it has no separate visual signature in this mask. Either way, the mask reflects the module’s input, not any correction the curves apply.
Формула насиченості
Вибирає модель перцептивної нормалізації, описану в розділі загальні принципи. Впливає на обидві криві й не передбачає частої зміни, тому цей параметр розміщено в спільному рядку, а не дублюється на кожній вкладці.

🔗Керований фільтр

Optional edge-aware smoothing of the saturation value that both curves are looked up with. Only available with the darktable UCS saturation formula; the whole section is disabled when JzAzBz is selected.

use guided filter
Enables the smoothing. Disabled by default. Off, each pixel’s curve lookup uses its own raw, normalized saturation. On, that value is blended toward a fast scalar guided filter’s output before being used as the lookup for both curves, so neighboring pixels with similar saturation are pulled toward a common, locally smoothed value. Reduces halos and stair-stepping at boundaries between saturated and neutral regions, especially with aggressive curves and brilliance changes.
filter radius
Neighborhood radius, in pixels, used for the guided filter’s local statistics. Larger values give a more strongly smoothed lookup value with broader spatial influence; smaller values keep the smoothing tighter around local structures.
edge feathering
Controls how strongly the filter follows edges in the saturation signal. Lower values preserve harder edges and keep the smoothed value aligned to the underlying saturation structure; higher values give softer, less edge-anchored transitions.
protect near-neutrals
Center, as a percentage of the normalized saturation range, of a zone near zero saturation that is protected from the guided filter. Pixels at or below the protected side of this zone keep their own raw, unfiltered saturation as the curve lookup value instead of the smoothed one; pixels above it are looked up with the fully smoothed value. Raise this to keep more of the near-neutral range untouched by the smoothing.
protection transition width
Width, as a percentage, of the smooth ramp centered on protect near-neutrals over which the lookup value fades from raw to fully smoothed. Wider values give a gentler, more gradual handover instead of a sharp cutoff between the protected and filtered parts of the range.
noise protection
Reduces the strength of the saturation and brilliance corrections – not the curve lookup value itself – for pixels where the guided filter’s local residual looks like noise rather than a real color edge, based on a per-pixel confidence estimate computed alongside the filter. Higher values damp the applied factors further toward no change (unity) in those regions. Only has an effect while use guided filter is enabled.

Unlike filter radius, edge feathering, protect near-neutrals and protection transition width, this control has no visible footprint in the saturation mask preview: those four all shift the coordinate the curves are looked up at, which the mask shows directly, while noise protection acts after that lookup, on the curves’ output. Judge its effect on the image itself rather than on the mask.

Note: filter radius, edge feathering, protect near-neutrals, protection transition width and noise protection are only active when use guided filter is enabled.

🔗Інструкція з використання

🔗Базовий робочий процес

Під час першого увімкнення модуля обидві криві за замовчуванням мають вигляд пласкої нейтральної лінії, а зображення залишається незмінним.

  1. Застосуйте піпетку до об’єкта, який ви хочете опрацювати, наприклад, шкіри чи неба, щоб побачити, де на графіку знаходиться його насиченість,

  2. короткочасно увімкніть маску насиченості, щоб підтвердити, які області зображення відповідають якій частині горизонтальної осі кривої,

  3. додайте вузол поблизу вибраної точки й перетягніть його вгору, щоб збільшити насиченість у цьому діапазоні, або вниз, щоб зменшити її; накладена гістограма показує, яка частина зображення зазнає змін,

  4. додайте додаткові вузли, щоб захистити один кінець діапазону, наприклад, зберігаючи вже насичені кольори біля правого краю недоторканими, водночас коригуючи інші,

  5. переключіться на вкладку “Блискучість”, якщо для скоригованих кольорів потрібне обрізання яскравості/колірності з постійним відтінком, щоб виглядати збалансованими, що часто корисно після сильного підвищення насиченості,

  6. якщо сильні налаштування кривої призводять до появи ореолів або ступінчастих артефактів навколо насичених країв, увімкніть керований фільтр і ще раз перевірте попередній перегляд маски — він безпосередньо відображає радіус фільтра, розтушовку країв, захист відтінків, близьких до нейтральних, та ширину зони переходу; після цього окремо оцініть захист від шуму за самим зображенням, оскільки він не відображається на масці.

🔗Вибір формули

Залиште формулу Darktable UCS, якщо тільки вам не потрібно відтворити поведінку попереднього редагування чи стилю, створеного з використанням JzAzBz. Зміна формули впливає на спосіб нормалізації вхідної насиченості, а отже — і на дію наявних вузлів кривої. Перемикання на JzAzBz також повністю вимикає розділ Керований фільтр; його налаштування зберігаються, але не діють, доки ви не повернетеся до Darktable UCS.

Примітка: Після зміни формули варто ще раз перевірити криві, порівнявши їх із накладеною гістограмою.

🔗Використання керованого фільтра

The guided filter is only available with the darktable UCS formula. It does not change what the curves do; it mainly changes which saturation value they are evaluated at for each pixel. Start with the default radius and increase it if halos persist across large color transitions; increase edge feathering only if transitions still look too abrupt afterward. Because the smoothing sits upstream of both curves, it affects the saturation and brilliance results together; there is no separate guided-filter control per curve. If near-neutral areas such as skies or skin start looking patchy or mottled once the guided filter is on, raise protect near-neutrals (and soften the handover with protection transition width) to keep them on their own raw saturation instead. If strong curve settings amplify visible noise in otherwise flat, low-detail regions, raise noise protection to damp the correction there; judge this against the corrected image, not the saturation mask, since this control has no coordinate to show there.

🔗Поширені запитання

🔗Чому крива посилається на нормалізоване значення, а не на необроблену кольоровість?

Raw chroma or saturation values are not bounded consistently across hues and lightness levels – the same numeric chroma can be barely visible for one hue and heavily clipped for another. Normalizing input to the local gamut boundary, from 0 to 1, for the current hue and lightness makes the curve behave consistently across the image: a node placed at 80% always means 80% of the way to the most saturated color physically displayable at that hue and lightness.

🔗Чим це відрізняється від перцептивного грейдингу насиченості модуля “Колірний баланс RGB”?

Color balance RGB applies a single perceptual saturation and brilliance coefficient, optionally split between shadows, mid-tones and highlights via luminance masks. Saturation curve instead lets the correction vary continuously as a function of the pixel’s own saturation, independent of its luminance. The two modules are complementary and can be used together: luminance-based masking in color balance RGB, saturation-based shaping here.

🔗Чи змішує керований фільтр скориговане зображення з оригінальним?

Ні. Він не змішує незмінені та скориговані пікселі на завершальному етапі. Він лише згладжує значення насиченості, що подається на вхід кривих насиченості та блискучості для кожного пікселя — ще до того, як буде розраховано будь-яку корекцію. Піксель завжди проходить повну обробку згідно з кривими; змінюється лише точка на кривій, за якою він обробляється.

🔗Внутрішня обробка

Нижче наведено внутрішній порядок операцій у модулі для кожного активного пікселя:

  1. Конвертувати з конвеєрного RGB до XYZ, а потім до вибраного перцептивного простору, JzAzBz або Darktable UCS JCH,

  2. Обчислити кут відтінку та насиченість, нормалізовану до локальної межі охоплення кольорів,

  3. if the guided filter is enabled (darktable UCS only), computed on CPU or, where available, GPU via OpenCL: run the guided filter over a full-image scalar mask to get a smoothed value, estimate a per-pixel noise confidence from the local residual and color-edge energy, and blend the raw value toward the smoothed one using the protect near-neutrals/protection transition width zone as the blend weight; otherwise use the value from step 2 directly,

  4. Переглянути криві насиченості та блискучості при цьому (можливо, змішаному) значенні, щоб отримати два коефіцієнти корекції,

  5. Якщо керований фільтр увімкнено, зменшити обидва коефіцієнти в напрямку до одиниці пропорційно до захисту від шуму, помноженого на достовірність шуму пікселя,

  6. Застосувати коефіцієнт насиченості при сталому відтінку, виконуючи м’яке обмеження відносно межі колірного охоплення,

  7. Застосувати коефіцієнт блискучості при сталому відтінку, ортогонально до насиченості,

  8. Знову виконати м’яке обмеження результату щодо цільового колірного охоплення,

  9. Конвертувати назад у RGB конвеєра.

🔗Застереження

Changing the working RGB space mid-session will change how existing curve nodes behave, since 80% of the gamut boundary under one profile is not the same absolute saturation as under another. If you change the working profile, re-check the curves against the histogram overlay.

Попередній перегляд маски насиченості показує вхідні дані модуля для кривих, необроблені або згладжені за допомогою керованого фільтра, а не скоригований вихід. Це діагностичний засіб для формування кривої, а не попередній перегляд кінцевого результату.

Примітка: увімкнення керованого фільтра додає обчислювальні витрати, що зростають пропорційно радіусу фільтра. Дуже великі радіуси помітно збільшать час обробки зображень із високою роздільною здатністю.

The guided filter, and its protect near-neutrals, protection transition width and noise protection controls, only take effect with the darktable UCS saturation formula; they are inert under JzAzBz.

translations