Bob
(clip, float "b", float "c", float "height")
Bob
берет клип и выполняет его bob-деинтерлейсинг (убирает "гребенку"). Это означает, что он расширяет каждое поле до размеров полного кадра интерполяцией значений между строками. Верхнее поле немного сдвигается вверх в сравнении с нижним, так что картинка на самом деле не прыгает вверх-вниз. Однако, она начинает "мерцать" на стационарных сценах, так как интерполяция на самом деле не восстанавливает другое поле достаточно точно.
Фильтр использует BicubicResize
для этой грязной работы. Вы можете указывать ему значения b и с. Также вы можете воспользоваться случаем и изменить вертикальное разрешение параметром height.
Фильтр bob в действительности не передвигает физическую позицию поля. Он просто возвращает его на начало. Если Вы просто разделили поля SeparateFields
() то получили 2 кадра половинной высоты: строка 0 стала строкой 0 кадра 0 а строка 1 стала строкой 0 кадра 1.Таким образом строки 0 и 1 располагаются в том же месте! Bob теперь изменяет размер каждого кадра вдвое но для первого кадра использует исходные строки для четных строк, а для второго - исходные строки для нечетных строк, в точности как и полагается. Если бы Вы просто увеличили вдвое высоту каждого кадра после SeparateFields
(), то это бы не сработало как надо, так как физическое расположение полей смещалось бы.
Схематически:
Предположим, что строки 0o, 1o, 2o, 3o, ... являются исходными строками а 0i, 1i, 2i, 3i, ... - интерполированными строками.
Исходное состояние
номер строки | кадр 0 |
0) | 0o |
1) | 1o |
2) | 2o |
3) | 3o |
Разделили поля
номер строки | кадр 0 | кадр 1 |
0) | 0o | 1o |
1) | 2o | 3o |
Удвоили размер
номер строки | кадр 0 | кадр 1 |
0) | 0o | 1o |
1) | 1i | 2i |
2) | 2o | 3o |
3) | 3i | 4i |
что дает неправильный результат, так как физическое положение поля изменилось.
Bob же делает это правильно
номер строки | кадр 0 | кадр 1 |
0) | 0o | 0i |
1) | 1i | 1o |
2) | 2o | 2i |
3) | 3i | 3o |
bob(0.0, 1.0)
Bob(0.0, 1.0) сохраняет оригинальные поля для RGB и YUY2 и сохраняет канал яркости, но не цветности для YV12.
Коэффициенты фильтра b=0.0 и c=1.0 дают вам 0 при x=1.0/2.0 и 1 при x=0. Вместе с +/-0.25 смещением происходящим с положением оригинальных полей, вы получите очень резкий кубический фильтр с коэффициентами -1/8 5/8 5/8 -1/8 на отводах x=0.5/1.5 для другого поля.
Однако, так как смещение плоскостей цветности - только 0.125 для yv12, отводы не приходят на те же самые расстояния. Обсуждение
$English Date: 2006/12/24 13:45:08 $
Русский перевод 14.05.2005 Turyst04
Обновления 31.12.2006 Fizick http://avisynth.org.ru