光流法的三维运动表示


Reference:

  1. 高翔,张涛 《视觉SLAM十四讲》
  2. GILAD ADIV Determining Three-Dimensional Motion and Structurefrom Optical Flow Generated by Several Moving Objects

1. 简介

光流是一种描述像素随时间在图像之间运动的方法。计算部分像素运动的方法称为稀疏光流;计算所有像素的称为稠密光流。稀疏光流以 Lucas-Kanade 光流为代表,稠密光流以 Horn-Schunck 光流为代表。本文中主要使用到了 LK 光流。
在这里插入图片描述

Lucas-Kanade 光流

单像素算法

在 LK 光流中,我们认为来自相机的图像是随时间变化的。图像可以看作时间的函数: I ( t ) I(t) I(t)。那么,一个在 t t t 时刻,位于 ( x , y ) (x,y) (x,y) 处的像素,它的灰度可以写成:
I ( x , y , t ) I(x,y,t) I(x,y,t)

光流法的基本假设:
灰度不变假设:同一个空间点的像素灰度值,在各个图像中是固定不变的。
对于 t t t 时刻位于 ( x , y ) (x,y) (x,y) 处的像素,我们设 t + d t t + dt t+dt 时刻,它运动到 ( x + d x , y + d y ) (x + dx, y + dy) (x+dx,y+dy) 处。由于灰度不变,有:
I ( x + d x , y + d y , t + d t ) = I ( x , y , t ) \boldsymbol{I}(x+\mathrm{d} x, y+\mathrm{d} y, t+\mathrm{d} t)=\boldsymbol{I}(x, y, t) I(x+dx,y+dy,t+dt)=I(x,y,t)
对左边进行泰勒展开,保留一阶项,得:
I ( x + d x , y + d y , t + d t ) ≈ I ( x , y , t ) + ∂ I ∂ x d x + ∂ I ∂ y d y + ∂ I ∂ t d t \boldsymbol{I}(x+\mathrm{d} x, y+\mathrm{d} y, t+\mathrm{d} t) \approx \boldsymbol{I}(x, y, t)+\frac{\partial \boldsymbol{I}}{\partial x} \mathrm{d} x+\frac{\partial \boldsymbol{I}}{\partial y} \mathrm{d} y+\frac{\partial \boldsymbol{I}}{\partial t} \mathrm{d} t I(x+dx,y+dy,t+dt)I(x,y,t)+xIdx+yIdy+tIdt

因为假设了灰度不变,于是下一个时刻的灰度等于之前的灰度,从而:
∂ I ∂ x d x + ∂ I ∂ y d y + ∂ I ∂ t d t = 0 \frac{\partial \boldsymbol{I}}{\partial x} \mathrm{d} x+\frac{\partial \boldsymbol{I}}{\partial y} \mathrm{d} y+\frac{\partial \boldsymbol{I}}{\partial t} \mathrm{d} t = 0 xIdx+yIdy+tIdt=0

两边除以 d t dt dt,得:
∂ I ∂ x d x + ∂ I ∂ y d y = − ∂ I ∂ t d t \frac{\partial \boldsymbol{I}}{\partial x} \mathrm{d} x+\frac{\partial \boldsymbol{I}}{\partial y} \mathrm{d} y= -\frac{\partial \boldsymbol{I}}{\partial t} \mathrm{d} t xIdx+yIdy=tIdt

其中 d x / d t dx/dt dx/dt 为像素在 x x x 轴上运动速度,而 d y / d t dy/dt dy/dt y y y 轴速度,把它们记为 u u u v v v。同
∂ I / ∂ x \partial I/\partial x I/x 为图像在该点处 x x x 方向的梯度,另一项则是在 y y y 方向的梯度,记为 I x , I y I_x, I_y Ix,Iy。把图像灰度对时间的变化量记为 I t I_t It,写成矩阵形式,有:
[ I x I y ] [ u v ] = − I t \left[\begin{array}{ll} \boldsymbol{I}_{x} & \boldsymbol{I}_{y} \end{array}\right]\left[\begin{array}{l} u \\ v \end{array}\right]=-\boldsymbol{I}_{t} [IxIy][uv]=It

最小二乘获得运动轨迹

我们想计算的是像素的运动 u; v,但是该式是带有两个变量的一次方程,仅凭它无法
计算出 u , v u,v u,v。因此,必须引入额外的约束来计算 u , v u, v u,v。在 LK 光流中,我们假设某一个窗口内的像素具有相同的运动(注意是窗口,并不是整张图)。

考虑一个大小为 w × w w × w w×w 大小的窗口,它含有 w 2 w^2 w2 数量的像素。由于该窗口内像素具有
同样的运动,因此我们共有 w 2 w^2 w2 个方程:
[ I x I y ] k [ u v ] = − I t k , k = 1 , … , w 2 \left[\begin{array}{ll} \boldsymbol{I}_{x} & \boldsymbol{I}_{y} \end{array}\right]_{k}\left[\begin{array}{l} u \\ v \end{array}\right]=-\boldsymbol{I}_{t k}, \quad k=1, \ldots, w^{2} [IxIy]k[uv]=Itk,k=1,,w2

记:
A = [ [ I x , I y ] 1 ⋮ [ I x , I y ] k ] , b = [ I t 1 ⋮ I t k ] \boldsymbol{A}=\left[\begin{array}{c} {\left[\boldsymbol{I}_{x}, \boldsymbol{I}_{y}\right]_{1}} \\ \vdots \\ {\left[\boldsymbol{I}_{x}, \boldsymbol{I}_{y}\right]_{k}} \end{array}\right], \boldsymbol{b}=\left[\begin{array}{c} \boldsymbol{I}_{t 1} \\ \vdots \\ \boldsymbol{I}_{t k} \end{array}\right] A=[Ix,Iy]1[Ix,Iy]k,b=It1Itk
于是整个方程为:
A [ u v ] = − b \boldsymbol{A}\left[\begin{array}{l} u \\ v \end{array}\right]=-\boldsymbol{b} A[uv]=b

