Levels
(clip, int input_low, float gamma, int input_high,
int output_low, int output_high, bool "coring")
Il filtro Levels
regola luminositą (brightness), contrasto (contrast),
e gamma (che deve essere > 0). I parametri input_low e input_high
determinano quali valori del pixel di input sono trattati come nero puro o come
bianco puro; I parametri output_low e output_high determinano
i valori di output correspondenti al nero e al bianco ; e il parametro gamma
controlla il livello di non linearitą nella conversione. Per essere precisi,
la funzione di conversione č:
output = [(input - input_low) / (input_high - input_low)]1/gamma (output_high - output_low) + output_lowQuesto č uno di quei filtri per cui sarebbe veramente bello avere una GUI. Poichč questa GUI non c'č (almeno non nella versione corrente di AviSynth), si č deciso di rendere questo filtro almeno compatibile con quello di VirtualDub quando il clip è RGB. Si dovrebbe riuscire a prendere i valori dalla GUI Levels in VirtualDub e passarli come parametri al filtro
Levels
ed ottenere
lo stesso risultato. Tuttavia, i parametri di input e di output possono essere
maggiori di 255.
Quando si elaborano dati in YUY2,Levels
corregge solo l'informazione
luma, e non chroma. Gamma correction č in realtą un concetto RGB, e non si sa
come realizzarlo in modo corretto in YUY2. Tuttavia, se gamma = 1.0,
il filtro dovrebbe avere lo stesso effetto sia in RGB che in YUY2. Per correggere
brightness o contrast è meglio usare Tweak o
ColorYUV, perché Levels
cambia
anche il chroma del clip.
In v2.53 è stato aggiunto un parametro opzionale coring = true/false (true di default, che riflette il comportamento delle versioni precedenti ) . Impostato a true, significa che il range del luma è limitato a [16,235] sia in input che in output (il che vuol dire che [0,16] è mappato a 16, e [235,output_high] a 235). Impostato a false significa che il range del luma è limitato a [0,255] (il che vuol dire che l'output [255,output_high] è mappato 255).
# Questo non fa nulla su un clip [16,235] , ma fissa un clip [0,255] a [16,235]: Levels(0, 1, 255, 0, 255) # luma è tagliato a [16,235] ed avviene la conversione [0,255]->[16,235] : # example: i valori luma in [0,16] sono tutti convertiti in 30 Levels(0, 1, 255, 16, 235) # gamma-correct image for display in a brighter environment: # example: luma of 16 stays 16, 59 is converted to 79, etc. Levels(0, 1.3, 255,0, 255) # invert the image (make a photo-negative): # example: luma of 16 is converted to 235 Levels(0, 1, 255, 255, 0) # does nothing on a [0,255] clip; does nothing on a [16,235]: Levels(0, 1, 255, 0, 255, coring=false) # scales a [0,255] clip to a [16,235]: Levels(0, 1, 255, 16, 235, coring=false) # this is the same as ColorYUV(levels="PC->TV") # scales a [16,235] clip to a [0,255]: Levels(16, 1, 235, 0, 255, coring=false) # this is the same as ColorYUV(levels="TV->PC")
$Date: 2004/09/29 21:58:56 $