# TBilateral

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

Автор: tritical
Версия: 0.9.10
Загрузка: http://bengal.missouri.edu/~kes25c/
Категория: Пространственные сглаживатели
Требования:

- YV12 & YUY2 цветовой формат

лицензия: GPL

## Описание

TBilateral это пространственный сглаживающий фильтр, который реализует алгоритм двунаправленной (bilateral) фильтрации. Он выполняет хорошее сглаживание, в то же время сохраняя структуру изображения. Он теперь поддерживает YV12 и YUY2 цветовые форматы и имеет пользовательский графический интерфейс (gui) с просмотром для помощи в настройке. (прим. перев. - разрабатывался для мультфильмов анимэ.)

### Синтаксис

`TBilateral` (clip, int "diameterL", int "diameterC", float "sDevL", float "sDevC", float "iDevL", float "iDevC", float "csL", float "csC", bool "d2", bool "chroma", bool "gui", PClip "ppClip", int "kernS", int "kernI", int "resType")

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

diameterL/diameterC - (пространственные диаметры)

Это устанавливает величину диаметра окна фильтрации. Большие величины означают, что больше пикселов будет включено в усреднение, но также являются более медленными. Должны быть нечетными числами больше чем 1.
diameterL используется для яркости (luma), а diameterC - для цветности (chroma), если она обрабатывается. Это должно быть меньше чем ширина и высота видео.

по умолчанию - diameterL = 5 (int)
diameterL = 5 (int)

sDevL/sDevC - (пространственные (зональные) отклонения (deviations))

Они устанавливают пространственные отклонения. Чем больше sDev is, тем меньший эффект будет иметь расстояние на взвешивание пикселов в усреднении. То есть, если Вы увеличиваете sDev, дальние пикселы будут иметь увеличивающийся вес. sDevL - для яркости, sDevC - для цветности. Они должны быть больше 0. Чтобы лучше понять эти настройки, попробуйте установить iDevL/iDevC в высокие величины, и затем постепенно увеличивайте sDevL/sDevC от 0 вверх, сохраняя отношение iDevL/iDevC постоянным. Увеличение этих настроек увеличит силу сглаживания.

по умолчанию - sDevL = 1.4 (float)
sDevC = 1.4 (float)

iDevL/iDevC - (отклонения интенсивности пикселов (диапазон))

Они устанавливают отклонения интенсивности пикселов (или отклонения цвета в случае цветовых плоскостей). Чем больше величина iDev, тем меньший эффект будет иметь разница пикселов во взвешивании пикселов при усреднении. То есть, если Вы увеливаете iDev, пикселы, которые очень отличаются от текущего пиксела будут иметь увеличивающийся вес. iDevL - для яркости, iDevC - для цветности. Они должны быть больше 0. Попробуйте увеличивать эти настройки, сохраняя отношение sDev/sDevC постоянным, чтобы получить идею, что они делают. Увеличение этих настроек увеличит силу сглаживания.

по умолчанию - iDevL = 7.0 (float)
iDevC = 7.0 (float)

csL/csC - (весовые множители центрального пиксела)

Эти величины умножаются на величину пространственного веса центрального пиксела. Величина 1 ничего не делает, < 1 означает, что центральный пиксел будет иметь вес меньше чем нормальный, > 1 означает, что центральный пиксел будет иметь вес больше нормального, 0 дает центральному пикселу нулевой вес. Они должны быть не меньше 0. Установка csL/csC в 0 даст Вам понижение шума как в SUSAN.

по умолчанию - csL = 1.0 (float)
csC = 1.0 (float)

d2 - (вторая производная или первая производная)

Эта настройка вынуждает TBilateral использовать вторую производную вместо первой при вычислении интенсивностей. Использование d2 должно дать лучшие результаты на плавных градиентах или на любом том, что подходит к кусочно-линейной модели. Установка d2 в false даст лучшие результаты на изображениях, которые имеют однородно окрашенные области с резкими краями (aвсе что подходит к кусочно-константной модели). Действительная разница между этими двумя типами обычно невелика для большинства источников. Эффект довольно слабый.

по умолчанию - false (bool)

chroma - (разрешить обработку цветности)

Если установлено равной true, то обрабатываются и плоскости цветности. Если установлено в false, то плоскости цветности просто копируются из источнмка в выходной кадр.

по умолчанию - true (bool)

gui - (графический интерфейс пользователя)

Если установлено в true, то этот экземпляр TBilateral стартует с графическим интерфейсом пользователя ГИП(gui). Только один экземпляр TBilateral на скрипт может иметь графический интерфейс. Он позволяет Вам изменять величины diameterL/diameterC/sDevL/sDevC/iDevL/iDevC/csL/csC/d2/chroma/kernS/kernI/resType (практически все настройки). Интерфейс также имеет превью обновляемое в реальном времени, которое позволяет Вам видеть эффект изменений, кода вы их делаете.

