Levels
(clip, int input_low, float gamma, int input_high, int output_low, int output_high, bool "coring")
Фильтр Levels
регулирует яркость, контрастность и величину гамма-коррекции (которая должна быть > 0). Параметры input_low и input_high определяют, какие входные пикселы считаются как полностью черные (низкое значение, low) и полностью белые(высокое значение, high), параметры output_low и output_high определяют выходные значения, соответствующие полностью черному и белому, и параметр gamma управляет уровнем нелинейности преобразования. Чтобы быть точным, функция преобразования:
output = [(input - input_low) / (input_high - input_low)]1/gamma (output_high - output_low) + output_lowЭто один из тех фильтров, для которых было бы замечательно иметь графический пользовательский интерфейс. Т.к. я не могу предложить графический пользовательский интерфейс (по крайней мере в текущем виде AviSynth), я решил, что я хотя бы могу сделать этот фильтр совместимым с фильтром от VirtualDub когда клип в формате RGB. В этом случае можно взять числа из диалога Levels программы "VirtualDub" и ввести их как параметры для
Levels
фильтра и получить аналогичные результаты. Однако, входные и выходные параметры могут быть больше 255.При обработке информации в YUV режиме, Levels
делает гамма-коррекцию только информации по яркости, но не по цветности. Гамма-коррекция на самом деле является концепцией RGB формата и я не знаю как ее сделать правильно для YUV. Однако, если gamma=1.0, фильтр должен иметь одинаковый эффект в RGB и YUV режимах. Для регулирования яркости или контрастности лучше использовать Tweak или ColorYUV, потому что Levels
изменяет также и цветность клипа.
В v2.53 добавлено опциональное coring = true/false (true по умолчанию, что отражает поведение старых версий).
coring=true: входной диапазон яркости ограничивается значениями [16,235] (и цветность [16,240]), результат *масштабируется* из [16,235] в [0,255], выполняется преобразование согласно указанной выше формуле, и выход *масштабируется* обратно из [0,255] в [16,235].
coring=false: выполняется преобразование согласно указанной выше формуле.
# не изменяет [16,235] клип, но сжимает (или ограничивает) [0,255] клип в [16,235]: Levels(0, 1, 255, 0, 255) # входная яркость масштабируется из [16,235] к [0,255], # производится конверсия [0,255]->[16,235] согласно формуле, # выход масштабируется обратно из [0,255] к [16,235]. # Например все значения яркости в пределах [0,16] конвертируются в 30 Levels(0, 1, 255, 16, 235) # гамма-корректирует изображение для отображения в светлом окружении : # пример: яркость 16 остается 16, 59 конвертируется в 79, и.т.д.. Levels(0, 1.3, 255,0, 255) # инвертирует изображение (делает фото-негатив): # пример: яркость 16 конвертируется в 235 Levels(0, 1, 255, 255, 0) # не изменяет [0,255] клип; не изменяет [16,235]: Levels(0, 1, 255, 0, 255, coring=false) # масштабирует [0,255] клип в [16,235]: Levels(0, 1, 255, 16, 235, coring=false) # это то же что и ColorYUV(levels="PC->TV") # масштабирует [16,235] клип в [0,255]: Levels(16, 1, 235, 0, 255, coring=false) # это то же что и ColorYUV(levels="TV->PC")
$English Date: 2005/11/15 21:23:11 $
Русский перевод 11.05.2005 Drakon Rider
Обновлен 17.12.2005 Fizick