Levels

Levels (clip, int input_low, float gamma, int input_high, int output_low, int output_high, bool "coring")

Filtr  Levels upravuje jas (brightnes), kontrast, a gamma (které musí být > 0). Parametry input_low a input_high určují jaké hodnoty vstupního pixelu jsou považovány za plně černé a plně bílé, parametry output_low a output_high určují výstupní hodnoty odpovídající plně černé a bílé a parametr gamma  řídí stupeň nelinearity převodu. Abychom byli přesní, funkce převodu je:

output = [(input - input_low) / (input_high - input_low)]1/gamma (output_high - output_low) + output_low
Toto je jeden z filtrů pro který by bylo opravdu výborné mít GUI. Protože nemohu nabídnout GUI (minimálně v současné formě AviSynthu), rozhodl jsem se, že bych ho mohl udělat aspoň kompatibilní s filtry VirtualDubu pokud je klip v RGB. V tom případě je možné vzít čísla z VirtualDub dialogu Levels a vložit je za parametry filtru  Levels a získat stejný výsledek. Nicméně, vstupní a výstupní parametry mohou být větší než 255.

Když jsou data zpracovávaná v YUV režimu, Levels provádí pouze gamma-korekci jasové informace, ne barevné. Gamma korekce je ve skutečnosti koncepce formátu RGB, a nevím jak ji náležitě provést v YUV. Nicméně, pokud je  gamma = 1.0, měl by mít filtr stejný efekt v RGB i v YUV režimu. Pro úpravu jasu nebo kontrastu je lepší použít  Tweak nebo ColorYUV, protože Levels také mění barevnost klipu.

Ve  v2.53 přidán volitelný parametr  coring = true/false (true jako výchozí, což odráží způsob práce starších verzí).
coring = true: vstupní jas (luma) je omezen na [16,235] (i barevnost-chroma [16,240]), výsledek je *rozšířen* z [16,235] na [0,255], převod bere v souladu s výše uvedenou formulí, a výstup je *zúžen* zpět z [0,255] na [16,235].
coring = false: převod se provádí v souladu s výše uvedenou formulí.

# nedělá nic s [16,235] klipem, ale omezí (nebo zaokrouhlí) klip s rozsahem [0,255] na klip s rozsahem [16,235]:
Levels(0, 1, 255, 0, 255)

# vstup je rozšířen z [16,235] na [0,255], provede se převod [0,255]->[16,235] (podle formule),
# a výstup je zpátky zúžen z [0,255] na [16,235]: (například: hodnoty jasu (luma) v [0,16] jsou všechny převedeny na 30)
Levels(0, 1, 255, 16, 235)

# gamma-korekce obrazu pro zobrazení ve světlém okolí:
# příklad: jas 16 zůstává 16, 59 je převedeno na 79, atd.
Levels(0, 1.3, 255, 0, 255)

# invertuje obraz (vytváří foto-negativ):
# příklad: jas 16 je převeden na 235
Levels(0, 1, 255, 255, 0)

# nedělá nic s klipem o rozsahu [0,255] ; nedělá nic s klipem o rozsahu [16,235]:
Levels(0, 1, 255, 0, 255, coring=false)

# zůží rozsah klipu z [0,255] na [16,235]:
Levels(0, 1, 255, 16, 235, coring=false) # je to stejné jako ColorYUV(levels="PC->TV")

#rozšíří rozsah klipu z [16,235] na [0,255]:
Levels(16, 1, 235, 0, 255, coring=  false) # je to stejné jako ColorYUV(levels="TV->PC")

$English Date: 2005/11/15 21:23:11 $

Český překlad:20.6.2008