# STMedianFilter

## Общее описание

автор: Tom Barry
версия: 0.1.0.3
загрузка: http://mywebpages.comcast.net/trbarry/downloads.htm
категория: Пространственно-временные сглаживатели
требования:

- YV12 & YUY2 цветовое пространство
- поддержка SSEMMX (=ISSE)

## Описание

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.

## История изменений

- 2004/08/19 v.0.1.0.3 Выпущена Fizick 2005/01/30
  Исправлена ошибка с радиусом пространственного фильтра для YV12
  Спасибо Fizick за это. Теперь также опять на www.trbarry.com
- 2004/08/10 V 0.1.0.2 от Fizick - не публичная
  Исправлена одна главная ошибка (для YUY2 и YV12 режимов):
  во всех предыдущих версиях светлые пикселы не фильтровались,
  и также не работали как S_EdgeThreshHold, так и T_MotionThreshHold.
- 2003/06/22 V 0.1.0.1 Исправлена ошибка влияющая только на YV12
- 2003/01/22 V 0.1.0.0 Снова удалена фильтрация цветности. Добавлена поддержка YV12. Использован Pluginit2
  Также удалены Горизонтальные параметры, добавил их к пространственным.
  Надеюсь исправлено розовое окрашивание.
- 2002/08/03 V 0.0.3.0 Добавлена некоторая фильтрация цветности (по вертикали - прим. переводчика)
- 2002/08/03 V 0.0.2.0 Ошибки, Расщеплены пространственные, временные, горизональные параметры
- 2002/08/02 V 0.0.1.0 Начальный тестовый выпуск

`$English Date: 2004/08/17 20:31:19 $
Русский перевод и добавления 11.06.05 Fizick http://bag.hotmail.ru`