MeshFlow: Minimum Latency Online Video Stabilization
文章目录
FAST Features
作者引用《Fast Corner Detection》中的角点检测算法,分别检测参考帧、畸变帧的特征点。检测方式如下:
1.以像素点 p p p为中心,取半径为3的Bresenham圆上的16个连续的像素点,如果这16个连续的像素点中有 n n n个连续的像素点的像素值都大于 I ( p ) + t I(p)+t I(p)+t,或者都小于 I ( p ) − t I(p)-t I(p)−t,则像素点 p p p为FAST特征点的候选点,一般 n n n取12, t t t为阈值
2.计算得到像素点 p p p与像素点1、5、9、13之间的像素值差异,如果至少有3个像素点与 p p p间的差值绝对值大于阈值 t t t,则像素点 p p p依旧为FAST特征点
3.一般情况下,为了加速计算,可以先计算第二步,满足第二步的情况下,再计算第一步
Track by KLT
作者引用Takeo Kanade 的论文《An Iterative Image Registration Technique with an Application to Stereo Vision》当中对特征点的跟踪算法,但这篇论文本身论证得比较清楚的是一维数据的匹配问题和相邻两帧之间只有平移变换的匹配问题,任意特征点的匹配在作者CMU的课程报告《Detection and Tracking of Point Features》中有更详细的介绍,为了清晰,下面的关于KLT的内容,一维数据的匹配问题采用《An Iterative Image Registration Technique with an Application to Stereo Vision》中的论述,用于描述作者所提供的方法的物理依据,二维图像的匹配问题采用《Detection and Tracking of Point Features》中的论述,方便厘清如何实现二维图像数据的匹配,另外《Detection and Tracking of Point Features》这篇Report写得比较长,如果想要简单了解KLT的导出过程,也可以阅读Stan Birchfield写的《Derivation of Kanade-Lucas-Tomasi Tracking Equation 》一文。
1D Case
对于一维数据的特征点匹配问题,如下图所示,希望能够找到 G ( x ) 、 F ( x ) G(x)、F(x) G(x)、F(x)间的位移 h h h,如果 h h h足够小,对 F ( x ) F(x) F(x)在点 x x x处做线性近似:
F ′ ≈ F ( x + h ) − F ( x ) h = G ( x ) − F ( x ) h (a.1) F^{'}\approx \frac{F(x+h)-F(x)}{h}=\frac{G(x)-F(x)}{h}\tag{a.1} F′≈hF(x+h)−F(x)=hG(x)−F(x)(a.1)
即:
h ≈ G ( x ) − F ( x ) F ′ ( x ) (a.2) h\approx\frac{G(x)-F(x)}{F^{'}(x)}\tag{a.2} h≈F′(x)G(x)−F(x)(a.2)
通过组合不同的 x x x来达到对 h h h的平滑的目的:
h ≈ ∑ x G ( x ) − F ( x ) F ’ ( x ) ∑ x 1 (a.3) h\approx \frac{ \sum_{x} \frac{G(x)-F(x)}{F^{’}(x)}}{\sum_{x}1}\tag{a.3} h≈∑x1∑xF’(x)G(x)−F(x)(a.3)
在下图中,存在相交的两个点, G ( x ) − F ( x ) = 0 G(x)-F(x)=0 G(x)−F(x)=0,但 G ′ 、 F ′ G^{'}、F^{'} G′、F′间的差异很大,可以用 1 ∣ G ′ − F ′ ∣ \frac{1}{|G^{'}-F^{'}|} ∣G′−F′∣1替换掉上面的权重系数1,即位移 h h h变为:
h ≈ ∑ x w ( x ) G ( x ) − F ( x ) F ’ ( x ) ∑ x w ( x ) ; w ( x ) = 1 ∣ G ′ − F ′ ∣ (a.4) h\approx \frac{ \sum_{x} w(x)\frac{G(x)-F(x)}{F^{’}(x)}}{\sum_{x}w(x)};w(x)=\frac{1}{|G^{'}-F^{'}|}\tag{a.4} h≈∑xw(x)∑xw(x)F’(x)G(x)−F(x);w(x)=∣G′−F′∣1(a.4)
向 h h