# Convolution3D

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

автор: Vlad59
версии: - 1.01 (YUY2 версия)
- beta 4 (YV12 версия с блокированным параметром временнОго влияния influence)
закачка: http://www.avisynth.org/warpenterprises/
категория: Пространственно-временные сглаживатели
требования:

- YV12 или YUY2 (в зависимости от версии) цветовой формат
- поддержка ISSE

## Описание

Convolution3D это Avisynth фильтр, который применяет 3-мерную матричную свертку (3D convolution) ко всем пикселам кадра.

## 1 - Как его использовать

`Convolution3d` (matrix=0, ythresh=3, cthresh=4, t_ythresh=3, t_cthresh=4, influence=3, debug=0)

Выбор матрицы matrix :
0 : оригинальная матрица :
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 : идея bb матрицы из всех единиц (прекрасная идея):
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
Эта матрица более полезна с анимэ или источниками плохого качества, так как она размывает немного сильнее (и значит удаляет больше шума).

ВременнОе влияние (Temporal influence) :
Это использовано главным образом, чтобы немного ускорить этот фильтр, и чтобы избежать временной информации, когда в ней нет необходимости (смена сцены, затухание, ...)
Я сначала вычисляю Предел = (Временной порог яркости t_ythresh) * (Временное влияние influence)
Для каждых 2 обрабатываемых пикселов (из-за MMX, 2 пиксела одновременно), я сначала проверяю вот это :
Если
(Abs (Y0 - Y0[Предыдущий кадр]) +
Abs (Y0 - Y0[Следующий кадр]) +
Abs (Y1 - Y1[Предыдущий кадр]) +
Abs (Y1 - Y1[Следующий кадр])) > Предел
тогда
делаем пространственную обработку (матрица только 3*3)
Иначе
Делаем пространственную и временнУю обработку (матрица 3*3*3)
Чем меньше эта величина -> тем быстрее будет фильтр, но сжимаемость должна быть хуже.
Чем больше эта величина -> тем медленнее будет фильтр, но сжимаемость должна быть выше.
Если временнОе влияние influence установлено в -1, то производится только пространственная обработка (высокая скорость).
Этот параметр - с плавающей точкой (float).

## 2 - Примеры параметров

Я сделал следующие наборы установок (preset) чтобы облегчить дело :
Convolution3d (preset="movieHQ")// Фильм высокого качества (Movie Hi Quality) (хороший DVD)
это синоним для Convolution3D (0, 3, 4, 3, 4, 2.8, 0)
Convolution3d (preset="movieLQ")// Фильм низкого качества (Movie Low Quality) (шумный DVD)
это синоним для Convolution3D (0, 6, 10, 6, 8, 2.8, 0)
Convolution3d (preset="animeHQ") // Качественый мультфильм (Anime Hi Quality) (хороший DVD)
это синоним для Convolution3D (0, 6, 12, 6, 8, 2.8, 0)
Convolution3d (preset="animeLQ")// Низкокачественный мультфильм (Anime Low Quality) (шумный DVD)
это синоним для Convolution3D (1, 8, 16, 8, 8, 2.8, 0)
Convolution3d (preset="animeBQ") // Мультфильм плохого качества (Anime Bad Quality) (???)
это синоним для Convolution3D (1, 12, 22, 8, 8, 2.8, 0)
Convolution3d (preset="vhsBQ")// захват VHS низкого качества (Bad Quality) (???)
это синоним для Convolution3D (0, 32, 128, 16, 64, 10, 0)

Я провел тест Convolution3d с ТВ захватом плохого качества и в этом случае вы должны повысить главным образом пороги цветности cthresh, t_cthresh (вызывающие некоторые призраки, но общее качество кажется будет лучше).
Я лично использую следующие параметры :

    Convolution3D (0, 32, 128, 32, 128, 10, 0)

Такие пороги Convolution3d здесь только, чтобы заботиться о краях и смене сцены. Вы можете увеличить пространственные пороги ythresh, cthresh (главным образом порог цветности cthresh), но остановитесь, как только увидите некоторое размытие краев (если вы хотите качества). С предложенными установками Вы не должны иметь этой проблемы.
Временные пороги (t_ythresh, t_cthresh) должны оставаться ниже 10, чтобы избежать призраков.
Вы должны особенно проявить внимание к этим порогам с матрицей 1, так как с этой матрицей текущий кадр имеет меньший вес, так что легче формируются призраки.

Вы можете найти некоторую информацию о том, как он работает в : http://forum.doom9.org/showthread.php?s=&threadid=29829

## 3 - Текущие ограничения или известные проблемы

- Работает только с YUV2, ПРОВЕРЕНО.
- требует процессор с поддержкой Integer SSE (не PII и K6-II), ПРОВЕРЕНО.

ПРЕДУПРЕЖДЕНИЕ : он медленный, я знаю это и пытаюсь сделать его быстрее так что не подгоняйте меня с этим, заранее спасибо.

## 4 - Благодарности

Спасибо
bb за оригинальную идею и множество тестов
iago, Koepi и TheReal за реальные тесты на кино (или захватах) полной длительности
Tom Barry, Dividee и Sh0dan за их полезную техническую информацию или идеи
Ctrl-Alt-Suppr за французское руководство
Defiler за хостинг Convolution3d
всем пользователям Convolution3D

Vlad59 (babas.lucas@laposte.net)

## 5 - Лицензия

Copyright (c) 2002 Sébastien LUCAS. All rights reserved.
babas.lucas@laposte.net

Данный файл подлежит терминам Стандартной Публичной лицензии GNU, опубликованной Free Software Foundation. Копия этой лицензии включена с дистрибутивом этой программы в файле COPYING. Если Вы не получили копии, Вы можете получить копию написав в Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

Данная программа распространяется в надежде, что она будет полезна, не БЕЗ ВСЯКОЙ ГАРАНТИИ; даже без подразумеваемой гарантии ТОВАРНОГО СОСТОЯНИЯ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Смотрите Стандартную лицензию GNU General Public License для дальнейших деталей.

`$Date: 2006/12/13 21:01:40 $
Русский перевод 23.07.2005 Fizick http://bag.hotmail.ru`