Topic: Компенсация движения силами SVP при обработке видео в Ависинте
Возможно ли эффективно использовать SVP в CPU и/или GPU режимах для компенсации движения при временнoм денойсе?
Вот как я привык делать фильтрацию с компенсацией движения:
super = MSuper(mt=true)
backward_vectors = MAnalyse(super, isb=true, mt=true)
forward_vectors = MAnalyse(super, isb=false, mt=true)
forward_compensation = mcompensate(super, forward_vectors, thSCD1=500, mt=true )
backward_compensation = mcompensate(super, backward_vectors, thSCD1=500 ,mt=true )
interleave(forward_compensation, last, backward_compensation)
(временной денойсер с диаметром в 3 кадра)
SelectEvery(3,1)
Тут используется "обычный" MVTools2, который поддерживает встроенную многопоточность и дает приемлемую скорость.
Возможно ли увеличить скорость при сохранении качества используя для этого SVP?
Из того, что я прочитал в Вики, есть 3 пути:
Измененный MVTools2, использовать только стандартные функции (те же MFlow/MCompensate).
Однако аппаратного ускорения здесь нет, а отсутствие mt-параметра дает скорость куда ниже оригинального MVTools2.Тот же MVTool2 из 1 пункта, но использовать его новую функцию MSmoothFps в режиме MFlow.
Но как использовать его в этом режиме? Как мне показалось, он всегда работает в режиме повышения фпс, даже с algo=1, а ведь компенсация движения и повышение фпс - это не одно и то же. В первом случае создаются "дубликаты" имеющихся кадров, т.е. выполняется 100% сдвиг блоков по векторам движения и создается по 2 дополнительных кадра на каждый исходный, а во втором - создаются промежуточные кадры, 50% сдвиг и только по 1 новому кадру (если мы увеличиваем фпс в 2 раза).Использовать собственные функции SVP для анализа движения, с последующей конвертацией векторов в формат MVTools2.
Однако, несмотря на указание gpu:1 в настройках SVSuper и SVAnalyze, видеокарта не задействуется и ускорения нет, скорость не выше, чем в моем примере в начале поста без SVP вообще. Аппаратное ускорение активируется только при использовании полученных векторов в SVSmoothFps, но опять же, это функция не для компенсации движения, та же проблема, что в пункте 2.
Как видите, я изрядно запутался, прошу помощи.