Графический интерфейс имеет некоторые ограничения однако. Величины diameterL/diameterC сейчас ограничены максимум до 21 при использовании графического интерфейса. Также, ползунок Dev имеет максимальные пределы, связанные с тем чтобы позволить использовать ползуны для настройки. Однако, эти максимумы достаточно высоки, чтобы позволить даже очень сильную фильтрацию.

После того как Вы нашли нужные настройки, Вы можете закрыть интерфейс, нажав кнопку "OK". Внизу закладки "advanced" есть стока, которую вы можете скопировать и вставить в Ваш скрипт avs, чтобы продублировать текущие настройки. (ЗАМЕЧАНИЕ: параметр ppClip не устанавливается в этой строке.)

по умолчанию - false (bool)

ppClip - (пред-обработанный клип)

Указывает предварительно отфильтрованный клип, откуда TBilateral возьмет значения пикселов, когда делает вычисления разности интенсивности. Общая рекомендация для пред-обработки - Гауссов блюр (размытие) со стандартным отклонением равным используемым настройкам sDev. Использование предварительно отфильтрованного клипа должно помочь в удалении импульсного шума (то есть окружения с очень большими разницами пикселов), которые стандартная двунаправленная фильтрация не затронет. Это имеет тенденцию иногда производить артефакты, особенно вокруг очень тонких деталей. Другая рекомендация для пред-обработки - это центрально-взвешенная медиана или адаптивная медиана.

по умолчанию - NULL (PClip)

kernS/kernI - (пространственное ядро и ядро интенсивности)

Они указывают, какое ядро используется для зональных (kernS) весов и диапазонных (kernI) весов. Возможные выборы:

0 - Andrews' wave (волна Андрея)
1 - El Fallah Ford
2 - Gaussian (функция Гаусса)
3 - Huber’s mini-max (мини-макс)
4 - Lorentzian (функция Лоренца)
5 - Tukey bi-weight (двухвесовая)
6 - Linear descent (линейный спад)
7 - Cosine (косинус)
8 - Flat (плоский)
9 - Inverse (обратный)

Смотри следующую статью с описанием всех ядер и их свойств:

http://dsp7.ee.uct.ac.za/~jfrancis/publicationsDir/PRASA2003.pdf

Gaussian (опция 2) есть ядро, используемое в (первом предложенным) двунаправленном фильтре по умолчанию.

по умолчанию - 2 (kernS) (int)
2 (kernI)

resType -

Это указывает, как веса и величины пикселов комбинируются для получения конечного результата. Возможные опции:

0 - Mean (взвешенное усреднение)
1 - Median (взвешенная медиана)
2 - CW-Median (взвешенная медиана + дополнительный вес центрального пиксела)

Опция 0 (взвешенное среднее) является типом, используемом в двунаправленном фильтре по умолчанию.

по умолчанию - 0 (int)

## Список изменений

06/23/2005 v0.9.10
+ некоторая оптимизация, грубо 15-20% увеличение скорости
06/21/2005 v0.9.9
+ Добавил Inverse ядро (то, что называлось "Linear Descent" в v0.9.8, было, фактически, "Inverse")
- Исправил ошибку в gui программе, которая устанавливала максимумы ползунов sDevL/sDevC
06/20/2005 v0.9.8
+ Добавил kernS, kernI, и resType
+ Переделал gui интерфейс
- Много косметических исправлений gui (для некоторых опций не было немедленного обновления при изменении)
05/24/2005
+ Добавил параметр ppClip и обработку
- Изменил некоторые величины по умолчанию
- Исправил некоторые проблемы синхро/выхода нитей с кодом gui
05/02/2005 v0.9.6
+ Добавил gui с просмотром
+ Убрал все ограничения yuy2 (d2)
- Исправил: настройки iDev и sDev переключались при вычислении таблиц весов (doh!)
06/16/2004 v0.9.5
- Исправил: iDevC имело i вместо f внутри списка параметров функции и принимало только целые величины.
06/16/2004 v0.9.4
- Исправил ошибки округления с d2 = true, которые могли вести к изменению +-2 в конечных значениях пикселов
- Изменение, необходимое для этого исправления ошибки округления, также ускорило обработку d2 = true на 10-15%
06/15/2004 v0.9.3
- Добавил d2 и centerScale/centerScaleC параметры.
- Развернул y циклы, нет реального ускорения, но это сделало код огромным...
06/12/2004 v0.9.2
- Разверну x циклы в YV12 и только в яркости версии для YUY2. Легкое ускорение.
06/11/2004 v0.9.1
- Исправил проблему с граничными пикселами на краях картинки, дающими некорректные пространственные веса.
06/11/2004 v0.9.0
- Первоначальный выпуск

`$English Date: 2005/07/10 16:11:01 $
Русский перевод 09.08.2005 Fizick http://bag.hotmail.ru`