Levels

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

Os filtros Levels ajustam brilho, contraste e gama (que deve ser > 0). Os parâmetros input_low e input_high determinam que valores de píxeis de entrada são tratados como preto puro e branco puro, os parâmetros output_low e output_high determinam os valores de saída correspondendo a puro preto e branco e o parâmetro de gama controla o grau de não linearidade na conversão. Mais exatamente, é a função de conversão:

output = [(input - input_low) / (input_high - input_low)]1/gamma (output_high - output_low) + output_low
Este é um dos filtros que seria muito bom ter um GUI. Desde que não posso oferecer um GUI (pelo menos não na forma atual do AviSynth), decidi que pelo menos poderia fazer este filtro compatível com VirtualDub quando o clipe é RGB. No caso você pode ter os números do diálogo dos Níveis de VirtualDub e passá-los como parâmetros para os filtros Levels e obter os mesmos resultados. Porém, a entrada e parâmetros de saída podem ser maiores de 255.

Ao processar dados em modo YUV, Levels só corrige gama da informação luma, não o croma. Correção de gama realmente é um conceito RGB e não sei fazer isto corretamente em YUV. Porém, se gamma = 1.0, o filtro deveria ter o mesmo efeito em RGB e modos YUV. Para ajustar brilho ou contraste é melhor usar Tweak ou ColorYUV, porque Levels também muda o croma do clipe.

Na v2.53 um opcional coring = true/false (verdadeiro por padrão, que reflete o comportamento em versões mais antigas) está incluído. Ao fixar para true, significa que a gama luma é cortada para [16,235] a entrada e saída (isto significa que [0,16] é mapeado a 16, e [235,output_high] para 235). Ao fixá-lo para false significa que a gama luma é cortada  para [0,255] - e que a saída [255,output_high] é mapeada a 255.

# não faz nada em um clipe [16,235], mas corta (ou "grampeia") um clipe [0,255] para [16,235]:
Levels(0, 1, 255, 0, 255)

# o luma é cortado para [16,235] e a conversão [0,255]->[16,235] acontece:
# exemplo: os valores luma em [0,16] são todos convertidos a 30
Levels(0, 1, 255, 16, 235)

# imagem correção de gama para exibição em um ambiente mais luminoso:
# exemplo: luma de 16 permanece 16, 59 é convertido a 79, etc.
Levels(0, 1.3, 255,0, 255)

# inverte a imagem (torna uma foto negativa):
# exemplo: luma de 16 é convertido a 235
Levels(0, 1, 255, 255, 0)

# não faz nada em um clipe [0,255]; não faz nada em um [16,235]:
Levels(0, 1, 255, 0, 255, coring=false)

# escala um clipe [0,255] para um [16,235]:
Levels(0, 1, 255, 16, 235, coring=false)  # isto é igual a ColorYUV(levels="PC->TV")

# escala um clipe [16,235] para um [0,255]:
Levels(16, 1, 235, 0, 255, coring=false)  # isto é igual a ColorYUV(levels="TV->PC")

$Date: 2006/03/26 18:11:19 $ Portuguese translation by RoLon