我试图将移动的物体与移动的相机隔离开来,以便稍后可以对它们应用一些进一步的处理算法,但我似乎有点卡住了。
到目前为止,我正在使用 OpenCV 并从 PyrLKOpticalFlow 获得稀疏光流。我工作的一般想法是找到与图像中的背景点不同移动的特征,然后找到这些移动不同的特征的集群,将其计为移动对象以进行进一步跟踪/处理。我的问题是,虽然我找到了几篇使用这种策略的学术论文,但到目前为止,我还没有找到一种简单的方法来为自己完成它。
使用此光流数据从移动相机检测移动物体的好方法是什么?这甚至是最好的方法,还是有一些我可能忽略的更简单的方法?
最佳答案
我设法在 OpenCV 中找到了一种或多或少满足我要求的方法。
在使用 GoodFeaturesToTrackDetector 和 PyrLKOpticalFlow(给我 prevPts 和 nextPts)找到两个连续图像之间的稀疏光流点后,我使用 findHomography 和 RANSAC 来估计由于相机移动引起的运动,同时排除由于独立移动物体引起的异常值。然后我使用 perspectiveTransform 来扭曲 prevPts 以解释相机运动(给我 warpedPts)。然后,我可以将 warpedPts 与 nextPts 进行比较,以找到移动的物体。
最终结果是,即使相机移动,如果对象是静止的,warpedPts 和 nextPts 中的点之间也没有太大变化,而当跟踪点位于移动对象上时,变化很大。从那里开始,只需根据运动的接近度和相似性对运动点进行分组即可。
关于opencv - 使用光流识别移动物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939794/