Zdjęcia na Javie: NDNoise 0.4

Podręczne multiplatformowe narzędzia napisane w Javie są fajne, bo są multiplatformowe i podręczne. Pomimo tego, że termin „podręczne” jest często synonimem chałupniczej prostoty, to niekiedy takie programy mogą nas mile zaskoczyć. Przykładem na to jest NDNoise, który pomimo stosunkowo prostego interfejsu i zawężonej funkcjonalności, wykonuje powierzone mu zadania na przyzwoitym poziomie. Co to za zadanie? Likwidowanie cyfrowego szumu z naszych kadrów (nie mylić z analogowym ziarnem). A czemu zawdzięczamy przyzwoity poziom? To wynik wykorzystania w programie algorytmu NeuQuant.

NDNoise 0.4
NeuQuant to algorytm wykorzystujący sieć neuronową Kohonena – już samo to budzi szacunek, choć to rozwiązanie stosunkowo popularne w przeróżnych programach graficznych. NDNoise robi z niego (algorytmu) dobry użytek, bowiem efekty redukcji szumu są więcej niż zadowalające. Cały ambaras bowiem w tym, by tak wygładzić zdjęcie, by nie zredukować jego szczegółowości. Do tego celu służą suwaki w programie, którymi określimy siłę odszumiania, wyostrzenia, wygładzania krawędzi i przywracania naturalności zdjęciu (likwidowanie efektu „plastiku”). Gdyby i to było mało, do dyspozycji mamy kolejny zestaw suwaków w trybie Expert. Doprecyzujemy nimi separację kolorów, ich dokładność oraz promień tych rozważań.

Ale jak zacząć pracę z NDNoise? To proste. NDNoise otwiera zdjęcia w formacie png, jpg, gif i z oczywistych względów to format png jest preferowany (bezstratna kompresja). Efekty swojej pracy zapisuje podobnie – ze wskazaniem na format png. Musimy zatem otworzyć pożądane zdjęcie i określić siłę odszumiania. Przyciskiem Calc sprawdzamy, czy to jest to, czego oczekujemy (uwaga – to może potrwać, NDNoise niestety używa jedynie jednego rdzenia naszego CPU). Wynik możemy doprecyzować suwakami od wygładzania i wyostrzania, jak też usuwania zbyt podkreślonej jednolitości płaszczyzn. W trakcie tych poprawek NDNoise umożliwia podgląd pliku oryginalnego, przefiltrowanego, jak też różnic pomiędzy nimi oraz naprzemiennego wyświetlania oryginału i efektu pracy algorytmu. Po wszystkim wynik zapisujemy.

Po lewej oryginał, po prawej wynik działania NDNoise

Programy pobieramy w formacie archiwum zip ze strony projektu. Po jego rozpakowaniu (do np. ~/Programy), udajemy się tam, nadajemy prawa do wykonywania dla skryptu runUnixLinuxOsX.sh i uruchamiamy go (dwuklikiem).

Uwaga techniczna. Tak naprawdę to skrypt uruchamiający program jest nieco niedopracowany, poza tym – nie na każdej dystrybucji NDNoise może wyglądać przyzwoicie (temat GUI Javy). Dlatego polecane przeze mnie rozwiązanie, to edycja wspomnianego pliku i wklejenie tam:

#!/bin/sh
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd -Dswing.aatext=true -Dswing.crossplatformlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel'
java -Xmx250m -jar NDNoise.jar