Дифузія / різкість
Дифузія – це сімейство фізичних процесів, за допомогою яких частинки рухаються й поширюються поступово з часом від джерела, що їх породжує. При обробці зображень дифузія переважно відбувається в двох місцях:
-
дифузія фотонів через скло об’єктива (розмиття) або вологе повітря (серпанок),
-
дифузія пігментів у вологих чорнилах або акварелі.
В обох випадках дифузія робить зображення менш різким за рахунок “витікання” частинок і згладжування локальних відмінностей.
Модуль Дифузія / різкість використовує узагальнену фізичну модель для опису кількох видів дифузії і може використовуватися про роботі зі зображеннями для моделювання або обернення процесів дифузії.
Оскільки це високотехнічний модуль, надано кілька пресетів, щоб продемонструвати його використання для різних цілей.
Дифузію можна видалити, щоб:
-
відновити оригінальне зображення з сенсорів, які мають фільтр згладжування, або зменшити розмиття, створене більшістю алгоритмів демозаїки (використовуйте один із пресетів Зменшення розмиття демозаїки і перемістіть модуль перед модулем Вхідний колірний профіль у конвеєрі),
-
обернути статичні розмиття/дефокусування об’єктива (використовуйте один із пресетів Відновлення різкості об’єктива),
-
видалити атмосферну імлу (використовуйте пресет Видалення серпанку),
-
збільшити чіткість для кращої розбірливості (використовуйте пресет Локальний контраст).
Зауважте, що розмиття руху неможливо обернути, скасувавши процес дифузії, оскільки вони не є дифузійними за своєю природою.
Дифузію можна додати, щоб:
-
створити ефект світіння або ефект Ортона (використовуйте пресет Світіння),
-
домалювати відсутні або пошкоджені частини зображення (використовуйте пресет Домальовувати переекспоноване),
-
знешумлювати із збереженням контурів (використовуйте один із пресетів Знешумлення)
-
застосувати розмиття поверхні (використовуйте пресет Поверхневе розмиття).
Оскільки процес фізичний, навіть його неправильності можуть бути використані в творчих цілях. Наприклад, ви можете:
-
імітувати малюнок або акварель (використовуйте пресети Імітувати малюнок та Імітувати акварель),
-
створювати випадкові візерунки та текстури, збільшуючи шум (з часом, з ітераціями, шум буде з’єднуватися з сусідами, створюючи випадкові цятки).
Примітка: Цей модуль дуже ресурсомісткий, оскільки насправді є анізотропним, багатомасштабним розв’язувачем диференціальних рівнянь з частинними похідними. Час виконання модуля збільшується з кількістю ітерацій, тому OpenCL настійно рекомендується. Деякі “швидкі” пресети також надаються для використання в системах без OpenCL.
🔗Концепції
🔗Час
Дифузія – це процес, що залежить від часу: чим більше часу у нього є, тим далі можуть поширюватися частинки. У цьому модулі час моделюється за допомогою кількості ітерацій (кількості разів, коли алгоритм виконується поверх самого себе). Збільшення кількості ітерацій може зробити реконструкцію (відновлення різкості, знешумлення, видалення серпанку) більш точною, якщо її правильно налаштувати, але також може призвести до її виродження.
🔗Напрямок
Природна дифузія зазвичай відбувається від точок з високим потенціалом (висока енергія або висока концентрація частинок) до точок з низьким потенціалом (низька енергія або низька концентрація частинок). На зображенні це означає, що дифузія завжди відбувається від найсвітліших пікселів до найтемніших.
Ця конкретна реалізація може імітувати природну дифузію, використовуючи те, що називається ізотропною дифузією (всі напрямки мають однакову вагу, як у тепловій дифузії), але також може примусово створювати зважений напрямок, паралельний градієнтам (примушуючи дифузію через контури об’єкта та створюючи примарні контури) , або зважений напрямок, перпендикулярний до градієнтів, званий ізофотом (примушує дифузію утримуватися всередині контурів, як у краплі акварелі). Відносна вага кожного напрямку (градієнта та ізофота) визначається користувачем і може бути знайдена в розділі Напрямок модуля.
🔗Швидкість
Залежно від того, наскільки текуче середовище, частинки можуть рухатися більш чи менш вільно і, отже, більш чи менш швидко. Швидкість дифузії можна встановити в розділі Швидкість (різкість ↔ дифузія) модуля.
При виконанні реконструкції (знешумлення, відновлення різкості, видалення серпанку) доцільно використовувати менші швидкості для кращої точності. Це запобігає числовим овершутам (і, отже, виродженню рішення) і може вимагати більше ітерацій. Для невеликої кількості ітерацій можна використовувати вищі швидкості. Зауважте, що великі розмиття потребують багато ітерацій для правильної реконструкції, тому швидкість слід відрегулювати, щоб уникнути виродження рішення.
Усі швидкості додаються (з першого по четвертий порядки), а суми “перший порядок + другий порядок
” і “третій порядок + четвертий порядок
” ніколи не повинні перевищувати +100% чи -100%, якщо ви не хочете створити глітч-арт.
🔗Масштаб
Природна дифузія має відбуватися лише до найближчих сусідніх координат. Тобто на кожній ітерації кожен піксель повинен взаємодіяти лише зі своїми 9 найближчими сусідами.
Тут ми трохи прискорюємо роботу, щоб заощадити час, і повторно використовуємо багатомасштабну схему вейвлетів із модуля Еквалайзер контрасту, щоб ми могли виконувати дифузію в різних масштабах. Максимальний масштаб дифузії визначається параметром Діапазон радіусів.
Незалежно від дифузії, параметр Різкість дозволяє вам збільшувати або зменшувати деталі в кожному масштабі, так само, як елементи керування сплайнами Еквалайзера контрасту. Разом із повзунком Чутливість до контурів, це надає ті ж функції, що й модуль Еквалайзер контрасту (вкладки Яскравість і Контури), але в RGB-просторі на основі сцен.
🔗Елементи керування модулем
🔗Параметри
- Ітерації
- Кількість разів, коли алгоритм повинен виконуватися поверх самого себе. Високі значення сповільнюють роботу модуля, але дозволяють більш точні реконструкції, за умови, що швидкості дифузії досить низькі.
- Центральний радіус
- Основний масштаб дифузії. Нуль змушує дифузію сильніше впливати на дрібні деталі (використовується для відновлення різкості та знешумлення). Ненульові значення визначають розмір деталей, які мають бути сильно розсіяними (використовуються для збільшення локального контрасту).
- Діапазон радіусів
- Це дозволяє вибрати діапазон радіусів деталей, на якому потрібно діяти, навколо центрального радіуса. Інтервал дифузії визначає діапазон масштабів деталей (між
центр - діапазон
іцентр + діапазон
), в межах якого обмежується дифузія. Високі значення застосовують дифузію на великій смузі радіусів за рахунок часу обчислень. Низькі значення застосовують дифузію ближче навколо центрального радіуса. Якщо ви плануєте відновити різкість, діапазон радіусів має дорівнювати приблизно ширині розмиття вашого об’єктива, а центральний радіус має бути нульовим. Якщо ви плануєте збільшити локальний контраст, але не хочете впливати на різкість або шум, діапазон радіусів має становити максимально 3/4 вашого центрального радіуса.
Радіуси виражаються в пікселях повнорозмірного зображення, тому налаштування копіювання та вставки між зображеннями різної роздільної здатності можуть призвести до дещо інших результатів, за винятком різкості на рівні пікселів.
Для інженерів-електриків: тут встановлюється смуговий фільтр у просторі вейвлетів, що використовує гауссове частотне вікно з центром у центральному радіусі
зі спадом (стандартним відхиленням) у діапазон радіусів
. Масштаби вейвлетів аналогічні гармонічним частотам, і кожен масштаб вейвлетів визначає радіус деталей, на які потрібно діяти.
🔗Швидкість (різкість ↔ дифузія)
У наведених нижче елементах керування додатні значення застосовують дифузію, негативні значення скасовують дифузію (тобто підвищують різкість), а нуль нічого не робить.
- Швидкість 1-го порядку (градієнт)
- Швидкість дифузії низькочастотних вейвлет-шарів у напрямку, визначеному параметром Анізотропія 1-го порядку.
- Швидкість 2-го порядку (лапласіан)
- Швидкість дифузії низькочастотних вейвлет-шарів у напрямку, визначеному параметром Анізотропія 2-го порядку.
- Швидкість 3-го порядку (градієнт лапласіана)
- Швидкість дифузії високочастотних вейвлет-шарів у напрямку, визначеному параметром Анізотропія 3-го порядку.
- Швидкість 4-го порядку (лапласіан з лапласіана)
- Швидкість дифузії високочастотних вейвлет-шарів у напрямку, визначеному параметром Анізотропія 4-го порядку.
🔗Напрямок
У наступних елементах керування позитивні значення змушують дифузію ближче слідувати ізофотам (уникати контурів), негативні значення змушують дифузію ближче слідувати градієнтам, а нуль є ізотропним.
- Анізотропія 1-го порядку
- Напрямок дифузії низькочастотних вейвлет-шарів відносно орієнтації низькочастотного градієнта (параметр Швидкість 1-го порядку).
- Анізотропія 2-го порядку
- Напрямок дифузії низькочастотних вейвлет-шарів відносно орієнтації високочастотного градієнта (параметр Швидкість 2-го порядку).
- Анізотропія 3-го порядку
- Напрямок дифузії високочастотних вейвлет-шарів відносно орієнтації низькочастотного градієнта (параметр Швидкість 3-го порядку).
- Анізотропія 4-го порядку
- Напрямок дифузії високочастотних вейвлет-шарів відносно орієнтації високочастотного градієнта (параметр Швидкість 4-го порядку).
🔗Управління контурами
- Різкість
- Застосувати посилення до деталей вейвлета, незалежно від установлених вище властивостей. Нуль нічого не робить, позитивні значення збільшують різкість, негативні значення розмивають. Це в основному корисно як змінна коригування під час додавання світіння або розмиття, щоб зберегти деяку різкість, додаючи світіння навколо контурів. Не рекомендується використовувати лише це для збільшення різкості, оскільки з цим налаштуванням ніщо не перешкоджає появі ореолів або бахроми.
- Чутливість до контурів
- Застосувати штраф до швидкостей дифузії при виявленні контурів. Це виявлення використовує локальну дисперсію навколо кожного пікселя. Нуль вимикає штраф, вищі значення роблять штраф сильнішим і чутливішим до контурів. Збільште, якщо ви помітите контурні артефакти, як-от бахроми та ореоли.
- Поріг виявлення контурів
- Визначте поріг дисперсії, який впливає переважно на області з низькою дисперсією (темні або розмиті ділянки або гладкі поверхні). Позитивні значення збільшують штраф для областей з низькою дисперсією, що добре для збільшення різкості або збільшення локального контрасту без стискання найтемніших тонів. Від’ємні значення зменшать штраф для областей з низькою дисперсією, що добре для знешумлення або розмиття з максимальним ефектом для найтемніших і розмитих областей.
🔗Просторовість дифузії
- Поріг маскування яскравості
- Цей елемент керування корисний, якщо ви хочете домальовувати в переекспонованих ділянках. Для значень, що перевищують 0%, дифузія відбуватиметься лише в областях з яскравістю, більшою за цей параметр. Зауважте, що в цих областях буде додано гауссовий шум, щоб імітувати частинки та ініціалізувати малювання.
🔗Робочий процес
The main difficulty with this module is that while its output can vary dramatically depending on its input parameters, these parameters have no intuitive link to everyday life. Users are likely to be overwhelmed, unless they are already familiar with Fourier partial differential equations. This section proposes some ways to approach this module without the burden of having to understand the underlying theory.
🔗Загальні поради
If you intend to deblur your image using this module, always start by properly correcting any chromatic aberrations and noise in the image, since the deblurring may magnify these artifacts. It is also important that you don’t have clipped black pixels in your image. These can be corrected with the black level correction of the exposure module.
Оскільки він працює на окремих каналах RGB, краще застосувати цей модуль після Калібрування кольору, щоб почати з повністю нейтрального вхідного зображення з правильним балансом білого. Зауважте, що збільшення локального контрасту або різкості також призведе до невеликого збільшення колірного контрасту та насиченості, що зазвичай добре. Оскільки він використовує регуляризацію на основі дисперсії для виявлення контурів, також краще розмістити цей модуль перед будь-якою нелінійною операцією.
🔗Починаючи з пресетів
Надані пресети були настроєні розробником і протестовані на ряді зображень для типових цілей. Найпростіший спосіб – просто почати з цих пресетів, а потім коригувати їх за потреби:
-
якщо ефект здається занадто сильним, зменште кількість ітерацій,
-
якщо з’являються контурні артефакти, збільште чутливість до контурів,
-
якщо усунення розмиття починає впливати на дійсні частини розмиття (боке), зменште радіус,
-
якщо розмиття здається правильним у світлих ділянках, але надмірним у темних, збільште поріг виявлення контурів,
-
якщо усунення розмиття обрізає чорні пікселі, зменште корекцію рівня чорного в модулі Експозиція,
-
налаштуйте різкість на свій смак.
🔗Починаючи з нуля
Налаштування модуля за замовчуванням повністю нейтральні і не впливають на ваше зображення. Суть модуля полягає в тому, що кожен порядок певним чином впливає на текстуру зображення.
Почніть з налаштування параметрів першого порядку (швидкість та анізотропія), щоб отримати початкову базу. Потім відрегулюйте радіус. Це вплине на більш грубі текстури (або розмиватиме їх, або збільшуватиме різкість). Пам’ятайте, що перший порядок діє на низьких частотах шкали вейвлетів і йде в напрямку, паралельному або перпендикулярному градієнту низьких частот.
Далі починаємо налаштовувати параметри другого порядку (швидкість і анізотропію). Другий порядок також діє на низьких частотах шкали вейвлетів, але цього разу слідує напрямку, паралельному або перпендикулярному градієнту високих частот, який може бути напрямком максимальної різкості або шуму. Це можна використовувати для зменшення шуму (використання другого порядку в режимі дифузії, з додатними значеннями), коли ви використовували перший порядок у режимі різкості (з від’ємними значеннями).
Ці два кроки можна виконати на зменшеному зображенні. Пам’ятайте, що, в той час як велика увага була приділена тому, щоб візуальний результат алгоритму був досить інваріантним до масштабу, попередній перегляд буде точним лише при масштабуванні 1:1. У будь-якому випадку, все, що відбувається на рівні пікселів (радіус < 2px), не буде видно для рівнів масштабування нижче 50%.
На цьому етапі ви можете налаштувати чутливість до контурів, щоб подбати про будь-які контурні артефакти. Теоретично, дифузія в напрямку ізофота гарантує, що дифузія міститься всередині контурів, але цього недостатньо, якщо на зображенні присутні кути та гострі опуклі форми.
Коли елемент керування чутливістю до контурів налаштовано для отримання задовільних результатів, зображення зазвичай стає досить м’яким. У більшості випадків на цьому етапі буде необхідно збільшити кількість ітерацій для компенсації. Це призведе до зниження продуктивності, тому обережно ставтеся до компромісу продуктивність/якість залежно від вашого обладнання. Якщо ви не можете збільшити кількість ітерацій, вам доведеться збільшити швидкість дифузії.
Останнім кроком є тонке регулювання третього та четвертого порядку, які піклуються про високі частоти кожної шкали вейвлетів. З цими налаштуваннями потрібно бути набагато обережнішими, ніж для першого та другого порядків, оскільки вони можуть викликати дуже швидке збільшення шуму.
Третій порядок слідує напрямку градієнта або ізофота низькочастотного шару, тому може використовуватися для спрямування високочастотної дифузії в напрямку, який, швидше за все, буде правомірним щодо реальних контурів (і менш схильний до шуму).
Четвертий порядок слідує напрямку градієнта або ізофота високочастотного шару і з більшою ймовірністю вловлює шум. Дифузія на четвертому порядку – найкращий спосіб зменшити шум без надмірного впливу на різкість, або як самостійний знешумлювач, або як крок регуляризації в процесі усунення розмиття.
🔗Використання кількох екземплярів для реконструкції зображення
Пост-фільтрація шуму може отримати користь від запровадження процесу дифузії – це можна застосувати як додатковий крок після модуля Знешумлення (профільоване).
І навпаки, наступні оптичні проблеми можуть отримати користь від реконструкції шляхом скасування процесу дифузії:
-
розмиття, створене фільтром низьких частот сенсора та/або згладжуванням, що виконується модулем Демозаїкізація,
-
статичне розмиття об’єктива,
-
серпанок/імла,
-
розсіювання світла (з використанням занадто великого розсіювача), що призводить до рівномірного освітлення та відсутності локального контрасту на об’єкті.
Хоча більше ніж одна з цих проблем може впливати на зображення одночасно, краще спробувати виправити їх окремо, використовуючи кілька екземплярів модуля. Роблячи це, переконайтеся, що проблеми виправлені від грубого масштабу до тонкого, і щоб знешумлення завжди відбувалося спочатку. Тобто ваші екземпляри мають з’являтися в такому порядку на конвеєрі:
-
знешумлення,
-
посилення локального контрасту,
-
видалення серпанку,
-
корекція розмиття об’єктива,
-
корекція сенсора та демозаїки.
Початок із реконструкцій більш грубого масштабу зменшує ймовірність появи або збільшення шуму при виконанні більш дрібних реконструкцій. Це неінтуїтивно, оскільки ці процеси відбуваються не в такому порядку під час формування зображення. З тієї ж причини перед будь-якою спробою збільшення різкості завжди має відбуватися знешумлення.
🔗Примітки та попередження
Хоча цей модуль розроблений бути інваріантним до масштабу, його вихід можна гарантувати лише при 100% масштабуванні та високоякісному або повнорозмірному експорті. Результати при нижчих рівнях масштабування або розмірах експорту можуть відповідати вашим очікуванням або не відповідати.
При налаштуванні алгоритму відновлення різкості, намагайтеся пам’ятати, що багато найкращих зображень в історії фотографії були зроблені за допомогою об’єктивів, які не були настільки різкими, як наявні сьогодні. Хоча поточна тенденція полягає в тому, щоб створювати та продавати все більш різкі об’єктиви та застосовувати шалений рівень збільшення різкості поверх цього в програмному забезпеченні, ця мода не призводить до кращих зображень і робить процес ретушування більш виснажливим. М’який фокус і трохи розмитості також мають деякі поетичні переваги, які хірургічно очищені HD-зображення можуть не передати.
Слід зазначити, що глобальний контраст (з використанням простих тонових кривих або рівнів чорного/білого) також впливає на наше сприйняття різкості, яке значно відрізняється від оптичної різкості (оптичної роздільної здатності). Людські очі чутливі лише до локального контрасту, який може виникнути внаслідок оптичної різкості (наприклад, відсутність дифузії – тонкі контури), а також від посилених тональних переходів. Якщо встановлено певне глобальне відображення тонів для збільшення контрасту, зображення буде виглядати чіткіше. Якщо використовується тональне відображення для зменшення контрасту, зображення буде виглядати більш розмитим. У жодному з цих випадків фактичні контури об’єктів жодним чином не зачіпаються, а наслідки для сприйняття є чистою ілюзією.
Частиною процесу старіння є втрата зору. Обсяг різкості, який подобається людям старше 50 років, може бути не таким, як у людей старше 20 років. Варто подумати про збільшення різкості, щоб отримати правдоподібний результат (відповідає вашому повсякденному сприйняттю), а не приємний результат (який може виглядати добре лише для людей з таким же зором, як у вас).
Finally, assessing the sharpness of images zoomed to 1:1 (100%) or more is a foolish task. In museums, exhibitions and even on screen, the general audience looks at images as a whole, not with a magnifying glass. Moreover, in most practical uses, photographs rarely exceed a resolution of 3000×2000 pixels (roughly a 300 DPI print at A4/Letter dimensions) which, for 24 megapixel sensors, means downscaling by a factor of 4. When examining a 24 megapixel file at 1:1, you are actually looking at an image that will never exist. Sharpening at pixel level, in this context, is a waste of time and CPU cycles.