Skocz do zawartości

ImPP – hurtowa dekonwolucja L-R (i nie tylko)


WielkiAtraktor

Rekomendowane odpowiedzi

Imgalt (http://astropolis.pl/topic/44806-narzedzie-do-automatycznego-wyrownywania-klatek-animacji-slonecznych/) rozwiązał kwestię szybkiego wyrównywania klatek (słonecznych i innych) animacji poklatkowych. A co z obróbką? Dotychczas klikałem po prostu te 50, 100 czy 200 razy w Registaksie (wczytaj obrazek, wczytaj wavelet preset, czasem: popraw gammę/histogram, zapisz), ale dość tego. Na przyszły sezon udało mi się zmajstrować narzędzie ImPP do hurtowego ostrzenia stacków dekonwolucją Lucy-Richardson; można też (w tej właśnie kolejności) rozciągnąć histogram, dokonać korekcji gamma i finalnego wyostrzenia/rozmycia metodą unsharp masking. Wszystkie kroki (włącznie z L-R) są opcjonalne.

 

Kilka przykładów na moich zdjęciach (stack i wynik obróbki):

 

jup_stack.jpgjup_lr.jpg

 

surface_stack.jpg

surface_lr.jpg

 

wl_stack.jpg

wl_lr.jpg

 

prom_stack.jpg

prom2_lr.jpg

 

Sam ImPP jest programem uruchamianym z wiersza poleceń, ale mam też do niego interfejs graficzny (GUI), żeby można było wszystko wyklikać. Wszystko na razie opisane po angielsku (bo zbiór użytkowników jest międzynarodowy), ale w wolnej chwili przypatrzę się, jak w wxWidgets (biblioteka użyta do GUI) robi się porządnie wielojęzyczność i dodam wersję polską. Zrzuty ekranowe:

 

1) Wybór trybu pracy: albo obrabiamy zbiór obrazów z konkretnymi ustawieniami (opcja 1), albo obrabiamy pojedynczy obraz z parametrem „sigma” dekonwolucji Lucy-Richardson zmieniającym się w zadanym zakresie. Zwykle zaczniemy od opcji 2, żeby dostroić „sigmę”, a potem użyjemy jej dla opcji 1.

 

mode.png

 

2) Parametry dekonwolucji L-R. Sigma kontroluje gruboziarnistość ostrzenia (im większa, tym bardziej gruboziarniście). Liczba iteracji – zwykle wystarcza od 50 do 100. Jeśli podamy 0, dekonwolucja nie zostanie przeprowadzona. Prevent ringing ogranicza "ghosting" wokół prześwietlonych krawędzi (np. na powyższym przykładzie z prześwietloną krawędzią tarczy), na razie to funkcja eksperymentalna.

 

lr.png

 

3) Rozciągnięcie histogramu

 

histogram.png

 

Histogram rozciągać (i kompresować) można w trybie bezwględnym lub względnym. W trybie bezwzględnym podane przez użytkownika wartości min (którą chcemy rozciągnąć do czarnego) i max (którą chcemy rozciągnąć do białego) odnoszą się do czerni (wartość 0,0) i bieli (1,0). W trybie względnym odnoszą się one do najmniejszej i największej wartości jasności obecnych w obrazie wejściowym. Najlepiej wyjaśnić to na rysunku.

 

Rozważmy obraz z histogramem jak poniżej:

 

hist.png

 

Gdy w trybie bezwzględnym (absolute) podamy min = 0,15 i max = 0,8, uzyskamy takie rozciągnięcie (bez zważania na wartości wejściowego histogramu):

 

hist_abs.png

 

Min i max nie muszą być z przedziału [0; 1]. Histogram można równie dobrze skompresować i/lub przyciąć:

 

hist_clip.png

 

Powinno być jasne, że wybranie trybu bezwzględnego (absolute) i podanie min = 0, max = 1 oznacza: histogram bez zmian.

 

Zwykle tryb względny (relative) będzie bardziej przydatny. Tutaj min i max podane są względem najciemniejszych i najjaśniejszych pikseli wejściowych. Typowa operacja rozciągnięcia najciemniejszych do czerni, a najjaśniejszych do bieli sprowadza się do ustawienia min = 0 i max = 1:

 

hist_rel.png

 

Podobnie jak w trybie bezwględnym, także i tu min i max mogą być mniejsze od 0 lub większe od 1. Można też podać max < min, nastąpi wtedy odwrócenie histogramu (obraz wynikowy będzie negatywem), np.:

 

hist_inv.png

 

4) Wyostrzenie/rozmycie przez unsharp masking

 

unsharp.png

 

„Sigma”, podobnie jak dla L-R, określa gruboziarnistość procesu. „Amount” określa natężenie: wartości > 1,0 wyostrzają, < 1,0 rozmywają, wartość 1,0 oznacza: bez zmian.

 

5) Postęp przetwarzania

 

processing.png

 

Postęp uaktualniany jest co sekundę. Na koniec w oknie pojawi się komunikat FINISHED PROCESSING. Wcześniejsze zamknięcie tego okna (lub kliknięcie "< Back") przerwie przetwarzanie.

 

 

 

 

Więcej funkcji na razie brak, jako że do animacji H-alfa nic innego nie potrzebowałem, acz dołożenia czegoś nie wykluczam.

 

Program jest darmowy na licencji GNU GPL w wersji 3 (lub późniejszej). Wersja dla Windows (impp.zip, uruchomić impp-gui.exe) oraz kod źródłowy do pobrania pod adresem:

 

http://stargazerslounge.com/blog/1400/entry-1779-impp-image-post-processor/

 

Dodatkowe informacje w pliku README.pl.

 

Do zbudowania ze źródeł (powinno się dać dla większości platform) potrzebny jest kompilator GCC/G++ lub MS C++ (ew. inny), biblioteki Boost 1.54 lub nowsze i (tylko dla GUI) wxWidgets 3.0.

Edytowane przez WielkiAtraktor
  • Lubię 6
Odnośnik do komentarza
Udostępnij na innych stronach

Wszystko na razie opisane po angielsku (bo zbiór użytkowników jest międzynarodowy), ale w wolnej chwili przypatrzę się, jak w wxWidgets (biblioteka użyta do GUI) robi się porządnie wielojęzyczność i dodam wersję polską.

No wiesz :P było pierwej rzucić go na rok na polski rynek a jak byśmy już zostali liderami światowymi to byś łaskawie udostępnił go reszcie ^_^

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.