## Levels

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

Le filtre `Levels` ajuste la luminosité, le contraste, et le gamma (qui doit être > 0). Les paramètres input_low et input_high déterminent à partir de quelle valeur des pixels en entrée sont traités comme étant totalement noirs ou totalement blancs, les paramètres output_low et output_high déterminent à partir de quelle valeur les pixels en sortie correspondent à du noir pur ou a du blanc pur; Le paramètre gamma contrôle le degré non linéaire de cette conversion. Plus précisément, voici exactement la fonction utilisée:

> output = [(input - input_low) / (input_high - input_low)]1/gamma (output_high - output_low) + output_low

C'est un des filtres qui serait très pratique à utiliser avec une GUI (interface graphique). Puisqu'aucune GUI n'existe (du moins pas dans l'état actuel d'AviSynth), j'ai décidé que ce filtre devrait au moins être compatible avec la version de level de VirtualDub quand le clip est en RGB. Dans ce cas, vous devriez pouvoir copier les valeurs indiquées dans la boite de dialogue de VirtualDub et de les indiquer en tant que paramètres au filtre `Levels` afin d'obtenir le même résultat. Cependant, les paramètres d'entrée et de sortie peuvent être plus grand que 255.

Quand le filtre travaille avec des données dans le format YUV, il corrige seulement le gamma de la luminance et pas de la chrominance. La correction gamma est un concept lié au format de couleur RGB, et je ne sais pas vraiment comment faire ça correctement dans le format YUV. Cependant, avec gamma = 1.0, le filtre devrait avoir le même effet en RGB qu'en YUV. Pour ajuster la luminosité ou le contraste, mieux vaux utiliser Tweak ou ColorYUV, puisque `Levels` change également la chrominance du clip.

Dans v2.53, un paramètre supplémentaire a été ajouté: coring = true/false(vrai/faux) (vrai par défaut, ce qui permet de retrouver le comportement des anciennes versions du filtre). Quand il est sur true(vrai), cela veut dire que la luminance est restreinte à la plage de valeurs [16,235] à la fois pour l'entrée et la sortie (cela veut dire que la plage [0,16] est forcée à 16, et que la plage [235,output_high] est forcée à 235). Quand ce paramètre est sur false(faux), cela veut dire que la luminance est limité à la plage de valeurs [0,255] (cela veut dire que la plage de valeurs de sortie [255,output_high] est forcée à 255).

    # Ne fait rien sur un clip compris dans la plage [16,235],
    mais restreint un clip compris dans la plage [0,255] à la plage [16,235]:
    Levels(0, 1, 255, 0, 255)

    # La luminance est limité à [16,235] et la conversion [0,255]->[16,235] à lieu:
    # exemple: les valeurs de la luminance dans la plage [0,16] sont toute converties à 30
    Levels(0, 1, 255, 16, 235)

    # Corrige le gamma d'une image pour un affichage dans un environnement plus lumineux:
    # exemple: une luminance de 16 reste à 16, 59 est changée en 79, etc.
    Levels(0, 1.3, 255,0, 255)

    # Inverse l'image (fait un négatif photo):
    # exemple: une luminance de 16 est changée en 235
    Levels(0, 1, 255, 255, 0)

    # Ne fait rien sur un clip compris dans la plage [0,255] ; Ne fait rien sur un clip compris dans la plage [16,235]:
    Levels(0, 1, 255, 0, 255, coring=false)

    # Applique un facteur d'échelle à un clip compris dans la plage [0,255] pour le mettre dans la plage [16,235]:
    Levels(0, 1, 255, 16, 235, coring=false) # Revient au même que ColorYUV(levels="PC->TV")

    # Applique un facteur d'échelle à un clip compris dans la plage [16,235] pour le mettre dans la plage [0,255]:
    Levels(16, 1, 235, 0, 255, coring=false) # Revient au même que ColorYUV(levels="TV->PC")

`$English Date: 2004/07/04 19:37:46 $
French translation date: 2006/02/05 JasonFly macpaille@users.sourceforge.net`