光流是指在连续的两帧图像中由于图像中的物体移动或者摄像头的移动导致的目标中目标像素的移动,光流是二维矢量场,表示了一个点从第一帧到第二帧的位移。
光流法的工作原理基于如下假设:
- 相邻帧之间的亮度恒定;
- 相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;
- 同一子图像的像素点具有相同或相似的运动。
传统算法——Lucas-Kanade算法:
第一帧中的像素I(x,y,t)I(x, y, t)I(x,y,t)表示在时刻t时像素I(x,y)I(x, y)I(x,y)的值,在经过Δt\Delta tΔt时间后,该像素在下一帧中移动了(Δx,Δy)(\Delta x, \Delta y)(Δx,Δy),在假设中,这些像素在理想情况下应当是相等的,即:
I(x,y,t)=I(x+Δx,y+Δy,t+Δt) I(x, y, t)=I(x + \Delta x, y + \Delta y, t + \Delta t) I(x,y,t)=I(x+Δx,y+Δy,t+Δt)
假设移动很小,那么右式可以用泰勒公式展开:
I(x+Δx,y+Δy,t+Δt)=I(x,y,t)+∂I∂xΔx+∂I∂yΔy+∂I∂tΔt+ϵ I(x + \Delta x, y + \Delta y, t + \Delta t) = I(x, y, t) + \frac{\partial I}{\partial x}\Delta x + \frac{\partial I}{\partial y}\Delta y + \frac{\partial I}{\partial t}\Delta t + \epsilon I(x+Δx,y+Δy,t+Δt)=I(x,y,t)+∂x∂IΔx+∂y∂IΔy+∂t∂IΔt+ϵ
其中ϵ\epsilonϵ是高阶无穷小,那么就可以得到:
∂I∂xΔx+∂I∂yΔy+∂I∂tΔt=0⇒∂I∂xΔxΔt+∂I∂yΔyΔt+∂I∂t=0 \frac{\partial I}{\partial x}\Delta x + \frac{\partial I}{\partial y}\Delta y + \frac{\partial I}{\partial t}\Delta t = 0 \Rightarrow \frac{\partial I}{\partial x}\frac{\Delta x}{\Delta t} + \frac{\partial I}{\partial y}\frac{\Delta y}{\Delta t} + \frac{\partial I}{\partial t} = 0 ∂x∂IΔx+∂y∂IΔy+∂t∂IΔt=0⇒∂x∂IΔtΔx+∂y∂IΔtΔ

光流法是计算连续两帧图像中像素运动的算法,基于亮度恒定假设。Lucas-Kanade算法通过最小二乘法求解光流。FlowNet系列利用深度学习估计光流,FlowNet2.0通过堆叠FlowNetS和FlowNetC解决小偏移估计问题。EPE损失用于评估预测精度。
最低0.47元/天 解锁文章
1622

被折叠的 条评论
为什么被折叠?



