# TBilateral

## Přehled

autor: tritical
verze: 0.9.11
stáhnout: http://bengal.missouri.edu/~kes25c/, http://www.avisynth.org/warpenterprises/
kategorie: Prostorové vyhlazovače
požadavky:

- YV12 & YUY2 Barevné prostředí

licence: GPL

## Popis

TBilateral je prostorový vyhlazovací filtr, který používá dvousměrový (bilateral) filtrační algoritmus. Dělá hezké vyhlazování a přitom zachovává strukturu obrazu. V současnosti podporuje barevná prostředí YV12 a YUY2
a má gui s náhledem pro pomoc při nastavování.

### Syntaxe

`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")

### PARAMETRY

diameterL/diameterC - (prostorové průměry)

Toto nastavuje velikost průměru filtračního okna. Větší hodnoty znamenají, že více pixelů bude zahrnuto do průměru, ale jsou také pomalejší. Musí být jen liché číslo větší než 1.
diameterL je pro jas (luma) a diameterC je pro barevnost (chroma) , pokud je zpracovávána. Toto musí být menší než šířka videa a menší než výška videa.

výchozí - diameterL = 5 (int)
diameterL = 5 (int)

sDevL/sDevC - (prostorová (domain) odchylka)

Toto nastavuje prostorové odchylky. Čím je sDev větší, tím menší vliv bude mít vzdálenost na vážení pixelů v průměru. To je, jak zvýšíte sDev, vzdálené pixely budou mít větší váhu. sDevL je pro jas a sDevC je pro barevnost. Musí být větší než 0. Aby jste lépe pochopily tato nastavení, zkuste nastavit iDevL/iDevC na vysoké hodnoty, a pak postupně zvětšujte sDevL/sDevC od 0 nahoru a přitom držte iDevL/iDevC konstantní. Zvyšování těchto nastavení zvýší sílu vyhlazování.

výchozí - sDevL = 1.4 (float)
sDevC = 1.4 (float)

iDevL/iDevC - (odchylky intenzity pixelů (rozsah))

Tyto nastavují odchylky intenzity pixelu (nebo odchylky barvy v případě barevnostních ploch). Čím větší je iDev , tím menší vliv bude mít rozdíl pixelu při vážení pixelů v průměru. To je, když zvyšujete iDev, pixely které se velmi liší od aktuálního pixelu budou mít větší váhu. iDevL je pro jas a iDevC je pro barevnost. Musí být větší než 0. Zkuste zvyšovat toto nastavení a při tom držet sDev/sDevC konstantní, aby jste získali lepší představu co dělají. Zvyšování těchto nastavení zvýší sílu vyhlazení.

výchozí - iDevL = 7.0 (float)
iDevC = 7.0 (float)

csL/csC - (součinitele váhy středového pixelu)

Tyto hodnoty jsou násobeny prostorovou váženou hodnotou středových pixelů. Hodnota 1 nedělá nic, < 1 znamená, že středový pixel bude mít menší váhu než normálně, > 1 znamená, že středový pixel bude mít větší váhu než normálně, 0 nedává středovému pixelu žádnou váhu. Musí být nejméně 0. Nastavení csL/csC to 0 vám dá odšumění jako v SUSAN.

výchozí - csL = 1.0 (float)
csC = 1.0 (float)

d2 - (druhá odvozenina nebo první odvozenina)

Toto nastavení způsobí, že TBilateral použije druhou odvozeninu místo první, když provádí výpočty intenzity. Použití d2 by mělo dát lepší výsledky v hladších gradientech nebo čemkoli co vypadá jako kusově-lineární model. Nastavení d2 na false dá lepší výsledky v obrazech, které mají jednolitě (uniformě) vybarvené oblasti s ostrými hranami (cokoli co vypadá jako kusově-konstantní model).
Skutečný rozdíl mezi těmito dvěma není pro většinu zdrojů obvykle velký. Efekt je spíše mírný.

výchozí - false (bool)

chroma - (zapíná zpracování barevnosti)

Je-li nastaven na true, jsou zpracovány plochy barevnosti. Je-li nastaven na false, tak jsou plochy barevnosti ze zdroje jednoduše zkopírovány do výstupního snímku.

výchozí - true (bool)

gui - (gui rozhraní)

Když je nastaven na true, tak se tato instance TBilateral spustí s gui. Jen jedna instance TBilateral na skript může mít gui. Gui vám umožní změnit hodnoty
diameterL/diameterC/sDevL/sDevC/iDevL/iDevC/csL/csC/d2/chroma/kernS/kernI/resType (v podstatě veškeré nastavení). Gui má také náhled aktualizovaný v reálném čase, který vám umožní prohlédnout si efekt změn, které jste udělali.

Gui má však několik omezení. Hodnoty diameterL/diameterC jsou v současnosti omezeny na maximálně 21 při použití gui rozhraní. Také posuvníky Dev mají maximální limity vztažené k tomu, aby umožnili použít posuvníky pro jejich nastavení. Nicméně, tyto maxima by měly být dostatečně vysoká pro umožnění velmi silného filtrování.

Po nalezení vašeho nastavení můžete zavřít gui kliknutím na tlačítko "OK". Ve spodní části dialogu Advance je řetězec, který můžete zkopírovat a vložit do vašeho avs skriptu k duplikování aktuálního nastavení. (POZNÁMKA: parametr ppClip není nastaven v tomto řetězci)

výchozí - false (bool)

ppClip - (před-zpracovaný klip)

Zadává před-filtrovaný klip pro TBilateral, aby z něj bral hodnoty pixelu při provádění výpočtů jasových rozdílů. Obecné doporučení pro před-zpracování (pre-processing) je
gausovo rozmazání (blur) se standardní odchylkou shodnou jako při použití nastavení sDev. Použití předfiltrovaného klipu by mělo pomoci odstranit impulsní šum (t.j. okolí s velmi
velkými rozdíly pixelů), kterého se standardní bilaterální filtrování nedotkne. To občas směřuje k tvorbě artefaktů, zvlášť kolem velmi pěkných detailů. Další doporučení
pro před-zpracování je středově-vážený medián nebo adaptivní medián.

výchozí - NULL (PClip)

kernS/kernI - (zóna (prostorová) a rozsah (intenzity) jader)

Toto zadává jaké jádro (kernel) je použito pro zónové - domain (kernS) váhy a rozsahové (kernI) váhy. Možné volby jsou:

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

Viz. následující pro popis všech těchto jader a jejich vlastností:

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

Gaussian (možnost 2) je jádro použité bilaterálním filtrem jako výchozí (nejprve nabídnutým).

výchozí - 2 (kernS) (int)
2 (kernI)

resType -

Toto zadává jak jsou váhy a hodnoty pixelu kombinovány pro získání finálního výsledku. Možné hodnoty:

0 - Mean (vážený průměr)
1 - Median (vážený median)
2 - CW-Median (vážený median + doplňková váha středového pixelu)
3 - MLR (vícenásobná lineární regrese) (best fit plane)

Možnost 0 (vážený průměr) je typ použitý bilaterálním filtrem jako výchozí.

výchozí - 0 (int)

## Seznam změn

05/16/2006 v0.9.11
+ added resType 3, MLR (multiple linear regression)
+ some internal changes and code cleanup
- fixed a problem with the sse2 yuy2 packed to planar and planar to packed conversions that could sometimes (very rarely) cause crashes with yuy2 input
- fixed IDC_IKERND combobox being set to dropdown instead of dropdownlist

06/23/2005 v0.9.10
+ some optimizations, roughly 15-20% speed increase
06/21/2005 v0.9.9
+ Added Inverse kernel (what was called "Linear Descent" in v0.9.8 was, in fact, "Inverse")
- Fixed a bug in the gui routine that set the sDevL/sDevC slider maximums
06/20/2005 v0.9.8
+ Added kernS, kernI, and resType
+ Redid the gui interface
- Lots of cosmetic fixes for the gui (for some options it wouldn't immediately update on change)
05/24/2005
+ Added ppClip parameter and processing
- Changed some default values
- Fixed a few thread sync/exit problems with the gui code
05/02/2005 v0.9.6
+ Added gui with preview
+ Removed all yuy2 restrictions (d2)
- Fixed iDev settings and sDev settings being switched when calculating the weight tables (doh!)
06/16/2004 v0.9.5
- Fixed iDevC having an i instead of f inside the function param list and only excepting
integer values.
06/16/2004 v0.9.4
- Fixed the rouding errors with d2 = true, which could have led to +-2 change in the final
pixel values
- The change needed for the rounding fix also sped up d2 = true processing 10-15%
06/15/2004 v0.9.3
- Added d2 and centerScale/centerScaleC parameters.
- Unrolled yloops, no real speed up, but it did make the code huge...
06/12/2004 v0.9.2
- Unrolled xloops in YV12 and the luma only version of YUY2. Slight speed up.
06/11/2004 v0.9.1
- Fixed a problem with boundary pixels near the egdes of the picture getting incorrect spatial
weights.
06/11/2004 v0.9.0
- Initial Release

## Na dopracování

- oprava chyb podle potřeby
- Vydání v1.0

`$English Date: 2005/07/10 16:11:01 $`

`Český překlad:29.6.2009`