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

  • diffusion of photons through lens glass (blur) or humid air (hazing),
  • diffusion of pigments in wet inks or watercolors.

В обох випадках дифузія робить зображення менш різким за рахунок “витікання” частинок і згладжування локальних відмінностей.

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

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

Дифузію можна видалити, щоб:

  • recover the original image from sensors with an anti-aliasing filter or mitigate the blur created by most demosaicing algorithms (use one of the sharpen demosaicing presets and move the module before the input color profile module in the pipeline),
  • reverse static lens blurring/defocusing (use one of the lens deblur presets),
  • remove atmospheric haze (use the dehaze preset),
  • add extra acutance for better legibility (use the local contrast preset).

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

Дифузію можна додати, щоб:

  • create a bloom or Orton effect (use the bloom preset),
  • inpaint missing or damaged parts of an image (use the inpaint highlights preset),
  • denoise in an edge-preserving way (use one of the denoise presets)
  • apply a surface blur (use the surface blur preset).

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

  • simulate line drawing or watercolor (use the simulate line drawing and simulate watercolor presets),
  • create random patterns and textures by increasing noise (over time, with iterations, noise will connect with neighbours to create random specks).

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


концепції

час

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

напрямок

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

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

швидкість

Залежно від того, наскільки текуче середовище, частинки можуть рухатися більш чи менш вільно і, отже, більш чи менш швидко. Швидкість дифузії можна встановити в розділі швидкість (різкість ↔ дифузія) модуля.

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

Усі швидкості додаються (з першого по четвертий порядки), а суми “перший порядок + другий порядок” і “третій порядок + четвертий порядок” ніколи не повинні перевищувати +100% чи -100%, якщо ви не хочете створити глітч-арт .

масштаб

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

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

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

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

параметри

ітерації
Кількість разів, коли алгоритм повинен виконуватися поверх самого себе. Високі значення сповільнюють роботу модуля, але дозволяють більш точні реконструкції, за умови, що швидкості дифузії досить низькі.
центральний радіус
Основний масштаб дифузії. Нуль змушує дифузію сильніше впливати на дрібні деталі (використовується для відновлення різкості та знешумлення). Ненульові значення визначають розмір деталей, які мають бути сильно розсіяними (використовуються для збільшення локального контрасту).
діапазон радіусів
Це дозволяє вибрати діапазон радіусів деталей, на якому потрібно діяти, навколо центрального радіуса. Інтервал дифузії визначає діапазон масштабів деталей (між центр - діапазон і центр + діапазон), в межах якого обмежується дифузія. Високі значення застосовують дифузію на великій смузі радіусів за рахунок часу обчислень. Низькі значення застосовують дифузію ближче навколо центрального радіуса. Якщо ви плануєте відновити різкість, діапазон радіусів має дорівнювати приблизно ширині розмиття вашого об’єктива, а центральний радіус має бути нульовим. Якщо ви плануєте збільшити локальний контраст, але не хочете впливати на різкість або шум, діапазон радіусів має становити максимально 3/4 вашого центрального радіуса.

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

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

швидкість (різкість ↔ дифузія)

У наведених нижче елементах керування додатні значення застосовують дифузію, негативні значення скасовують дифузію (тобто підвищують різкість), а нуль нічого не робить.

1st order speed (gradient)
The speed of diffusion of the low-frequency wavelet layers in the direction defined by the 1st order anisotropy setting.
2nd order speed (laplacian)
The speed of diffusion of the low-frequency wavelet layers in the direction defined by the 2nd order anisotropy setting.
3rd order speed (gradient of laplacian)
The speed of diffusion of the high-frequency wavelet layers in the direction defined by the 3rd order anisotropy setting.
4th order speed (laplacian of laplacian)
The speed of diffusion of the high-frequency wavelet layers in the direction defined by the 4th order anisotropy setting.

напрямок

У наступних елементах керування позитивні значення змушують дифузію ближче слідувати ізофотам (уникати контурів), негативні значення змушують дифузію ближче слідувати градієнтам, а нуль є ізотропним.

