KLT在OpenCV中是如何工作的?

9

我对openCV中KLT算法的逻辑很感兴趣。

据我所知,在OpenCV中寻找光流的图像首先被转换为灰度图像。

我很好奇的是,在运行算法时,我们需要一组特征进行计算。在openCV中找到光流方法所使用的特征是什么?

谢谢 :)


1
最有可能是哈里斯角点或好的特征跟踪。 - Abid Rahman K
这里有一个关于KLT的精彩视频,链接在这里。你一定要看看。 - Trect
1个回答

20

光流有两种类型:密集型和稀疏型。

密集型为所有像素寻找光流,而稀疏型为选定的点寻找光流。

选定的点可以是用户指定的,也可以使用任何OpenCV中可用的特征检测器自动计算得出。最常见的特征检测器包括GoodFeaturesToTrack,它使用cornerHarriscornerMinEigenVal查找角落。

然后将特征列表传递给KLT跟踪器calcOpticalFlowPyrLK

特征可以是图像中的任何点。最常见的特征是角落和边缘。


@e_phi... 什么是动态背景? - sgarizvi
一个正在改变的背景(例如移动的相机)。 - e_phi
1
是的,那个方法可以运行,但如果背景突然发生剧变,例如完全变成了不同的场景,那么它就会出现错误。事实上,使用不同的先进算法来利用光流是可行的。例如,在OpenCV的视频稳定模块中,可以将其用于视频稳定化。 - sgarizvi
除了TLD库中使用的中位数流跟踪器之外,在您看来,跟踪一个在不断变化的背景中的物体的最佳解决方案是什么?我可能有点离题了。 - e_phi
@e_phi... 这要取决于对象的类型和场景。在某些条件下,不同的跟踪器效果更好。通常情况下,使用SIFT/SURF特征描述符和基于Flann的特征匹配器的基于特征的对象跟踪可以完成任务。但是需要根据场景进行参数调整。 - sgarizvi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接