【问题标题】:Center of gravity of optical flow cluster光流簇的重心
【发布时间】:2012-11-14 14:20:54
【问题描述】:

我需要找到光流向量的重心。我应用了 OpenCV Lucas Kanade 函数,可以直观地看到光流向量。现在我如何对这些向量进行聚类并找到它们的重心?找到流向量聚集的位置是我想要实现的目标。

我得到的向量是 Point2f 前一个点和下一个点。我不确定如何对这些向量进行聚类。如果我使用 kmeans 函数,那么 Mat samples 的结构应该是什么?

kmeans(samples, clusterCount, labels, TermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 0.0001, 10000), 尝试, KMEANS_PP_CENTERS, 中心);

谢谢。

【问题讨论】:

    标签: opencv opticalflow


    【解决方案1】:

    这取决于您想要达到什么结果。如果你想对相同的移动像素进行聚类,而不是通过估计下一个点和前一个点之间的差异来计算运动,代码如下所示:

    std::vector<cv::Point2f> prevPts, currPts;
    ... run lucas kanade ...
    cv::Mat samples(prevPts.size(), 2, CV_32FC1);
    for(unsigned int n = 0; n < prevPts.size(); n++)
    {
      samples.at<float>(n,0) = currPts[n].x - prevPts[n].x;
      samples.at<float>(n,1) = currPts[n].y - prevPts[n].y;
    }
    ... run clustering
    

    这就像一种全局方法。但在大多数情况下,您还需要将职位考虑在内。比您必须考虑其他分割方法,或者您必须将位置添加为附加维度。

    【讨论】:

      猜你喜欢
      • 2020-06-10
      • 2012-11-03
      • 2018-08-19
      • 2012-11-17
      • 2017-03-25
      • 1970-01-01
      • 2021-06-13
      • 2021-04-04
      • 2013-09-29
      相关资源
      最近更新 更多