1st order anisotropy
The direction of diffusion of the low-frequency wavelet layers relative to the orientation of the gradient of the low-frequency (1st order speed setting).
анізотропія 2-го порядку
Напрямок дифузії низькочастотних вейвлет-шарів відносно орієнтації високочастотного градієнта (налаштування швидкість 2-го порядку).
анізотропія 3-го порядку
Напрямок дифузії високочастотних вейвлет-шарів відносно орієнтації низькочастотного градієнта (налаштування швидкість 3-го порядку).
анізотропія 4-го порядку
Напрямок дифузії високочастотних вейвлет-шарів відносно орієнтації високочастотного градієнта (налаштування швидкість 4-го порядку).

управління контурами

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

просторовість дифузії

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

робочий процес

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

загальні поради

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

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

починаючи з пресетів

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

  • if the effect seems too strong, decrease the number of iterations,
  • if edge artifacts appear, increase the edge sensitivity,
  • if deblurring starts to affect valid blurry parts (bokeh), reduce the radius,
  • if deblurring seems correct in bright areas but excessive in dark areas, increase the edges threshold,
  • if deblurring clips black pixels, lower the black level correction in exposure module,
  • fine-tune the sharpness to your taste.

починаючи з нуля

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

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

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

Ці два кроки можна виконати на зменшеному зображенні. Пам’ятайте, що, в той час як велика увага була приділена тому, щоб візуальний результат алгоритму був досить інваріантним до масштабу, попередній перегляд буде точним лише при масштабуванні 1:1. У будь-якому випадку, все, що відбувається на рівні пікселів (радіус < 2px), не буде видно для рівнів масштабування нижче 50%.

На цьому етапі ви можете налаштувати чутливість до контурів, щоб подбати про будь-які контурні артефакти. Теоретично, дифузія в напрямку ізофота гарантує, що дифузія міститься всередині контурів, але цього недостатньо, якщо на зображенні присутні кути та гострі опуклі форми.

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

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

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

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

використання кількох екземплярів для реконструкції зображення

Пост-фільтрація шуму може отримати користь від запровадження процесу дифузії – це можна застосувати як додатковий крок після модуля знешумлення (профільоване).

І навпаки, наступні оптичні проблеми можуть отримати користь від реконструкції шляхом скасування процесу дифузії:

  1. blur introduced by a sensor’s low-pass filter (LPF) and/or anti-aliasing performed by the demosaic module,
  2. static lens blur,
  3. haze/fog,
  4. light diffusion (using a diffuser that is too large), leading to even lighting and lack of local contrast on the subject.

While more than one of these issues can affect the same picture at the same time, it is better to try to fix them separately using multiple instances of the module. When doing so, ensure the issues are corrected from coarse scale to fine scale, and that denoising always happens first. That is, your instances should appear in the following pipe order:

  1. denoise,
  2. local contrast enhancement,
  3. dehaze,
  4. lens blur correction,
  5. sensor and demosaic correction.

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

примітки та попередження

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

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

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

Частиною процесу старіння є втрата зору. Обсяг різкості, який подобається людям старше 50 років, може бути не таким, як у людей старше 20 років. Варто подумати про збільшення різкості, щоб отримати правдоподібний результат (відповідає вашому повсякденному сприйняттю), а не приємний результат (який може виглядати добре лише для людей з таким же зором, як у вас).

Нарешті, оцінка різкості зображень, збільшених до 1:1 (100%) або більше, є дурним завданням. У музеях, на виставках і навіть на екрані широка аудиторія дивиться на зображення цілком, а не за допомогою лупи. Більше того, у більшості практичних застосувань фотографії рідко перевищують роздільну здатність 3000×2000 пікселів (приблизно 300 точок на дюйм при розмірах A4/letter), що для сенсорів 24 Мп означає зменшення масштабу в 4 рази. При розгляді файлу розміром 24 Мп у масштабі 1:1 ви насправді дивитеся на зображення, яке ніколи не існуватиме. У цьому контексті підвищення різкості на рівні пікселів є марною тратою часу та циклів процесора.