STMedianFilter это (слегка скомпенсированный по движению) пространственно/временной медианный фильтр.
Он довольно тонкозернистый, используя только соседние пикселы в пространстве и во времени, так что он смотрит на смежные 26 позиций, чтобы фильтровать каждую позицию. Он теперь (в последних версиях) фильтрует как яркость, так и цветность, но фильтрация цветности несколько ограничена,как описано ниже.
Чтобы использовать его, просто:
1) Поместите STMedianFilter.dll в какой-либо каталог. Вы можете взять его с адреса www.trbarry.com/STMedianFilter.zip
2) В Вашем скрипт-файле Avisynth, используйте команды наподобие
LoadPlugin("F:\STMedianFilter\STMedianFilter.dll") Avisource("D:\wherever\myfile.avi") STMedianFilter(S_FilterThreshHold, S_EdgeThreshHold, T_FilterThreshHold, T_MotionThreshHold)
Конечно, замените имена файлов и каталогов на Ваши, и поставьте целые величины для параметров. Допустимые величины каждого от 0 до 255.
(Префиксы) S и T (в названиях параметров) выше означают пространственный (spatial) и временной (temporal), соответственно.
Хорошая стартовая точка для величин параметров может быть
STMedianFilter(8,15,4,7)
Большие величины дают большую фильтрацию, но и больше артефактов.
S_FilterThreshHold - не фильтровать пространственно пиксел, если бы это изменило его более чем на этот порог. Большие величины могут вызвать потерю тонких деталей, но это не слишком чувствительно.
S_EdgeThreshHold - не фильтровать пространственно пиксел, если на крае, если величины изменяются более чем на этот порог. Он кажется довольно терпимым, так что может быть значительно увеличен при желании.
T_FilterThreshHold - не фильтровать во времеми (темпорально) пиксел, если бы это изменило его более чем на этот порог. Большие величины могут вызвать призраки (шлейфы, ghosting). Не устанавливайте выше 5-10, чтобы избежать призраков.
T_MotionThreshHold - не фильтровать во времени (темпорально) пиксел, если величины нескомпенсированного движения изменяются более чем на этот порог. Не устанавливайте выше 10, чтобы избежать призраков.
(все параметры неименованные - прим. переводчика)
Если я понимаю это правильно, простой медианный фильтр это просто шаг обрезки (clipping), где величина устанавливается, чтобы не выйти за пределы прошлых высокой и низкой его соседей.
Например, если вы имеете 3 пиксела в строке, которые имеют величины <5,8,7>, то вы могли бы обрезать центральную величину до не выходящей из пределов снизу 5 или сверху 7, то есть вы установили бы ее равной 7.
Теперь представьте что вы имели бы небольшой видео экран 3x3, подобно поверхности кубика Рубика. Представьте предыдущий кадр был бы нижним слоем кубика, текущий кадр был бы средним слоем, и следующий кадр был бы верхним.
Тогда текущий центральный пиксел был бы в центре кубика Рубика и было бы 13 путей (способов), как вы могли бы провести линию через него и пару ближайших соседей.
Что я делал, это сравнивал каждую из этих пар соседей, чтобы увидеть, какая пара наиболее согласуется по величине. Я использовал эту пару, чтобы обрезать (clip) величину центрально пиксела.
Я также обрезал (clipped) величину пиксела только, если как:
1) это не изменило бы величину пиксела более чем на величину параметра FilterThreshold, так и
2) количество 'нескомпенсированного движения' (согласие величины с соседями) было меньше чем велина параметра MotionThreshHold.
$English Date: 2004/08/17 20:31:19 $
Русский перевод и добавления 11.06.05 Fizick http://bag.hotmail.ru