4

我有一个二维点向量,我正在尝试使用 meanshift 算法来检测数据中的多种模式,但对方法签名有点困惑。

1)我可以传入我的向量(如果可以,以什么形式)还是必须转换为 cv::Mat (如果可以的话如何?如果我有负值的点)。

2)我如何提取多种模式,从我所看到的函数只返回一个 int

谢谢

4

1 回答 1

4

OpenCV 的均值偏移实现是用于跟踪单个对象(作为CamShift 算法的一部分),因此我不相信它已经扩展到使用多模态分布来跟踪多个对象。它将为您提供一个以概率图像模式为中心的边界框(由 的参考通道返回cv::Rect window)。

您的数据是否表示为高斯的混合(或其他一些对称分布)?如果是这样,您也许可以使用k-means聚类来找到分布的均值(这将是对称分布的模式),尽管选择 k 会有问题。

或者,可能启用跟踪多个对象(或查找多个模式)的黑客可能涉及重复调用此函数,检索模式,然后从反投影直方图中将此部分归零。

至于你的数据形式,函数输入是通过 acv::Mat所以你必须转换你的数据。但是,您声称具有负值,并且此 opencv 函数需要一个概率直方图(通常您使用 图像从图像中计算出来cv::calcBackProject()),因此我希望如果您尝试将其传递给cv::Mat包含负值的值,它会抱怨。

于 2013-03-12T15:50:55.007 回答