ГоловнаСтаттіФотографія

HDR Перемап Тону: Стиснення Світла на Екран

Reinhard, Filmic ACES, Drago та Durand стискають величезний динамічний діапазон сцени на дисплей, який не може його відтворити — кожен оператор обмінюється контрастом, кольором і деталями по-різному.

mysimulator teamОновлено — червень 2026≈ 7 хв читання▶ Відкрити симуляцію

Чому 100 000:1 не підходить для екрану

Реальне зображення може мати величесний діапазон яскравості: прямі сонячні промені, затінена дверна ніша та полум’я свічки в одному кадрі можуть відрізнятися на п’ять або шість порядків величини. Сенсор HDR-камери чи фізично обґрунтований рендерер захоплюють цей діапазон як лінійну плаваючу радіацію, без верхньої межі. Стандартний дисплей, навпаки, відтворює контрастність ближче до 100:1 або 1000:1, і навіть найкращі HDR панелі не досягають того, що містить яскравий відкритий простір. Тонемапінг – це відображення з першого діапазону на другий. Просто обрізання всіх значень вище 1.0 до білого втрачає деталізацію світла; лінійне масштабування всього вниз за фіксованим коефіцієнтом стискає тіні майже до чорного. Жодне з цих рішень не підходить, тому тонемапінгу потрібна крива, а не скаляр.

жива демонстрація · пов'язана симуляція● LIVE

Глобальні оператори: Reinhard

Оператор глобальної тональності Еріка Reinhardа (2002 року), натхненний системою зон Ansel Adams, є найпростішим кривим, яке добре поводиться: ділити яскравість на одиницю плюс саму себе. Значення біля нуля майже не змінюються, а значення, що зростають до нескінченності, плавно підходять до одного замість обрізання. Розширений варіант додає білий колір Lwhite, щоб найяскравіші справжні відбивачі в сцені могли досягти білого кольору екрану замість того, щоб задовольнитися сірим.

Простий Reinhard: Ld = L / (1 + L) nextextended (з білим): Ld = L * (1 + L / Lwhite^2) / (1 + L) Глобальний оператор застосовує абсолютно однакову криву до кожного пікселя незалежно від його сусідів. Це робить його дешевим, стабільним у часі для відеокадрів і звільне від артефактів «затінення», які турбують локальні методи — але він не може зберегти сильний локальний контраст як у яскравому вікні, так і в темному інтер’єрі в одному кадрі, оскільки обидва регіони змушені проходити через одну й ту ж функцію.

simple Reinhard:       Ld = L / (1 + L)
extended (with white):  Ld = L * (1 + L / Lwhite^2) / (1 + L)

Фільмічний ACES: запозичення фільмової обробки світла в діапазоні висвітлення

Система кодування кольору Academic Color Encoding System (ACES) має фільмові криву, яка приблизно відповідає тому, як реагує на світло фотографічний фільм: S-подібна крива з м’яким, поступовим відкотом висвітлення, а не різким обрізанням, що дозволяє зберегти насичені кольори та запобігає їхньому переходу в неонові тони. Також це допомагає зберігати яскраві області, схожі на переекспоновані фільмові кадри, замість рівного цифрового підлогу. Оскільки крива була оптимізована для відповідності очікуванням кінематографістів щодо поведінки висвітлення, їй потрібно мінімум коригувань на кожному кадрі, тому вона стала стандартним тональним перетворювачем у більшості сучасних ігрових рушіїв та рендерерів. Широко використовувана компактна модель від Krzysztof Narkowicz приблизно відображає всю пайплайну ACES в одному виразі:

ACES fitted (Narkowicz, 2016), x = linear colour
a = 2.51, b = 0.03, c = 2.43, d = 0.59, e = 0.14
Ld = clamp( (x * (a*x + b)) / (x * (c*x + d) + e), 0, 1 )

Локальні оператори: білатеральний розріз Драго та Дюранда

Адаптивний логарифмічний оператор Фредерика Драго (2003 року) змінює основу логістичної кривої стиснення з упередженням, що дає більш точне керування агресивністю стиснення верхніх і нижніх меж діапазону, ніж простий логарифм. Фредо Дюран та Джулі Дозері пішли далі в 2002 році, зробивши оператор справді локальним: розбили зображення з логістичної густинності на гладку базову шару, побудовану за допомогою білатерального фільтра, що зберігає краї, і детальний шар, який є тим, що було видалено цим білатеральним фільтром. Стискайте лише базовий шар — там живе величезний динамічний діапазон, і залишайте детальний шар нетронутим, а потім додавайте їх разом.

база = bilateralFilter( log(L) ) // зберігає краї, великий масштаб деталь = log(L) - база // дрібні текстури, малі масштаби Лd = exp( compress(база) + детальний ) // стискайте лише гладку частину Оскільки білатеріальний фільтр поважає сильні краї, текстура та мікроконтраст виживають навіть після того, як загальний діапазон стиснуто стократ — але якщо радіус або поріг краю фільтра не відповідають зображенню, густина може просочитися через сильну країну і з'явитися як видиме кільце навколо при об'єднанні шарів.

base   = bilateralFilter( log(L) )      // edge-preserving, large-scale
detail = log(L) - base                  // fine texture, small-scale
Ld     = exp( compress(base) + detail ) // squeeze only the smooth part

Вибір оператора

Реальний час та ігри переважно використовують кінематографічні або ACES (Architettura dei Contenuti Estesi), оскільки вони стабільні кадр за кадром і не потребують налаштувань для кожного кадру, тоді як простий локальний оператор може мерехтіти під час руху камери та зміни базового шару "згладжування". Фотографічні робочі процеси покладаються на локальні оператори або на злиття кількох експонатів, щоб отримати динамічний вигляд HDR з великою кількістю деталей. Наукові та візуалізації у спотвореному кольорі часто потребують простого, точного глобального відображення, оскільки підвищення локального контрасту може ввести в оману глядача щодо основних даних. Важлива деталь для кожного оператора: наївне тональне відображення по каналах RGB призводить до втрати насиченості яскравих кольорів, тому більшість реалізацій відображають лише люмінанесцію, відновлюючи оригінальний відтінок і насиченість або працюють у сприйнятно рівномірній колірній просторовій системі, щоб зберегти природність кольорів протягом усього стиснення.

Frequently asked questions

Яка різниця між HDR-зйомкою та тонемапінгом?

HDR-зйомка або рендеринг генерує плаваючі значення сяйва, які можуть перевищувати можливості будь-якого дисплея, часто охоплюючи діапазон від 10 000 до 1 та більше. Тонемапінг – це окремий етап після обробки, який стискає ці лінійні значення в діапазон приблизно від 0 до 1, який може відтворити екран.

Чому локальні оператори тонемапінгу іноді створюють ореоли?

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

Чому ACES виглядає більш природно, ніж простий Reinhard?

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

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте HDR Tonemapping Operators і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію HDR Tonemapping Operators

Що ви знайшли?

Додати кроки відтворення (опційно)