MATLAB--光流法之Lucas-Kanade方法

本文详细介绍了Lucas-Kanade光流算法,包括光流约束方程、差分滤波器的使用、图像梯度计算及平滑处理,以及如何求解像素级别的光流向量。并通过实例展示了算法在视频帧间光流估计的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了计算两幅图像之间的光流,必须解决以下光流约束方程:

I_{_{x}}u+I_{_{y}}v+I_{_{t}}=0

其中:I_{x},I_{y}I_{t}是时空图像亮度导数;u是水平流;v是垂直光流。

Lucas-Kanade方法:

为了解决u和v的光流约束方程,Lucas Kanade方法将原始图像分割成更小的部分块,并在每个部分中假定kua个恒定速度。然后,在每块\Omega中将光流约束方程的加权最小二乘拟合到常数模型\left [ u,v \right ]^{T}。该方法通过最小化下列方程来实现这种拟合:

\sum _{x\subseteq \Omega }W^{2}\left [ I_{_{x}}u+I_{_{y}}v+I_{_{t}} \right ]^{2}

W是强调每个部分块中心的约束的窗口函数。求解极小化问题的方法是:

\bg_white \begin{bmatrix} \sum W^{2} I_{x}^{2}& \sum W^{2} I_{x}I_{y}\\ \sum W^{2} I_{y}I_{x}& \sum W^{2} I_{y}^{2} \end{bmatrix}\begin{bmatrix}u\\v\end{bmatrix}=-\begin{bmatrix}\sum W^{2} I_{x}I_{t}\\\sum W^{2} I_{y}I_{t}\end{bmatrix}

Lucas-Kanade方法使用差分滤波器[-1 1]计算I_{_{t}}

求u和v:

1,利用卷积核 [-1 8 0 -8 1] /12及其转置形式求 I_{_{x}} 和 I_{_{y}}.

2,使用核[1 1]计算图像1和图像2之间的I_{t}

3,平滑梯度分量I_{x}I_{y}I_{t},使用一个可分离的各向同性的5×5的核,其有效的一维系数是[1 4 6 4 1]/16.

4,使用以下方法求解每个像素的2×2线性方程:

如果:A=\begin{bmatrix} a & b\\ c & d \end{bmatrix}=\begin{bmatrix}\sum W^{2} I_{x}^{2}& \sum W^{2} I_{x}I_{y}\\ \sum W^{2} I_{y}I_{x}& \sum W^{2} I_{y}^{2} \end{bmatrix},那么:A的特征值为\lambda _{i}=\frac{a+b}{2}\pm \frac{\sqrt{4b^{2}+(a-c)^{2})}}{2};i=1,2

将特征值与阈值\tau进行比较,该阈值对应于为降低噪声阈值而输入的值。结果属于下列情况之一:

case1:\lambda _{1}\geqslant \tau ,\lambda _{2}\geqslant \tau,A是非奇异的,方程组是用克莱默法则求解的。

case2:\lambda _{1}\geqslant \tau ,\lambda _{2}<\tau,A是奇异(不可逆),标准化梯度流计算u和v。

case3:\lambda _{1}< \tau ,\lambda _{2}<\tau,u和v的光流为0。

 

%% Compute Optical Flow Using Lucas-Kanade Algorithm
% Read in a video file.

vidReader = VideoReader('viptraffic.avi');
%%
% Create optical flow object.
opticFlow = opticalFlowLK('NoiseThreshold',0.009);
%%
% Estimate and display the optical flow of objects in the video.
while hasFrame(vidReader)
    frameRGB = readFrame(vidReader);
    frameGray = rgb2gray(frameRGB);
  
    flow = estimateFlow(opticFlow,frameGray); 

    imshow(frameRGB) 
    hold on
    plot(flow,'DecimationFactor',[5 5],'ScaleFactor',10)
    hold off 
end

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值