## 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`