该博客将介绍光流的概念以及如何使用Lucas-Kanade方法来估计光流,并演示如何使用CV2.Calcoptilitticalflowpyrlk()跟踪视频中的特征点。
光流跟踪渲染如下:
它显示一个连续5帧移动的球。箭头指示其位移向量。
不是很严格 - 稀疏光流量点的痕量渲染如下:
它跟踪视频中多辆汽车的主要驾驶,共同驾驶,以及行人边缘的轨迹:
该代码不会检查下一个关键点的正确级别。因此,即使图像中的任何特征点消失了,光流也可能会发现下一个可能接近它的点。对于稳定的跟踪,转角点应该为在特定的时间间隔内检测到。
流程图如下:
优化版本 - 稀疏光流特性的跟踪效果如下:
查找功能点,每30帧一次向后检查光流动点,并且仅保留屏幕上仍然存在的特征点。如上所示,车辆不存在,并且会有一个长而不正确的轨迹跟踪线。
流程图如下:
原始图片与密集的光流跟踪GIF效应图表如下:
原始图片与密集的光流HSV渲染如下:
光流是由对象或摄像机的运动引起的图像对象之间明显运动的一种模式。它是2D向量,每个向量都是位移向量,这是从第一个帧到第二帧的显示点。
光流跟踪的前提是:1。对象的像素强度不会在连续帧之间变化;2.相邻像素具有相似的运动。
使用Harris Corner点检测器检查逆矩阵的相似性。这意味着转角点是一个更好的跟踪点。SHI-TOMASI CORTER PONTENT检测器比Harris角度检测器更好。
以下字段中有许多应用程序:
OPENCV提供了两种算法来计算光流,这些算法通过:CV2.Calcopticalflowpyrlk(),cv2.Calcopticticalfarneback实现;
输送光流量计算:
该方法传达了先前的帧,第一个点和下一帧;它返回下一点和一些状态号。如果找到下一点,则值为1,否则为零。
密集的光流量计算:
该方法将获得具有光流量矢量的2个通道阵列(u,v)。它们可以找到它们的大小和方向,然后对结果进行编码以实现更好的可视化。在HSV图像中,方向对应于该的颜色图像,幅度对应于值平面。
Flow = Cv2.CalcopticalflowFarneback(prvs,Next,None,0.5,3,3,5,1.2,0)