дифузія / різкість

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

  • дифузія фотонів через скло об’єктива (розмиття) або вологе повітря (серпанок),

  • дифузія пігментів у вологих чорнилах або акварелі.

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

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

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

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

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

  • обернути статичні розмиття/дефокусування об’єктива (використовуйте один із пресетів відновлення різкості об’єктива),

  • видалити атмосферну імлу (використовуйте пресет видалення серпанку),

  • збільшити чіткість для кращої розбірливості (використовуйте пресет додати локальний контраст).

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

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

  • створити ефект світіння або ефект Ортона (використовуйте пресет світіння),

  • домалювати відсутні або пошкоджені частини зображення (використовуйте пресет домальовувати переекспоноване),

  • знешумлювати із збереженням контурів (використовуйте один із пресетів знешумлення)

  • застосувати розмиття поверхні (використовуйте пресет поверхневе розмиття).

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

  • імітувати малюнок або акварель (використовуйте пресети імітувати малюнок та імітувати акварель),

  • створювати випадкові візерунки та текстури, збільшуючи шум (з часом, з ітераціями, шум буде з’єднуватися з сусідами, створюючи випадкові цятки).


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


🔗концепції

🔗час

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

🔗спрямованість

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

This particular implementation can simulate natural diffusion, using what is called an isotropic diffusion (all directions have the same weight, like heat diffusion), but can also force a weighted direction parallel to the gradients (forcing diffusion across object edges and creating ghost edges), or a weighted direction perpendicular to the gradients, called isophote (forcing diffusion to be contained inside edges, like in a droplet of watercolor). The relative weight of each direction (gradient and isophote) is user-defined and can be found in the diffusion directionality section of the module.

🔗швидкість

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

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

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

🔗масштаб

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

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

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

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

🔗властивості дифузії

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

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

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

🔗швидкість дифузії

швидкість 1-го порядку (градієнт)
Швидкість дифузії низькочастотних вейвлет-шарів у напрямку, визначеному параметром анізотропії 1-го порядку. Позитивні значення застосовують дифузію, від’ємні значення скасовують дифузію, нуль нічого не робить.
швидкість 2-го порядку (лапласіан)
Швидкість дифузії низькочастотних вейвлет-шарів у напрямку, визначеному параметром анізотропії 2-го порядку. Позитивні значення застосовують дифузію, від’ємні значення скасовують дифузію, нуль нічого не робить.
швидкість 3-го порядку (градієнт лапласіана)
Швидкість дифузії високочастотних вейвлет-шарів у напрямку, визначеному параметром анізотропії 3-го порядку. Позитивні значення застосовують дифузію, від’ємні значення скасовують дифузію, нуль нічого не робить.
швидкість 4-го порядку (лапласіан з лапласіана)
Швидкість дифузії високочастотних вейвлет-шарів у напрямку, визначеному параметром анізотропії 4-го порядку. Позитивні значення застосовують дифузію, від’ємні значення скасовують дифузію, нуль нічого не робить.

🔗спрямованість дифузії

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

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

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

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

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

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

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

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

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

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

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

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

  • якщо ефект здається занадто сильним, зменште кількість ітерацій,

  • якщо з’являються контурні артефакти, збільште чутливість до контурів,

  • якщо усунення розмиття починає впливати на дійсні частини розмиття (боке), зменште радіус,

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

  • якщо усунення розмиття обрізає чорні пікселі, зменште корекцію рівня чорного в модулі експозиція,

  • налаштуйте різкість на свій смак.

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

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

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

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

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

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

When the edge sensitivity control has been adjusted to produce satisfying results, the image usually becomes quite soft. In most cases it will be necessary, at this point, to increase the number of iterations in order to compensate. This will come with a performance penalty so tread carefully with the performance/quality trade-off depending on your hardware. If you can’t increase the number of iterations, you will have to increase the diffusing speed.

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

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

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

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

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

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

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

  2. статичне розмиття об’єктива,

  3. серпанок/імла,

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

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

  1. знешумлення,

  2. посилення локального контрасту,

  3. видалення серпанку,

  4. корекція розмиття об’єктива,

  5. корекція сенсора та демозаїки.

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

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

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

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

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

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

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

translations