这是一个关于 u; v 的超定线性方程,传统解法是求最小二乘解。最小二乘在很多时候
都用到过:
[ u v ] ∗ = − ( A T A ) − 1 A T b \left[\begin{array}{l} u \\ v \end{array}\right]^{*}=-\left(\boldsymbol{A}^{T} \boldsymbol{A}\right)^{-1} \boldsymbol{A}^{T} \boldsymbol{b} [uv]=(ATA)1ATb

2. 三维运动表示

假设图像特征点 p p p 的路标为 P ( X , Y , Z ) P(X,Y,Z) P(X,Y,Z),它的图像点坐标是 ( x , y ) (x,y) (x,y),它的光流向量是 ( u , v ) (u,v) (u,v)。相机有一个三维的移动,它的光心为 O O O,它的坐标轴为 X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc,它的图像平面为 x c , y c x_c,y_c xc,yc。路标 P P P 位于图像平面的前面,它相对于相机的移动可以被分解成旋转移动 ω ⃗ = ( A , B , C ) T \vec{\omega}=(A, B, C)^{\mathrm{T}} ω =(A,B,C)T 和位移移动 T ⃗ = ( U , V , W ) T \vec{T}=(U, V, W)^{\mathrm{T}} T =(U,V,W)T

P ′ P' P 为在时间 t ′ t' t 上所对应的坐标系,对应关系可得:
( X ′ Y ′ Z ′ ) = R ( X Y Z ) + T \left(\begin{array}{l} X^{\prime} \\ Y^{\prime} \\ Z^{\prime} \end{array}\right)=R\left(\begin{array}{l} X \\ Y \\ Z \end{array}\right)+T XYZ=RXYZ+T
此时的旋转矩阵可以被估计,假设旋转参数的值较小,
R = ( 1 − C B C 1 − A − B A 1 ) R=\left(\begin{array}{ccc} 1 & -C & B \\ C & 1 & -A \\ -B & A & 1 \end{array}\right) R=1CBC1ABA1

综合上式,可得 X ′ X' X, Y ′ Y' Y, 和 Z ′ Z' Z(注意,此时的图像已经矫正过了)
x ′ = X ′ Z ′ = x − C y + B + U / Z − B x + A y + 1 + W / Z x^{\prime}=\frac{X^{\prime}}{Z^{\prime}}=\frac{x-C y+B+U / Z}{-B x+A y+1+W / Z} x=ZX=Bx+Ay+1+W/ZxCy+B+U/Z

y ′ = Y ′ Z ′ = C x + y − A + V / Z − B x + A y + 1 + W / Z y^{\prime}=\frac{Y^{\prime}}{Z^{\prime}}=\frac{C x+y-A+V / Z}{-B x+A y+1+W/ Z} y=ZY=Bx+Ay+1+W/ZCx+yA+V/Z

已知位移向量 ( u = x ′ − x , v = y ′ − y ) (u=x'-x,v=y'-y) (u=xx,v=yy),因此通过上面两式可以得到:
u = − A x y + B ( 1 + x 2 ) − C y + ( U − W x ) / Z 1 + A y − B x + W / Z u=\frac{-A x y+B\left(1+x^{2}\right)-C y+\left(U-W x\right) / Z}{1+A y-B x+W / Z} u=1+AyBx+W/ZAxy+B(1+x2)Cy+(UWx)/Z

v = − A ( 1 + y 2 ) + B x y + C x + ( V − W y ) / Z 1 + A y − B x + W / Z v=\frac{-A\left(1+y^{2}\right)+B x y+C x+\left(V-Wy\right) / Z}{1+A y-B x+W/ Z} v=1+AyBx+W/ZA(1+y2)+Bxy+Cx+(VWy)/Z

如果 ∣ W / Z ∣ < < 1 |W/Z|<<1 W/Z<<1 且相机的视场不是很大,且旋转参数小,我们可以将分母近似为1。

因此图像三维运动的参考光流向量可以表示为:
{ u = X ˙ Z − X Z ˙ Z 2 = ( U Z + B − C y ) − x ( W Z + A y − B x ) v = Y ˙ Z − Y Z ˙ Z 2 = ( V Z + C x − A ) − y ( W Z + A y − B x ) \left\{\begin{array}{l} u=\frac{\dot{X}}{Z}-\frac{X \dot{Z}}{Z^{2}}=\left(\frac{U}{Z}+B-C y\right)-x\left(\frac{W}{Z}+A y-B x\right) \\ v=\frac{\dot{Y}}{Z}-\frac{Y \dot{Z}}{Z^{2}}=\left(\frac{V}{Z}+C x-A\right)-y\left(\frac{W}{Z}+A y-B x\right) \end{array}\right. {u=ZX˙Z2XZ˙=(ZU+BCy)x(ZW+AyBx)v=ZY˙Z2YZ˙=(ZV+CxA)y(ZW+AyBx)

其中,
X ˙ = U + B Z − C Y , Y ˙ = V + C X − A Z , Z ˙ = W + A Y − B X \quad \dot{X}=U+B Z-C Y, \quad \dot{Y}=V+C X-A Z, \quad \dot{Z}=W+A Y-B X X˙=U+BZCY,Y˙=V+CXAZ,Z˙=W+AYBX

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值