ColorKeyFrame - линейная интерполяция цветовой коррекции по ключевым кадрам.
Плагин подобен и основан на встроенном в AviSynth фильтре ColorYUV
.
В Avisynth затруднительно установить различную цветовую коррекцию для различных частей клипа, особенно плавно изменяющуюся коррекцию.
(функция Animate не очень удобна).
В новом плагине есть две функции: ColorKeyFrame и ColorInterpolate. Несколько команд ColorKeyFrame можно использовать, чтобы задать цветовую коррекцию для некоторых выбранных кадров (ключевых кадров). Функция ColorInterpolate производит цветовую коррекцию по заданным величинам в ключевых кадрах и планый переход цветовой коррекции между ключевыми кадрами путем линйной интерполяции значений цветовой коррекции. Если вы определите ровно один ключевой кадр, то цветовая корррекция ColorInterpolation будет однородна по всеку клипу, как ColorYUV.
Плагин использует некоторый трюк интерфейса Avisynth, чтобы передать его установки (подобный метод используется в DGDecode, IVTC, DePan, MVTools, и др.). Выход функции ColorKeyFrame - специальный клип с данными по цветовой коррекции (для данного ключевого кадра и предыдущих ключевых кадров) в кадровом буфере. Этот выход может быть использован как источник для следующего вызова ColoKeyFrame для определения коррекции некоторого другого ключевого кадра, и так далее. Наконец выход последнео вызова ColorKeyFrame используется как второй входной клип (ключи keys) для функции ColorInterpolation, чтобы интерполировать цветовую коррекцию.
ColorKeyFrame
(clip, int "frame",
float "gain_y", float "off_y", float "gamma_y", float "cont_y",
float "gain_u", float "off_u", float "gamma_u", float "cont_u",
float "gain_v", float "off_v", float "gamma_v", float "cont_v")
первый параметр - входной клип или клип ключевых данных от предыдущих вызовов функции ColorKeyFrame.
frame это номер ключевого кадра с задаваемыми данными цветовой коррекции
Остальные параметры ColorKeyFrame
те же что и фильтра ColorYUV
в AviSynth.
Все настойки данного фильтра опциональны, все значения по умолчанию равны "0".
gain, off, gamma и cont могут быть установлены независимо для каждого канала.
Параметр gain (усиление) определяет значение множителя для величины, и он расширяет сигнал относительно нижней границы диапазона. Чтобы Вас запутать, в фильтре Tweak эта настройка называется contrast. Это означает, что если gain установлено в 0, то это соответствует отсутствию умножения величин (единичному множителю). Когда gain равно 256, все величины умножаются на 2 (в два раза ярче). Если gain равно 512, все величины умножаются на 3. Таким образом если gain = k*256 для некого целого k, тогда яркость Y становится (k+1)*Y (аналогично для цветности). Хотя это и возможно, не имеет смысла прилагать эту настройку для цветности сигнала.
off (offset, смещение)) добавляет значение к величинам яркости или цветности. Offset установленный в 16, добавит 16 к величинам (интенсивности) пикселей. Off равный -32 вычтет 32 из величин всех пикселей.
gamma регулирует гамма-коррецию указанного канала. Значение gamma, равное 0, эквивалентно показателю гамма-коррекции, равному 1.0. Когда gamma установлено в 256, это эквивалентно показателю гамма-коррекции, равному 2.0. Значение параметра gamma допустимо до -256, где оно эквивалентно показателю гамма-коррекции, равному 0.0.
cont (контраст) также является множителем для величины, и он расширяет сигнал от середины диапазона. Это означает, что если cont установлено в 0, то это соответствует отсутствию умножения величин (единичному множителю). Когда cont равно 256, все величины умножаются на 2 (в два раза ярче). Если cont равно 512, все величины умножаются на 3. Таким образом если cont = k*256 для некого целого k (и нулевого gain), тогда яркость Y становится Y + k*(Y-128) (аналогично для цветности). Хотя это и возможно, не имеет смысла прилагать эту настройку для яркости сигнала.
ColorInterpolate
(clip, clip "keys")
первый параметр это входной клип
keys это специальный клип ключевых данных с данными по цветовой коррекции (выход функции ColorKeyFrame)
loadplugin("Colorkeyframe.dll") avisource("g:\test.avi") converttoyv12() source=last # копируем источник Colorkeyframe(0,off_y=0, gain_y=0) # нулевая коррекция для кадра 0 источника ColorKeyFrame(60,off_y=64, gain_y=10) # большая коррекция яркости кадра 60 Colorkeyframe(362,off_y=0, gain_y=0) # нулевая коррекция кадра 362 ColorInterpolate(source,keys=last) # делаем коррекцию источника с данными из клипа ключевых данных (last)
Тот же пример с другим синтаксисом
loadplugin("Colorkeyframe.dll") avisource("g:\test.avi") converttoyv12() keys=Colorkeyframe(0,off_y=0, gain_y=0) # нулевая коррекция для кадра 0 источника keys=keys.ColorKeyFrame(60,off_y=64, gain_y=10) # большая коррекция яркости кадра 60 keys=keys.Colorkeyframe(362,off_y=0, gain_y=0) # нулевая коррекция кадра 362 ColorInterpolate(keys=keys) # делаем коррекцию источника с данными из клипа ключевых данных (keys)
Данный плагин является программным продуктом, свободно распространяемым на условиях лицензии GNU GPL. Смотри файл gpl-rus.txt.
Версия 0.1 (17.04.2007)
Версия 0.2 (21.04.2007)
Версия 0.3 (25.09.2010)