AviSynth MSU Field Shift Fixer

Фильтр для AviSynth, предназначенный для исправления ситуации, когда разные строки одного кадра оказываются в разных кадрах. Это часто встречается при оцифровке с пленки, когда чётные строки идут на кадр позднее нечетных строк. В видео полученном переводом PAL->NTSC помимо сдвига, встречается и следующая проблема: в двух последовательных кадрах дублируется чётные строки, а нечётные - разные. Общая идея работы фильтра - поиск оптимального положения строк для данного кадра. Если оно существует, то наиболее подходящие строки подставляется на место четных строк этого кадра. Если же его нет (например, чётные строки на кадр позже нечётных, а мы находимся в последнем кадре), то или нужное поле получается интерполяцией или всё остаётся как есть (зависит от параметров фильтра). После обработки фильтром MSU Field Shift Fixer улучшается визуальное качество, видео лучше подвергается сжатию и шумоподавлению.

Примеры работы фильтра:

Рассмотрим работу данного фильтра на тестовом ролике "4msu2_25.avi"

Фрагмент из фильма
исходный кадр
После воздействия фильтра
тот же кадр после обработки

Сравнение работы фильтра MSU Field Shift Fixer с фильтром deinterlace

кадр, обработанный фильтром deinterlace
кадр, обработанный фильтром deinterlace
кадр, обработанный MSU Field Shift Fixer
кадр, обработанный Field Shift Fixer

На этих двух картинках хорошо видно, что при попытке улучшить такое видео с помощью деинтерлейсинга многие детали (особенно горизонтальные) восстанавливаются не так хорошо, как при использовании нашего фильтра.

Настройки:

Для использования фильтра необходимо:
  1. Установить AviSynth (Скачать)
  2. Создать скрипт (текстовый файл с расширением avs) примерно такого содержания:
Avisource("video.avi")
ConvertToYUY2()
LoadPlugin("msu_fieldshiftfixer.dll")
MSU_FieldShiftFixer(16,1,1)
ConvertToRGB24()

Что какая строчка делает:
  1. Avisource("4msu2_27.avi") - путь к видеофайлу
  2. ConvertToYUY2() - перевод в YUY2 для работы фильтра
  3. LoadPlugin("msu_fieldshiftfixer.dll") - загрузка фильтра. Может быть размещён где угодно, но если он лежит не там, где файл .avs, то необходимо прописать путь (если относительный, то считать от местоположения скрипта).
  4. MSU_FieldShiftFixer(16,1,1) - собственно, запуск фильтра. Первый передаваемый параметр - шаг между нечётными строчками, по которым считается наиболее подходящее поле. Интервал от 1 до 16. При уменьшении шага уменьшается вероятность выбора неправильного поля, но скорость работы падает. 2-й параметр принимает значение 0 или 1. Если его значение 1, то в случае, если на последнем кадре поле чётное предыдущего кадра не является наилучшим, то чётное поле последнего кадра получается интерполяцией, иначе (если значение 0), то он остаётся без изменений. Если третий параметр равен 1, то это позволит избежать ситуации, когда какое-либо поле дублируется в 2-х последовательных кадрах. Если параметр равен 0, то это проверяться не будет.
  5. ConvertToRGB24() - Перевод в RGB24

После чего этот (.avs) файл открывается в VirtualDub (или другой программе для просмотра или обработки видео), через Video->Filters выбираются какие-либо фильтры, которые нужно применить после работы MSU_FieldShiftFixer и всё!
Используются технологии uCoz