视觉领域运动跟踪基础的算法-光流法中提到L-K光流算法对于邻域窗口大小比较敏感,为了解决这个问题,可以采用图像金字塔的方法,即窗口固定,将图像生成金字塔,在每一层金字塔上都用同一个大小的窗口来进行光流计算。那么在图像较小的时候,窗口显得较大,此时的光流可以跟踪速度较快的目标,而在图像大的时候,光流窗口相对较小,得到的光流就更准确。
如何建立图像金字塔
建立图像金字塔的过程是对图像进行低通滤波的过程,具体步骤如下:
1) 第L-1层图像到第L层图像是通过如下模板对L-1层图像进行低通滤波。
计算公式如下:
2) 将滤波后的图像抽取偶数行偶数列的像素重组为第L层图像,因此最后L层的图像大小是L-1层的一半。
为解决图像滤波时边缘像素的问题,由于模板的半径是1,那么就首先将原始图像的像素扩展一圈,宽度为一个像素,扩展出来的像素值与其相近的原始图像边缘像素一致,即
根据金字塔逐层计算光流
对于一般的视频做光流而言,采用3*3的窗口,图像金字塔的层数有2-3层就够了。因为覆盖范围已经很广了。最后得到的原始图像的光流按照一下公式计算而来:
计算光流的基本方程
光流基本方程是一个最优化的问题,可以通过求导求其最优解。
求偏导:
计算两张图像的差:
这样就算出了LK光流。但是这一光流的假设是泰勒一阶展开足够精确。为了进一步使得计算出来的光流更加精确,我们采用牛顿逼近法进行迭代。
牛顿迭代优化
核心思想在于:在上一次计算出LK光流后,将得到的光流v(k)用来更新参考图像的像素位置(平移),之后再次计算光流。重新更新v(k)。如此循环直到迭代次数达到上限或者误差量ε小于设定的阈值时停止。
最终迭代结束后的精确光流量:
| 留言与评论(共有 0 条评论) |