### [YV12] lub [YUY2] oraz [wspomaganie ISSE]

# Convolution3D

## Convolution3D(int matrix, int ythresh, int cthresh, int t_ythresh, int t_cthresh, float influence, int debug) | autor: Vlad59 wersja: 1.01 (YUY2) beta 4 (YV12) download: download

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 (Abs (Y0 - Y0[poprzednia klatka]) + Abs (Y0 - Y0[następna klatka]) + Abs (Y1 - Y1[poprzednia klatka]) + Abs (Y1 - Y1[następna klatka])) > limit then pracuj_przestrzennie (tylko z matrycą 3*3) else pracuj_czasowo-przestrzennie (z matrycą 3*3*3) | jeśli bezwzględna wartość z wyrażenia Y0 - Y0[poprzednia klatka] dodać bezwzględną wartość z wyrażenia Y0 - Y0[następna klatka] dodać bezwzględną wartość z wyrażenia Y1 - Y1[poprzednia klatka] dodać bezwzględną wartość z wyrażenia Y1 - Y1[następna klatka] jest większe od limit wtedy pracuj_przestrzennie z matrycą 3*3 jesli nie to pracuj_czasowo-przestrzennie z matrycą 3*3*3

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 tak samo jak: Convolution3D(0, 3, 4, 3, 4, 2.8, 0)
Convolution3D(preset="movieLQ") | # | Movie Low Quality (zaszumione źródło DVD source) – słaba jakość filmu tak samo jak: Convolution3D(0, 6, 10, 6, 8, 2.8, 0)
Convolution3D(preset="animeHQ") | # | Anime Hi Quality (dobre źródło DVD) – dobra jakość filmu animowanego tak samo jak: Convolution3D(0, 6, 12, 6, 8, 2.8, 0)
Convolution3D(preset="animeLQ") | # | Anime Low Quality (źródło DVD) - słaba jakość filmu animowanego tak samo jak: Convolution3D(1, 8, 16, 8, 8, 2.8, 0)
Convolution3D(preset="animeBQ") | # | Anime Bad Quality (???) – bardzo słaba jakość filmu animowanego tak samo jak: Convolution3D(1, 12, 22, 8, 8, 2.8, 0)
Convolution3D(preset="vhsBQ") | # | VHS capture Bad Quality (kaseta VHS) – materiał przechwycony z kasety VHS, bardzo słaba jakość tak samo jak: Convolution3D(0, 32, 128, 16, 64, 10, 0)

### translated by Slim