Перейти до вмісту

Цифровий композитинг

Матеріал з Вікіпедії — вільної енциклопедії.
Чотири зображення, об'єднані в одне кінцеве зображення

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

Математика

[ред. | ред. код]

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

Наприклад, припустимо, що потрібно об'єднати два зображення однакового розміру. Вхідні зображення назвемо зображенням переднього плану та зображенням тла. Кожне з них складається з однакової кількості пікселів. Композитинг виконується через математичне об'єднання інформації з відповідних пікселів двох вхідних зображень та запис результату на третє зображення, яке назвемо об'єднаним зображенням.

Розгляньмо три пікселі;

  • піксель переднього плану, f
  • піксель тла фону, b
  • складений піксель, c

і

  • α — значення непрозорості пікселя переднього плану. (α = 1 для непрозорого переднього плану, α = 0 для повністю прозорого переднього плану). Монохромне растрове зображення, значення пікселів якого інтерпретуються як альфа-значення, називають маскою[en].

Тоді, враховуючи всі три колірні канали[en] та припускаючи, що вони виражені в колірному просторі γ=1 (тобто виміряні значення пропорційні інтенсивності світла), маємо:

cr = α fr + (1 − α) br
cg = α fg + (1 − α) bg
cb = α fb + (1 − α) bb

Зауважимо, що якщо операції виконуються в колірному просторі, де γ не дорівнює 1, то операція призведе до нелінійних ефектів, які потенційно можна розглядати як артефакти аліасингу (або «зубчастості») вздовж чітких меж у масці. Загалом, нелінійне композитне зображення може мати такі ефекти, як «ореоли» навколо компонованих об'єктів, оскільки вплив альфа-каналу нелінійний. Художник може компенсувати ефекти композитного зображення в нелінійному просторі.

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

cвих = α fвх + (1 − α) bвх
cвих = α fвх + bвх − α bвх
cвих = bвх + α (fвх − bвх)

Просто переписавши математичний вираз, можна заощадити 50 % необхідних операцій множення.

Алгебричні властивості

[ред. | ред. код]

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

Розгляньмо випадок, коли для отримання кінцевого зображення потрібно змішати чотири шари: F=A*(B*(C*D)), де A, B, C, D — частково прозорі шари зображення, а «*» позначає оператор композитингу (з лівим шаром поверх правого). Якщо змінюється лише шар C, нам слід знайти спосіб уникнути повторного змішування всіх шарів під час обчислення F. Без будь-яких спеціальних міркувань доведеться виконати три повні змішування зображення. Для операторів композитингу, які є комутативними, як-от адитивне змішування[en], безпечно змінити порядок операцій змішування. Тоді можна обчислити T=A*(B*D) лише один раз і для отримання F просто змішувати T*C (одна операція). На жаль, більшість операторів не є комутативними. Однак багато з них асоціативні, що дає змогу безпечно перегрупувати операції: F=(A*B)*(C*D), тобто без зміни їх порядку. У цьому випадку можна один раз обчислити S=A*B і зберегти цей результат. Щоб сформувати F за допомогою асоціативного оператора, потрібно виконати лише дві додаткові операції композитингу для інтеграції нового шару S, обчислюючи F:=S*(C*D). Цей вираз описує композитинг C з усіма шарами під ним за один крок, а на другому кроці — отримання кінцевого зображення змішуванням із попереднім результатом шарів, розташованих вище.

Якщо всі шари зображення змінюються регулярно, але багато шарів все ще потребують композитингу (наприклад, за розподіленого рендерингу), попри відсутність виграшу від попереднього обчислення, для пришвидшення обчислень за допомогою паралелізму все ж можна використовувати комутативність оператора композиції. Знову ж таки, розгляньмо зображення F=A*(B*(C*D)). Кожна операція композитингу в цьому виразі залежить від наступної, що призводить до послідовного обчислення. Однак, асоціативність дає змогу переписати F=(A*B)*(C*D), де явно є дві операції, які не залежать одна від одної та можуть виконуватися паралельно. Загалом, можна побудувати дерево попарних операцій композитигу з висотою, яка є логарифмічною від кількості шарів.

Програмне забезпечення

[ред. | ред. код]

Найбільш історично значущою системою нелінійного композитингу була Cineon[en], яка працювала в логарифмічному колірному просторі, що точніше імітує природну світлову реакцію плівкових емульсій (Cineon System, виготовлена Kodak, більше не виробляється). Через обмеження швидкості опрацювання та пам'яті, художники-композитори зазвичай не могли собі дозволити, щоб система виконувала проміжні перетворення в лінійний простір для етапів композитингу. З часом обмеження стали значно менш суттєвими, і тепер більшість композитигу виконується в лінійному колірному просторі, навіть у випадках, коли початкове зображення має логарифмічний колірний простір.

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

Композитинг на основі вузлів та шарів

[ред. | ред. код]

Є два радикально різних робочих процеси цифрового композитингу: композитинг на основі вузлів[en] та композитинг на основі шарів.

Композитинг на основі вузлів представляє всю композицію як спрямований ациклічний граф, що пов'язує медіа-об'єкти та ефекти в процедурній мапі, інтуїтивно відображаючи перехід від початкових даних до кінцевого результату, і фактично унаочнює те, як працюють з об'єктами всі програми для композитингу. Цей тип інтерфейсу композитингу забезпечує значну гнучкість, дає змогу змінювати параметри попереднього кроку обробки зображення «в контексті» (під час перегляду кінцевого композитного об'єкта). Пакети для композитингу на основі вузлів часто погано обробляють ключові кадри та часові ефекти, оскільки їхній робочий процес не випливає безпосередньо з часової шкали, як це роблять пакети композитингу на основі шарів. Інтерфейс на основі вузлів включають різні застосунки, як-от Natron, Shake[en], Blender, Blackmagic Fusion[en] та Nuke.

Композитинг на основі шарів представляє кожен медіаоб'єкт як окремий шар на часовій шкалі, кожен із власними часовими межами, ефектами та ключовими кадрами. Усі шари накладаються один на інший у будь-якому бажаному порядку; нижній шар зазвичай рендериться як основа кінцевого зображення, причому кожен вищий шар поступово рендериться поверх уже скомпонованих шарів, доки не буде зведено всі шари. Композитинг на основі шарів добре підходить для швидких 2D та обмежених 3D-ефектів, як-от в анімованій графіці, але стає незручним для складніших композитів, що потребують численних шарів. Частковим розв'язком цієї проблеми є здатність деяких програм переглядати порядок компонування елементів (зображень, ефектів тощо) за допомогою візуальної діаграми (блок-схеми), вкладати одні композиції в інші, тим самим ускладнюючи порядок рендерингу.

Див. також

[ред. | ред. код]

Література

[ред. | ред. код]
  • Mansi Sharma; Santanu Chaudhury; Brejesh Lall (2014). Content-aware seamless stereoscopic 3D compositing. Proceedings of the 2014 Indian Conference on Computer Vision Graphics and Image Processing, ACM New York, NY, USA. doi:10.1145/2683483.2683555.
  • T. Porter and T. Duff, «Compositing Digital Images», Proceedings of SIGGRAPH '84, 18 (1984).
  • The Art and Science of Digital Compositing (ISBN 0-12-133960-2)
  • Samuel Collett, «Node Based Compositing Explained(Video)» (2023)

Посилання

[ред. | ред. код]