opencv - 使用光流识别移动物体

标签 opencv computer-vision image-segmentation object-detection opticalflow

我试图将移动的物体与移动的相机隔离开来,以便稍后可以对它们应用一些进一步的处理算法,但我似乎有点卡住了。

到目前为止,我正在使用 OpenCV 并从 PyrLKOpticalFlow 获得稀疏光流。我工作的一般想法是找到与图像中的背景点不同移动的特征,然后找到这些移动不同的特征的集群,将其计为移动对象以进行进一步跟踪/处理。我的问题是,虽然我找到了几篇使用这种策略的学术论文,但到目前为止,我还没有找到一种简单的方法来为自己完成它。

使用此光流数据从移动相机检测移动物体的好方法是什么?这甚至是最好的方法,还是有一些我可能忽略的更简单的方法?

最佳答案

我设法在 OpenCV 中找到了一种或多或少满足我要求的方法。

在使用 GoodFeaturesToTrackDetector 和 PyrLKOpticalFlow(给我 prevPts 和 nextPts)找到两个连续图像之间的稀疏光流点后,我使用 findHomography 和 RANSAC 来估计由于相机移动引起的运动,同时排除由于独立移动物体引起的异常值。然后我使用 perspectiveTransform 来扭曲 prevPts 以解释相机运动(给我 warpedPts)。然后,我可以将 warpedPts 与 nextPts 进行比较,以找到移动的物体。

最终结果是,即使相机移动,如果对象是静止的,warpedPts 和 nextPts 中的点之间也没有太大变化,而当跟踪点位于移动对象上时,变化很大。从那里开始,只需根据运动的接近度和相似性对运动点进行分组即可。

关于opencv - 使用光流识别移动物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26939794/

相关文章:

python-3.x - 查找图像中的主线(及其角度)

python ,OpenCV : Increasing image brightness without overflowing UINT8 array

python - 使用 Conv3D 的 theano 实现的建议

python - 使用python制作加权直方图?

tensorflow - 如何在 Keras 中为图像分割加载图像掩码(标签)

python-3.x - 我想使用 python 的 opencv 分割大小为 32x32px 或更大的补丁

c++ - 使用 copyTo 函数断言失败 (C++)

python - 对齐和裁剪相同的场景图像

pandas - 实现 KNN 来找到最接近的颜色?

image-processing - Blob 检测和图像分割之间的差异