[YV12][YUY2][wspomaganie SSEMMX]

STMedianFilter

STMedianFilter(int S_FilterThreshHold, int S_EdgeThreshHold, int T_FilterThreshHold, int T_MotionThreshHold)

autor: Tom Barry
wersja: 0.1.0.0
download: download


S_FilterThreshHold: nie przestrzenne filtrowanie piksela; sugerowana wartość 8

S_EdgeThreshHold: nie przestrzenne filtrowanie piksela jeśli na krawędzi wartości zmieniają się bardziej niż na pikselu; sugerowana wartość 15

T_FilterThreshHold: nie czasowe filtrowanie piksela. Wartości powyżej 10 i poniżej 5 powodują tzw. efekt duchów; sugerowana wartość 4

T_MotionThreshHold: nie czasowe filtrowanie piksela z uwzględnieniem ruchu. Wartości powyżej 10 i poniżej 5 powodują tzw. efekt duchów; sugerowana wartość 7


Jest to prosty średnio-zaawansowany filtr, który jest właściwie wycinkiem kodu, w którym wartość jest ustawiana by nie powiększyć pikseli znajdujących się powyżej i poniżej bieżącego piksela. Na przykład, jeśli miałeś trzy piksele z rzędu, które miały wartości <5,8,7> mogłeś usunąć centralny piksel, by nie wybrano niższej wartości niż 5 ani wyższej niż 7, więc przyjęto wartość 7. 
Teraz wyobraź sobie, że masz mały ekran video 3x3 piksele, taki jak jedna powierzchnia kostki Rubik'u. Wyobraź sobie poprzednią klatkę, która jest na dolnej warstwie, bieżąca klatkę, która jest na środkowej warstwie oraz następną klatkę, która jest na górnej warstwie kostki. Czyli bieżący, centralny piksel będzie w środku kostki Rubik'u i jest teraz 13 sposobów by nakreślić linie przechodzącą przez nią i przez dwie pobliskie klatki (poprzednia i następna). Co zrobiłem by porównać każdą z tamtych pary klatek, by zobaczyć która para była najbardziej zgadzającą się wartością. Ustaliłem, żeby para pikseli usuwała wartość środkowego piksela. Również usunąłem wartość piksela jeśli obydwa:
 - nie zmienią wartości piksela więcej niż wartość FilterThreshold
 - suma ich wartości była niższa niż wartość MotionThreshHold


translated by Slim