Convolution3D(int matrix, int ythresh, int cthresh, int t_ythresh, int t_cthresh, float influence, int debug) |
autor: Vlad59 |
matrix: wybór matrycy (domyślnie 0):
0: oryginalna matryca, która przydatna jest przy normalnym filmie (nie
animowanym), ponieważ zachowuje większość szczegółów:
1 2 1 2 4 2 1 2 1
2 4 1 4 8 4 2 4 1
1 2 1 2 4 2 1 2 1
1: matryca jedynkowa (świetny pomysł), która bardziej przydatna
jest w filmach animowanych lub w słabo jakościowym materiale źródłowym, ponieważ
ma mniejszy stopień zamazania (czyli usuwa większość szumu)
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
ythresh, cthresh, t_ythresh, t_cthresh: progi odszumiania,
litera t oznacza czasowe odszumianie, natomiast pozostałe argumenty dotyczą
przestrzennego odszumiania (y -> lumy, c -> chromy); domyślnie ythresh=3,
cthresh=4, t_ythresh=3, t_cthresh=4
influence: zastosowany w filtrze wpływ czasowy ma za
zadanie odrobinę poprawić szybkość filtra i ominąć używanie czasowych informacji kiedy nie są
one potrzebne (zmiana sceny, ściemnianie ...). Po pierwsze stworzyłem limit, limit = próg_czasowy_lumy * wpływ_czasowy,
czyli dla każdych z dwóch pikseli (z powodu MMX, 2 piksele w tym samym
czasie) najpierw sprawdziłem to:
if |
jeśli |
Niższe wartości spowodują szybszą pracę filtra, ale spadek kompresowalność,
natomiast wyższe wartości spowodują wolniejszą pracę filtra, ale zwiększą
kompresowalność filmu. Jeśli influence=-1 to wtedy filtr pracuje tylko przestrzennie
(z wysoką prędkość); domyślnie 3
debug: przyjmuje wartości 0 (włącza) i 1(wyłącza), i
uruchamia/nie uruchamia wewnętrzny zapis debug; domyślnie debug=0
Convolution3D jest filtrem AviSynth, który będzie stosował convolution 3D na
wszystkich pikselach klatki.
Przetestowałem Convolution3D z materiałem przechwyconym z TV o bardzo słabej jakości
i w tym przypadku możesz zwiększyć wartość parametru cthresh
(spowoduje powstanie drobnego efektu duchów, ale ogólna jakość wydaje się być lepsza).
Osobiście używam, takich ustawień: Convolution3D(0, 32, 128, 32, 128, 10, 0).
Progi Convolution3D są tylko po to by wziąć pod uwagę krawędzie i zmiany scen. Możesz zwiększyć jeden
parametr przestrzenny (w szczególności próg chromy), ale nie przesadź!
By ominąć tzw. efektu duchów powinieneś ustawić jeden z argumentów
czasowych poniżej 10. Powinieneś szczególnie wziąć pod uwagę próg przy
korzystaniu z matrycy 1, ponieważ, z tą matrycą, bieżąca klatka ma niższą
wartość, więc skutkiem ubocznym będzie tzw. efekt duchów.
Gotowe matryce:
Convolution3D(preset="movieHQ") |
# | Movie Hi Quality (dobre źródło DVD) – dobra jakość filmu |
|
||
Convolution3D(preset="movieLQ") |
# | Movie Low Quality (zaszumione źródło DVD source) – słaba jakość filmu |
|
||
Convolution3D(preset="animeHQ") |
# | Anime Hi Quality (dobre źródło DVD) – dobra jakość filmu animowanego |
|
||
Convolution3D(preset="animeLQ") |
# | Anime Low Quality (źródło DVD) - słaba jakość filmu animowanego |
|
||
Convolution3D(preset="animeBQ") |
# | Anime Bad Quality (???) – bardzo słaba jakość filmu animowanego |
|
||
Convolution3D(preset="vhsBQ") |
# | VHS capture Bad Quality
(kaseta VHS) – materiał przechwycony z kasety VHS, bardzo słaba jakość |