dyfuzja lub wyostrzenie
Dyfuzja to rodzina procesów fizycznych, dzięki którym cząstki poruszają się i rozprzestrzeniają stopniowo w czasie ze źródła, które je generuje. W przetwarzaniu obrazu dyfuzja występuje najczęściej w dwóch miejscach:
-
dyfuzji fotonów przez szkło soczewki (rozmycie) lub wilgotne powietrze (zamglenie),
-
dyfuzji pigmentów w mokrych tuszach lub akwarelach.
W obu przypadkach dyfuzja sprawia, że obraz jest mniej ostry poprzez „wyciekanie” cząstek i wygładzanie lokalnych zmian.
Moduł dyfuzja lub wyostrzenie wykorzystuje uogólniony model fizyczny do opisania kilku rodzajów dyfuzji i może być używany przez twórców obrazów do symulacji lub odwrócenia procesów dyfuzji.
Ponieważ jest to wysoce techniczny moduł, dostępnych jest kilka presetów, aby zademonstrować jego użycie do różnych celów.
Dyfuzję można usunąć w celu:
-
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),
-
odwrócenia rozmycia statycznego / rozmycia obiektywu (użyj jednego z presetów usunięcia rozmycia obiektywu),
-
usuwania zamglenia atmosferycznego (użyj presetu usuwania zamglenia),
-
dodania dodatkowej ostrość dla lepszej czytelności (użyj presetu kontrast miejscowy).
Zwróć uwagę, że rozmyć ruchu nie można cofnąć poprzez cofnięcie procesu dyfuzji, ponieważ nie mają one charakteru dyfuzyjnego.
Dyfuzja może zostać dodana w celu:
-
stworzenia efektu poświaty lub Ortona (użyj presetu poświata),
-
zamalowania brakujących lub uszkodzonych części obrazu (użyj presetu rekonstrukcja świateł),
-
odszumiania z zachowaniem krawędzi (użyj jednego z presetów odszumiania)
-
zastosowania rozmycia powierzchni (użyj presetu rozmycia powierzchni).
Ponieważ proces jest fizyczny, nawet jego usterki można wykorzystać do celów twórczych. Na przykład możesz:
-
symulować rysowanie linii lub akwarelę (użyj presetu symuluj rysowanie linii i symuluj akwarelę),
-
tworzyć losowe wzory i tekstury, zwiększając szum (z biegiem czasu, z iteracjami, szum połączy się z sąsiadami, tworząc losowe plamki).
Uwaga: ten moduł wymaga dużej ilości zasobów, ponieważ w rzeczywistości jest anizotropowym, wieloskalowym narzędziem do rozwiązywania równań różniczkowych cząstkowych. Środowisko wykonawcze modułu wydłuża się wraz z liczbą iteracji, dlatego zdecydowanie zaleca się stosowanie OpenCL. Niektóre „szybkie” presety są również dostępne do użytku w systemach bez OpenCL.
🔗podstawowe pojęcia
🔗czas
Dyfuzja jest procesem zależnym od czasu: im więcej czasu, tym dalej cząsteczki mogą się rozprzestrzeniać. W tym module czas jest symulowany za pomocą liczby iteracji (ilości uruchomień algorytmu). Więcej iteracji może sprawić, że rekonstrukcja (usuwanie rozmycia, odszumianie, usuwanie zamglenia) będzie dokładniejsza, jeśli zostanie odpowiednio ustawiona, ale może również spowodować jej degenerację.
🔗kierunek
Dyfuzja naturalna odbywa się zwykle od punktów o wysokim potencjale (wysoka energia lub duże stężenie cząstek) do tych o niskim potencjale (niska energia lub niskie stężenie cząstek). Na obrazie oznacza to, że dyfuzja zawsze zachodzi od najjaśniejszych pikseli do najciemniejszych.
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 direction section of the module.
🔗szybkość
Depending how fluid the environment is, particles can move more or less freely and therefore more or less fast. The speed of diffusion can be set in the speed section of the module.
Podczas wykonywania rekonstrukcji (odszumianie, usuwanie rozmycia, odmgławianie) zaleca się stosowanie mniejszych prędkości dla lepszej dokładności. Zapobiega to przekroczeniom liczbowym (a tym samym degeneracji rozwiązania) i może wymagać większej liczby iteracji. W przypadku małej liczby iteracji można zastosować wyższe prędkości. Zwróć uwagę, że duże rozmycia wymagają wielu iteracji do prawidłowej rekonstrukcji, więc należy dostosować prędkość, aby uniknąć degeneracji rozwiązania.
Wszystkie prędkości są dodawane (od pierwszego do czwartego stopnia), a sumy prędkości pierwszej i drugiej ani trzeciej i czwartej nigdy nie powinny przekraczać ±100%, chyba że chcesz utworzyć glitch art.
🔗skala
Naturalna dyfuzja wywiera wpływ tylko na najbliższych sąsiadów. Oznacza to, że w każdej iteracji każdy piksel powinien oddziaływać tylko na 9 sąsiednich.
W darktable przyspieszyliśmy nieco ten proces, aby zaoszczędzić czas i ponownie wykorzystać schemat falek o wielu skalach z modułu korektora kontrastu, dzięki czemu możemy dyfundować w różnych skalach. Maksymalna skala dyfuzji jest określona przez parametr promienia.
Niezależnie od rozproszenia, parametr ostrości umożliwia zwiększenie lub zmniejszenie szczegółów w każdej skali, podobnie jak kontrolki krzywej składanej korektora kontrastu. Wraz z suwakiem czułości na krawędzie zapewnia to te same funkcje, co moduł korektora kontrastu (i zakładki lumy i krawędzi), ale w scenocentrycznej przestrzeni RGB.
🔗kontrolki modułu
🔗properties
- iteracje
- Parametr określający, ile razy algorytm powinien zadziałać rekurencyjnie. Wysokie wartości spowalniają moduł, ale umożliwiają dokładniejsze rekonstrukcje, pod warunkiem, że prędkości dyfuzji są wystarczająco niskie.
- promień centrum
- Główna skala dyfuzji. Zero powoduje, że dyfuzja silniej oddziałuje na drobne szczegóły (używane do usuwania rozmycia i odszumiania). Wartości niezerowe definiują rozmiar szczegółów, które mają być mocno rozproszone (użyte do zwiększenia lokalnego kontrastu).
- promień
- Kontrolka, pozwalająca wybrać pasmo promieni szczegółów, na których będzie działać, wokół promienia centralnego. Rozpiętość dyfuzji definiuje zakres skal szczegółów (pomiędzy „środek – rozpiętość” a „środek + rozpiętość”), w którym dyfuzja jest ograniczona. Wysokie wartości rozpraszają się na dużym paśmie promieni, kosztem czasu obliczeń. Niskie wartości rozchodzą się bliżej promienia centralnego. Jeśli planujesz usunąć rozmycie, rozpiętość promienia powinna wynosić w przybliżeniu szerokość rozmycia obiektywu, a promień centrum powinien wynosić zero. Jeśli planujesz zwiększyć lokalny kontrast, ale nie chcesz wpływać na ostrość lub szum, rozpiętość promienia powinna wynosić 3/4 maksymalnego promienia centrum.
Promienie wyrażone są w pikselach obrazu o pełnej rozdzielczości, więc ustawienia kopiowania i wklejania między obrazami o różnej rozdzielczości mogą prowadzić do nieco innych wyników, z wyjątkiem ostrości na poziomie pikseli.
Dla inżynierów elektryków ustawiony jest tutaj filtr pasmowoprzepustowy w przestrzeni falkowej, wykorzystujący okno częstości Gaussa wyśrodkowane na „promieniu centrum” z odchyleniem (odchylenie standardowe) „promienia”. Skale falkowe są analogiczne do częstotliwości harmonicznych, a każda skala falkowa określa promień szczegółów, na których ma działać.
🔗speed (sharpen ↔ diffuse)
In the following controls, positive values apply diffusion, negative values undo diffusion (i.e. sharpen) and zero does nothing.
- 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.
🔗kierunek
In the following controls, positive values cause diffusion to avoid edges (isophotes), negative values make diffusion follow gradients more closely, and zero affects both equally (isotropic).
- 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).
- 2nd order anisotropy
- The direction of diffusion of the low-frequency wavelet layers relative to the orientation of the gradient of the high-frequency (2nd order speed setting).
- 3rd order anisotropy
- The direction of diffusion of the high-frequency wavelet layers relative to the orientation of the gradient of the low-frequency (3rd order speed setting).
- 4rd order anisotropy
- The direction of diffusion of the high-frequency wavelet layers relative to the orientation of the gradient of the high-frequency (4th order speed setting).
🔗edge management
- sharpness
- Apply a gain on wavelet details, regardless of properties set above. Zero does nothing, positive values sharpen, negative values blur. This is mostly useful as an adjustment variable when blooming or blurring, to retain some sharpness while adding a glow around edges. You are not advised to use this for sharpening alone, since there is nothing to prevent halos or fringes with this setting.
- czułość na krawędzie
- Stosuje karę w stosunku do prędkości dyfuzji po wykryciu krawędzi. To wykrywanie wykorzystuje lokalną wariancję wokół każdego piksela. Zero wyłącza karę, wyższe wartości sprawiają, że kara jest silniejsza i bardziej wrażliwa na krawędzie. Zwiększ, jeśli zauważysz artefakty krawędzi, takie jak frędzle czy efekt halo (aureole).
- próg krawędzi
- Określa próg wariancji, który wpływa głównie na obszary o małej wariancji (obszary ciemne lub rozmyte albo płaskie powierzchnie). Wartości dodatnie zwiększą karę dla obszarów o małej zmienności, co jest dobre w przypadku wyostrzania lub zwiększania lokalnego kontrastu bez miażdżenia czerni. Wartości ujemne zmniejszą karę dla obszarów o niskiej zmienności, co jest dobre w przypadku odszumiania lub rozmycia z maksymalnym efektem na obszarach czarnych i rozmytych.
🔗przestrzenność dyfuzji
- próg odcinania maski luminancji
- Ta kontrolka jest przydatna, jeśli chcesz wmalować światła. W przypadku wartości większych niż 0% dyfuzja wystąpi tylko w regionach o luminancji większej niż to ustawienie. Zwróć uwagę, że w tych regionach zostanie dodany szum gaussowski, aby symulować cząsteczki i inicjować wmalowywanie.
🔗organizacja pracy
Główną trudnością tego modułu jest to, że chociaż jego moc wyjściowa może się znacznie różnić w zależności od parametrów wejściowych, parametry te nie mają intuicyjnego związku z życiem codziennym. Użytkownicy mogą być przytłoczeni, chyba że są już zaznajomieni z równaniami różniczkowymi cząstkowymi Fouriera. W tej sekcji proponujemy kilka sposobów podejścia do tego modułu bez konieczności rozumienia podstawowej teorii.
🔗zasady ogólne
Jeśli zamierzasz usunąć rozmycie obrazu za pomocą tego modułu, zawsze zaczynaj od prawidłowej korekcji wszelkich aberracji chromatycznych i szumu na obrazie, ponieważ usuwanie rozmycia może powiększyć te artefakty. Ważne jest również, aby obraz nie zawierał przyciętych czarnych pikseli. Można je skorygować za pomocą korekty poziomu czerni modułu ekspozycji.
Ponieważ działa on na oddzielnych kanałach RGB, lepiej jest zastosować ten moduł po kalibracji kolorów, aby zacząć od całkowicie neutralnego, zbalansowanego bieli obrazu wejściowego. Zwróć uwagę, że zwiększenie miejscowego kontrastu lub ostrości spowoduje również nieznaczny wzrost kontrastu kolorów i nasycenia, co zwykle jest dobre. Ponieważ wykorzystuje on regularyzację opartą na wariancji do wykrywania krawędzi, lepiej jest również umieścić ten moduł przed jakąkolwiek operacją nieliniową.
🔗praca z presetami
Dostarczone presety zostały dostrojone przez programistę i przetestowane na wielu zdjęciach do typowych celów. Najłatwiej jest po prostu zacząć od presetów, a następnie dostosować je w razie potrzeby:
-
jeśli efekt wydaje się zbyt silny, zmniejsz liczbę iteracji,
-
jeśli pojawią się artefakty na krawędziach, zwiększ czułość na krawędzie,
-
jeśli rozmycie zaczyna wpływać na prawidłowe części rozmyte (bokeh), zmniejsz promień,
-
jeśli rozmycie wydaje się prawidłowe w jasnych obszarach, ale nadmierne w ciemnych, zwiększ próg krawędzi,
-
jeśli usuwanie rozmycia przycina czarne piksele, zmniejsz korektę poziomu czerni w module naświetlania,
-
dostosuj ostrość wedle uznania.
🔗rozpoczęcie pracy z modułem
Domyślne ustawienia modułu są neutralne i nie zmieniają niczego na zdjęciu. Ideą modułu jest to, że każda kolejność wpływa na teksturę zdjęcia w inny sposób.
Zacznij od dostrojenia parametrów pierwszego stopnia (szybkości i anizotropii), aby uzyskać początkową bazę. Następnie dostosuj promień. Wpłynie to na grubsze tekstury (albo je rozmyj, albo wyostrz). Pamiętaj, że pierwszy stopień działa na niskie częstotliwości skali falkowej i podąża w kierunku równoległym lub prostopadłym do gradientu niskich częstotliwości.
Następnie zacznij dostrajać parametry drugiego stopnia (prędkość i anizotropię). Drugi stopień również działa na niskie częstotliwości skali falkowej, ale tym razem podąża w kierunku równoległym lub prostopadłym do gradientu wysokich częstotliwości, który może być kierunkiem maksymalnej ostrości lub szumu. Można to wykorzystać do zmniejszenia szumu (używając drugiego stopnia w trybie dyfuzji, z wartościami dodatnimi), gdy używałeś pierwszego stopnia w trybie wyostrzania (z wartościami ujemnymi).
Te dwa kroki można wykonać na pomniejszonym obrazie. Pamiętaj, że chociaż dołożuliśmy wszelkich starań, aby wizualny wynik algorytmu był w miarę niezmienny w skali, podgląd będzie dokładny tylko przy powiększeniu 1:1. W każdym razie wszystko, co dzieje się na poziomie pikseli (promień < 2px) nie będzie widoczne dla poziomów powiększenia niższych, niż 50%.
W tym momencie możesz chcieć dostosować czułość krawędzi, aby zadbać o wszelkie artefakty krawędzi. Teoretycznie dyfuzja w kierunku izofotowym zapewnia, że jest ona zawarta wewnątrz krawędzi, ale nie jest to wystarczające, gdy na obrazie występują narożniki i ostre wypukłe kształty.
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.
Ostatnim krokiem jest dostrojenie trzeciego i czwartego stopnia, które dbają o wysokie częstotliwości każdej skali falkowej. Przy tych ustawieniach będziesz musiał być o wiele bardziej delikatny niż w przypadku pierwszego i drugiego rzędu, ponieważ mogą one powodować bardzo szybkie zwiększanie szumu.
Trzeci stopień podąża za gradientem lub kierunkiem izofotowym warstwy niskich częstotliwości, więc może być używany do kierowania dyfuzji wysokich częstotliwości w kierunku, który jest bardziej uzasadniony w odniesieniu do rzeczywistych krawędzi (i mniej podatny na wychwytywanie szumu).
Czwarty stopień podąża za gradientem lub kierunkiem izofotowym warstwy wysokiej częstotliwości i jest bardziej podatny na wychwytywanie szumu. Dyfuzja czwartego stopnia to najlepszy sposób na redukcję szumu bez zbytniego wpływania na ostrość, zarówno jako samodzielny odszumiacz, jak i jako krok regularyzacji w procesie usuwania rozmycia.
🔗używanie wielu instancji do rekonstrukcji obrazu
Końcowe filtrowanie szumu może skorzystać na wprowadzeniu procesu dyfuzji — można to zastosować jako dodatkowy krok po module odszumiania (profilowanego).
Skorzystać na rekonstrukcji poprzez cofanie procesu dyfuzji mogą dla odmiany:
-
rozmycie wprowadzone przez filtr dolnoprzepustowy (LPF) sensora i/lub wygładzanie krawędzi wykonywane przez moduł demozaikowania,
-
statyczne rozmycie obiektywu,
-
dym/mgła,
-
lekka dyfuzja (przy użyciu zbyt dużego dyfuzora), prowadząca do równomiernego oświetlenia i braku miejscowego kontrastu.
Chociaż więcej niż jeden z tych problemów może wpływać na to samo zdjęcie w tym samym czasie, lepiej jest spróbować naprawić je osobno, używając wielu instancji modułu. Robiąc to upewnij się, że problemy są korygowane ze skali małej do małej, a odszumianie zawsze następuje jako pierwsze. Oznacza to, że twoje instancje powinny pojawić się w następującej kolejności:
-
odszumianie,
-
wzmocnienie kontrastu miejscowego,
-
usuwanie zamglenia,
-
korekcja rozmycia obiektywu
-
korekcja sensora i demozaikowania.
Rozpoczęcie pracy w grubszej skali zmniejsza prawdopodobieństwo wprowadzenia lub zwiększenia szumu podczas wykonywania rekonstrukcji w mniejszej skali. Jest to nieintuicyjne, ponieważ te procesy nie zachodzą w tej kolejności podczas tworzenia obrazu. Z tego samego powodu odszumianie powinno być zawsze wykonywane przed jakąkolwiek próbą wyostrzenia lub zwiększenia ostrości.
🔗uwagi i ostrzeżenia
Chociaż ten moduł został zaprojektowany tak, aby był niezmienny wobec skali, jego efekty można zagwarantować tylko przy 100% powiększeniu i wysokiej jakości lub pełnowymiarowym eksporcie. Wyniki przy niższych poziomach powiększenia lub wymiarach eksportu mogą, ale nie muszą odpowiadać twoim oczekiwaniom.
Ustawiając algorytm usuwania rozmycia, pamiętaj, że wiele z najlepszych zdjęć w historii fotografii zostało wykonanych obiektywami, które nie były tak ostre, jak te dostępne obecnie. Chociaż obecny trend polega na budowaniu i sprzedawaniu coraz ostrzejszych obiektywów i stosowaniu na wierzchu oprogramowania w szaleńczych ilościach wyostrzania, ta moda nie prowadzi do lepszych zdjęć i sprawia, że proces retuszu staje się bardziej nużący. Nieostrość i odrobina rozmycia mają również pewne zalety poetyckie, których chirurgicznie oczyszczone obrazy HD mogą nie oddać.
Należy zauważyć, że kontrast globalny (przy użyciu prostych krzywych tonalnych lub poziomów czerni/bieli) również wpływa na naszą percepcję ostrości, która jest zupełnie inna niż ostrość optyczna (rozdzielczość optyczna). Oczy ludzkie są wrażliwe tylko na kontrast lokalny, który może pochodzić z ostrości optycznej (np. brak dyfuzji – cienkie krawędzie) oraz ze wzmocnionych przejść tonalnych. Jeśli istnieje globalne mapowanie tonów w celu zwiększenia kontrastu, obraz będzie wyglądał ostrzej. Jeśli do zmniejszenia kontrastu zostanie użyte mapowanie tonalne, obraz będzie bardziej rozmazany. W żadnym z tych przypadków rzeczywiste krawędzie obiektów nie są w żaden sposób naruszone, a percepcyjne konsekwencje są czystą iluzją.
Częścią procesu starzenia jest utrata wzroku. Stopień ostrości, który podoba się osobom w wieku powyżej 50 lat, może nie być taki sam, jak w przypadku osób w wieku 20 lat. Warto rozważyć wyostrzenie, aby uzyskać wiarygodny wynik (odpowiadający twojej codziennej percepcji), a nie przyjemny wynik (który może dobrze wyglądać tylko dla osób o takim samym wzroku jak twój).
Wreszcie, ocena ostrości obrazów powiększonych do 1:1 (100%) lub więcej jest niemądrym zadaniem. W muzeach, na wystawach, a nawet na ekranie, publiczność patrzy na obrazy jako całość, a nie przez lupę. Co więcej, w większości praktycznych zastosowań zdjęcia rzadko przekraczają rozdzielczość 3000×2000 pikseli (około 300 DPI w formacie A4/letter), co w przypadku matryc 24 Mpx oznacza czterokrotne przeskalowanie w dół. Przy badaniu pliku 24 Mpx w 1:1, tak naprawdę patrzysz na obraz, który nigdy nie będzie istniał. Wyostrzanie na poziomie pikseli w tym kontekście jest stratą czasu i cykli procesora.