传统配准(其一) | Lucas–Kanade光流 | IJCAI

787 阅读3分钟
  • 文章转自:微信公众号「机器学习炼丹术」
  • 作者:炼丹兄(已授权)
  • 作者联系方式:微信cyx645016617
  • 论文名称:‘An Iterative Image RegistrationTechnique with an Application to Stereo Vision’

「前言」:在某些情况下,使用深度学习的voxelmorph或者SYMnet等配准网络并不能取得比传统方法更好的效果,所以在这里想学一下比较好的RLOF(Rubost Local Optical Flow)鲁棒局部光流。这个方法应该是传统光流法中的SOTA了,但是RLOF的知识是继承与其之前的方法,所以这个开一个大概三篇文章的连续剧,专门讲解传统光流的算法。

1 三个假设

  1. 亮度恒定:一个像素点随着时间的变化,其亮度值(像素灰度值)是恒定不变的。这是光流法的基本设定。所有光流法都必须满足。

  2. 小运动: 时间的变化不会引起位置的剧烈变化。这样才能利用相邻帧之间的位置变化引起的灰度值变化,去求取灰度对位置的偏导数。所有光流法必须满足。

  3. 空间一致:即前一帧中相邻像素点在后一帧中也是相邻的。这是LK光流法独有的假定。因为为了求取x,y方向的速度,需要建立多个方程联立求解。而空间一致假设就可以利用邻域n个像素点来建立n个方程。

2 构建方程

  • 根据亮度恒定假设,认为同一个位置的点在不同时刻的亮度是相同的,因此可以得到下面等式:

image.png

  • 根据小运动假设,我们对小运动,可以做泰勒展开:

image.png

其中HOT表示高阶极小值,我们把它近似成0即可。

这样我们得到了两个等式,两者相减,可以得到下面等式:

image.png

其中Ix\frac{\partial I}{\partial x}就是光亮对x维度的偏导数,这个部分是可以从图片中计算出来的,是已知数;θx\theta x这个是x位置的速度,这个是我们需要求解的参数,因此我们把上面公式写成下面的形式:

image.png

再往下为了简化公式,我们仅仅考虑2D图片的情况。上面有三个参数,x,y,z的速度。如果是2D图片,那么就只用考虑x和y的速度了:

image.png

上公式中,IxI_x表示亮度对x的梯度,ItI_t表示亮度对t的梯度。现在我们发现,目前仅仅得到了这一个公式,但是却又两个参数需要求解。

  • 这时候引入最后一个假设空间一致,这个是需要设置一个邻域大小,假设是3x3的邻域。那么这个假设的含义是,对于这3x3的9个像素,他们的速度VxV_xVyV_y是相同的。因此可以列出下面的方程:

image.png

现在,我们有了9个方程,但是仅仅有2个参数,这是一个超定方程,所以需要使用最小二乘法来解决,我们把上面的公式写成矩阵的形式:

image.png

这个矩阵是9x2的矩阵乘上2x1得到一个9x1的矩阵。这个超定问题使用最小二乘的方法求解:

image.png

上面的矩阵形式通过可逆操作,求解出了两个参数。我们再展开转换成下面的等式:

image.png

这样,我们就可以从3x3的邻域中,计算中x和y的速度了。这个就是LK光流法的计算公式。