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_lowToto 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