C++ 计算全局运动opencv 2.4.x C++;
这里有两张照片,一张是在外科医生采取行动前拍摄的,另一张是在手术后拍摄的 之前: 之后: 差异:(前后)+128。(增加128只是为了获得更好的图像) 如白色箭头所示,存在影响所有对象的全局运动 因此,我需要对其进行估计,以便获得关于现场发生的情况的更有价值的信息。 我已经知道,C++ 计算全局运动opencv 2.4.x C++;,c++,opencv,opencv3.0,motion-detection,C++,Opencv,Opencv3.0,Motion Detection,这里有两张照片,一张是在外科医生采取行动前拍摄的,另一张是在手术后拍摄的 之前: 之后: 差异:(前后)+128。(增加128只是为了获得更好的图像) 如白色箭头所示,存在影响所有对象的全局运动 因此,我需要对其进行估计,以便获得关于现场发生的情况的更有价值的信息。 我已经知道,opencv3.0在这方面很有帮助,它实现了一些方法来估计两个图像或两个点列表之间的主要运动。但到目前为止,我使用的是OpenCV 2.4.x,因为我的机器上已经安装了库,因此我正在寻找替代解决方案或任何其他符合我
opencv3.0
在这方面很有帮助,它实现了一些方法来估计两个图像或两个点列表之间的主要运动。但到目前为止,我使用的是OpenCV 2.4.x
,因为我的机器上已经安装了库,因此我正在寻找替代解决方案或任何其他符合我要求的代码。您正在寻找一种算法:
结果
cv::calcOpticalFlowFarneback(img1, img2, flowField, 0.5, 3, 10, 5, 5, 1.1)
在以下流场中,您可以清楚地看到变化:
对于全局运动检测:
- 如果全局运动非常小(如示例中所示),则可以对运动向量设置阈值:丢弃小值
- 如果它更大,找到主导运动矢量并从所有矢量中减去它。然后将小值丢弃
cv::calcOpticalFlowFarneback(以前的图像,图像,流场,0.5,3,10,5,5,1.1)
,但我真的无法理解您是如何获得此图像的?这是我得到的链接显示了稀疏光流方法(例如,几个关键点的流)。Farneback光流直接作用于图像,因此返回每个像素的流矢量