REVIEW OF [Real-Time Hyperlapse Creation via Optimal Frame Selection]

针对解决视频平稳快进问题的算法。
即输入一个视频A和一个快进速率x,输出快进后的视频B,使B的效果尽量好。

分为两个部分,一是选帧,选择最后出现在输出快进视频中的帧序。二是把选出来的帧做去抖处理。
第二部分直接用了single path过一遍,这个paper主要在讲如何正确选帧。
它设了一个代价函数,用dp最小化这个代价并找出选帧方案。
代价函数由三部分组成:
一:
Cm限制结果中的相邻帧位移尽量小

其中Cr表示用RANSAC算出的相邻两帧的homograph的准确度,如果过于不准确则用一个大数γ表示Cm

Co为如果RANSAC算出的homograph还算靠谱的情况下,就用这个homograph导致的图像中心点变化距离作为Cm

二:
Cs限制输出视频的快进速率尽量接近x

三:
Ca限制a->b->c这连续的三帧中a->b调的帧数和b->c跳的帧数尽量一样,可以保证视频比较平稳快进,不会忽快忽慢。

有了这些代价,就是一个简单的dp问题了,f[i][j]表示前i帧中,最后选的一帧是i,倒数第二帧是j的最小代价。

优化:
这个算法的瓶颈不是在dp,而是在计算Cm代价中计算每对帧的homograph的过程中
计算一对homograph的速度很慢,计算n^2级对homograph就更慢了=-=
于是这篇paper提出了一个迷之优化方法,就是类似
Cm(i, j) = Cm(i, j – 1) + Cm(j – 1, j)

但是我觉得这样做明显不科学,这种做法把这个项重要的对原视频中的一来一回抖动的过滤作用变无效了
于是我把它改成了只计算相邻帧的homograph,i->j的homograph由H(i->i+1) * H(i+1->i+2) * … * H(j-1->j)得到
得到每对homograph后再用原来的Cm计算方法计算Cm。

效果还行XD