# DctFilter

## Общая информация

Автор: Tom Barry
Версия: 0.0.1.4
Загрузка: http://mywebpages.comcast.net/trbarry/downloads.htm
Категория: Misc Plugins
Требования:

- YV12 & YUY2 цветовой формат и размер экрана кратный 16x16
- поддержка SSEMMX

## Описание

DctFilter это экспериментальный фильтр, который, для каждого блока 8x8, будет делать Дискретное косинусное преобразование (DCT), уменьшать значения выбранных частот, и затем обращать процесс с обратным дискретным косинусным преобразованием (IDCT).

### Использование

В Вашем файле Avisynth скрипта используйте примерно такие команды

    Avisource("D:\wherever\myfile.avi")
    DctFilter(1,1,1,1,1,1,0.5,0)

### Параметры

Имеется 8 позиционных параметров с плавающей точкой, все из них должны быть указаны в диапазоне (0.0 <= x <= 1.0). Они соответствуют масштабным факторам для 8 строк и столбцов блоков DCT размера 8x8. Самый левый параметр соответствует верхней строчке, левому столбцу. Это есть компонент нулевой частоты (DC) преобразования, он должен всегда быть оставлен 1.0.

В приведенном выше примере самые высокочастотные компоненты в каждой строке и столбце будут занулены, в то время как вторые сверху по частоте будут уполовинены.

Параметры строки и столбца перемножаются, чтобы получить масштабный фактор для каждой из 64 величин в блоке. Так что, если верхняя левая величина была V[0,0], то в указанном примере мы умножим стоку 6, столбец 6 (V[6,6]) на .5*.5 = .25.

Отметьте, что хотя они выглядят как параметры с плавающей точкой, реально они имеют только 3 бит точность, так что в действительности используются только величины 0, 1/8, 1/4, 3/8 ... 1.0. Но Вы можете указать любую величину, и она будет округлена к ближайшей из этих.

### DctFilterD - новый с версии 0.0.1.4

Вместо этого, вы можете использовать DctFilterD(DiagCt). Это работает подобно указанному выше, но будет занулять заданное параметром DiagCt число нижних правых диагоналей DCT, оставляя другие величины неизменными. В результирующей матрице 8x8 DCT есть 15 возможных диагоналей. (представьте шахматную доску). Параметр DiagCt должен быть целым 1-14, говорящим, как много из этих диагоналей должны быть занулены, начиная с нижнего правого угла.

### Комментарии

Эта новая функция DctFilterD(DiagCt) работает на диагоналях. Она проще и либо зануляет диагонали, либо оставляет их неизменными.

Так что если вы укажете:

    DctFilterD(4)

тогда 4 диагонали в нижнем правом углу результата DCT будут установлены в 0.

Я не тестировал это много, но, подобно моим результатам с задаваемыми таблицами квантования, оказывается, что если Вы установите DiagCt очень большим, вы начнете получать краевой шум, что-то подобно волнам (ringing).

`$English Date: 2004/08/13 21:57:25 $
Русский перевод 19.05.2006 Fizick avisynth.org.ru`