Topic: SVP и стабилизация тряски - тоже возможно ;)

Предыстория

http://www.svp-team.com/forum/misc.php?action=pun_attachment&item=2378 http://www.svp-team.com/forum/misc.php?action=pun_attachment&item=2379 http://www.svp-team.com/forum/misc.php?action=pun_attachment&item=2380 http://www.svp-team.com/forum/misc.php?action=pun_attachment&item=2381

Регулярно посещаю всяческие спортивно-автомобильные мероприятия. Обычно беру с собой FullHD камеру, но в этот раз камеру положил так далеко, что не смог отыскать накануне событий. Поэтому прихватил фотоаппарат с возможностью видео-съемки.
Снимаемое событие: Зимний дрифт-фестиваль «Adrenaline Drift Fest»
Аппарат: SONY DSC-W570
Формат роликов: MPEG4 Video 1280x720 29.97 fps + AAC 24000Hz mono 64kbps

Материал
Все-таки фотоаппарат есть фотоаппарат. И держать в руках при видеосъемке неудобно, и скачкообразный зум, плюс еще отсутствие оптического и электронного стабилизатора. Вообще полное отсутствие какого-либо стабилизатора. Я до этого момента считал, что у меня твердая рука и могу снимать с рук без штатива и практически без тряски. Ага! Как же! big_smile
На видео записалась такая тряска, что смотреть без слез невозможно. hmm

Как исправить
Ну что ж?! Материал наполовину загублен. Решил применить алгоритм стабилизации тряски. Только в этот раз пошел путем применения готовых уже давно знакомых мне плагинов и при этом попытаться устранить недостатки их прямого применения.

Были использованы плагины:
SVPflow - плагины поиска векторов и интерполяции движений, на которых основан пакет SVP
MaskTools -  инструменты создания, улучшения и управления масками
Depan - средства для оценки и компенсации глобального движения для полной или частичной его компенсации

Результат стабилизации
Было: M4H00768.MP4 (49,4 МБ)
Стало: M4H00768_STAB.MP4 (22,8 МБ)

Скрипт "SVP Stab"

SetMemoryMax(1024)
global svp_scheduler=true
global threads=7
global svp_cache_fwd=threads+2

SetMTMode(3,threads)
DSS2("D:\Stab\src\M4H00768.MP4").AssumeFps(30000,1001)
SetMTMode(2)

global super_params="{scale:{up:0},gpu:1}"
global analyse_params="{block:{overlap:1},main:{search:{coarse:{distance:4,bad:{sad:2000},type:2,trymany:true},type:2,distance:4},penalty:{lambda:1,pglobal:10000}},refine:[{thsad:4000}]}"
global smoothfps_params="{rate:{num:2,den:1},algo:13,scene:{limits:{blocks:50}}}"
super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
SVSmoothFps(super, vectors, smoothfps_params, mt=threads, url="www.svp-team.com")

global analyse_params2="{block:{w:16,h:16}}"
super2=SVSuper(super_params)
vectors2=SVAnalyse(super2, analyse_params2)
vectors_Forward=SVConvert(vectors2, false)

HorizontalSpeed_luma=MMask(vectors_Forward, kind=3).convertToRGB32().PointResize(width/32, height/32).PointResize(width/8, height/8).ConvertToYV12().mt_lut(y=2, u=128, v=128)
HorizontalSpeed_mask=HorizontalSpeed_luma.ScriptClip("""mt_lut(expr = "x "+string(YPlaneMedian)+" - abs 5 > 0 255 ?")""")
Details_mask=LanczosResize(width/8, height/8).mt_edge(thY1=5, thY2=5, thC1=5, thC2=5).mt_expand(u=128, v=128)
Background_mask=mt_lutxy(HorizontalSpeed_mask, Details_mask, expr = "x 128 > y 128 > & 255 0 ?").PointResize(width, height)

globalmotion = MDepan(vectors_Forward, thSCD1=10000, mask=Background_mask)
DepanStabilize(data=globalmotion, cutoff=0.5, prev=1, next=1, subpixel=2, mirror=15, method=1)
SelectEven()

Ссылки по теме:
cтатья на iXBT "Стабилизация видео"

Объяснения по скрипту будут ниже, если есть интерес

Post's attachments

Drift_Fest.jpg, 29.35 kb, 415 x 275
Drift_Fest.jpg 29.35 kb, 751 downloads since 2013-03-07 

Drift_Fest1.jpg, 29.44 kb, 420 x 277
Drift_Fest1.jpg 29.44 kb, 733 downloads since 2013-03-07 

Drift_Fest2.jpg, 34.55 kb, 420 x 278
Drift_Fest2.jpg 34.55 kb, 739 downloads since 2013-03-07 

Drift_Fest3.jpg, 51.19 kb, 582 x 257
Drift_Fest3.jpg 51.19 kb, 772 downloads since 2013-03-07 

Re: SVP и стабилизация тряски - тоже возможно ;)

зарезервировано для описания алгоритма

Re: SVP и стабилизация тряски - тоже возможно ;)

Особенно эффект заметен, если одновременно открыть исходник и стабилизированный вариант.
Чё-то начинает хотеться иметь такую функцию в SVP... wink

Re: SVP и стабилизация тряски - тоже возможно ;)

Noweol
Чё-то начинает хотеться иметь такую функцию в SVP...

что с ней делать то?
SVP - он чтобы смотреть в реальном времени, т.е. готовые видеоматериалы

Re: SVP и стабилизация тряски - тоже возможно ;)

Автоматическая стабилизация видео в реальном времени силами SVP возможна или нет?