Как улучшить старое видео. Часть 2.

В предыдущей части мы говорили о том, каким способом мы собираемся улучшать видео и что нам для этого потребуется. Теперь максимально подробно рассмотрим сам процесс улучшения.

Помимо софта, установленного в первой части нам потребуется установить несколько фильтров для Avisynth. Именно эти фильтры создадут основную нагрузку на CPU.

Mvtools — набор функций с помощью, которого мы будем уплавнять наше видео. Я уже говорил про этот плагин в первой части.

Установка: распаковываем архив и копируем mvtools2.dll в любую папку, например \AviSynth\plugins\.

FFT3dfilter — с помощью этого фильтра чистим видео от шума (как цветовой компоненты, так и яркостной). Так же можно повысить резкость.
Установка: распаковываем архив и копируем fft3dfilter.dll в любую папку, например \AviSynth\plugins\.

Yadif — фильтр для деинтерлейсинга видео. Если у вас видео черезстрочное (видна гребенка), то с помощью Yadif видео можно привести к нормальному виду для просмотра на компьютере, телефоне или планшете (сделать прогрессивным).
Установка: распаковываем архив и копируем yadif.dll в любую папку, например \AviSynth\plugins\.

Важно
После установки всех фильтров необходимо установить математическую библиотеку, используемую в этих фильтрах. Для этого копируем файл fftw3.dll в папку C:\Windows\Sytem32.
Теперь все готово к работе. Для удобства я все фильтры собрал в одном архиве.

Bat файлы, которые нам понадобятся для работы. Всего нужно 2 файла.

1. Avisynth скрипт, назовем его doublefps.avs. В этом файле собран набор команд для Avisynth, которыми мы будем стараться улучшить наше видео.

DirectShowSource("i:\Video\video\Work\Source\dv1.avi") # наше исходное видео 
ConvertToYV12() # большинство фильтров работает в пространстве YV 
# теперь начинают работать сами фильтры 
Yadif(mode=0) # убираем гребенку 
FFT3DFilter(sigma=1.5, bt=5, bw=32, bh=32, ow=16, oh=16, plane=0, interlaced=true) # чистим видео от шума 
# 4 последующих строчки отвечают за удвоение частоты кадров и расчета промежуточного кадра 
super=MSuper(pel=2) 
backward_vec=MAnalyse(super, blksize=8, overlap=2, isb=true,search=3, delta=2, dct=1) 
forward_vec=MAnalyse(super, blksize=8, overlap=2, isb=false,search=3, delta=2, dct=1) 
MFlowFps(super,backward_vec,forward_vec,num=2*FramerateNumerator(last),den=FramerateDenominator(last))

2. Кодирования с помощью x264.exe. Скрипт назовем coding.bat

x264.exe --preset veryslow --output dv1.mkv doublefps.avs

Здесь запускается кодер x264.exe на вход которому подается Avisynth скрипт doublefps.avs. Опции кодировщика оставим без объяснений. В сети вы сможете найти по ним исчерпывающую информацию.

Итак, мы две части шли к этому. Все готово. Запускаем coding.bat ждем, когда закончится кодирование и наслаждаемся результатом. Честно говоря я каждый раз с нетерпением жду, когда можно будет посмотреть закодированное видео. Реалистичность движений просто великолепна.

Процесс кодирования идет долго, примерно 2-4 кадра в секунду. Чтобы закодировать 3-х минутный ролик требуется полчаса. И это еще при щадящих условиях по созданию промежуточного кадра. Если, например, уменьшить параметр blksize с 8 до 4, то скорость кодирования будет 0.1 кадра в секунду. Анализ движения, поиск векторов движения, расчет промежуточного кадра — это очень ресурсоемкий процесс. Если же кодировать Full HD видео, то там совсем все медленно, скорость кодирования стремится к нулю. Но для восстановления старых записей, где размер кадра 720×576, этот метод подойдет. Можно запустить на ночь и подождать.

Постойте! Воскликните вы, а как же методы позволяющие удваивать частоту кадров на лету, то есть во время просмотра видео. Как же они справляются? Или телевизоры? Современные телевизоры так же позволяют просматривать видео с плавностью движения. Дело в том, что в этих технологиях, которые уплавняют «на лету» используются похожие,но тем не менее другие виды построения промежуточного кадра. Иногда вместо вещественной используется целочисленная арифметика. Достраивают кадр не по всему полю, а только где есть движение. Да много там всяких хитростей. В нашем же методе мы честно анализируем весь кадр и честно достраиваем промежуточный, вот поэтому уходит много времени. Повторяю, что данный метод подходит для короткометражных видео. Можно конечно же использовать его для скачанного из интернет bd remux’а, но это будет долго.

Update

Если вы заинтересовались технологией перевода видео в формат с двойной частотой кадров, то рекомендую ознакомиться с программой Fpska, где процесс конвертации максимально упрощен, буквально за один клик.

Вам также может понравиться