OpenCV 4.11.0
开源计算机视觉库
|
枚举 | |
枚举 | cv::KmeansFlags { cv::KMEANS_RANDOM_CENTERS = 0 , cv::KMEANS_PP_CENTERS = 2 , cv::KMEANS_USE_INITIAL_LABELS = 1 } |
k-means标志 更多… | |
函数 | |
double | cv::kmeans (InputArray data, int K, InputOutputArray bestLabels, TermCriteria criteria, int attempts, int flags, OutputArray centers=noArray()) |
查找聚类的中心并将输入样本分组到这些聚类周围。 | |
template<typename _Tp , class _EqPredicate > | |
int | cv::partition (const std::vector< _Tp > &vec, std::vector< int > &labels, _EqPredicate predicate=_EqPredicate()) |
将元素集拆分为等价类。 | |
#include <opencv2/core.hpp>
k-means标志
double cv::kmeans | ( | InputArray | data, |
int | K, | ||
InputOutputArray | bestLabels, | ||
TermCriteria | criteria, | ||
int | attempts, | ||
int | flags, | ||
OutputArray | centers = noArray() ) |
Python | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cv.kmeans( | data, K, bestLabels, criteria, attempts, flags[, centers] | ) -> | retval, bestLabels, centers |
#include <opencv2/core.hpp>
查找聚类的中心并将输入样本分组到这些聚类周围。
kmeans函数实现了一个k-means算法,该算法查找cluster_count个聚类的中心,并将输入样本分组到这些聚类周围。作为输出,\(\texttt{bestLabels}_i\)包含样本矩阵第\(i^{th}\)行中存储的样本的基于0的聚类索引。
data | 用于聚类的数据。需要一个具有浮点坐标的N维点数组。此数组的示例可以是:
|
K | 要将集合拆分的聚类数。 |
bestLabels | 输入/输出整数数组,用于存储每个样本的聚类索引。 |
criteria | 算法终止条件,即最大迭代次数和/或所需的精度。精度指定为criteria.epsilon。一旦在某个迭代中每个聚类中心移动的距离小于criteria.epsilon,算法就会停止。 |
attempts | 用于指定使用不同初始标记执行算法的次数的标志。算法返回产生最佳紧凑性(参见最后一个函数参数)的标签。 |
flags | 可以取cv::KmeansFlags值的标志 |
centers | 聚类中心的输出矩阵,每行代表一个聚类中心。 |
\[\sum _i \| \texttt{samples} _i - \texttt{centers} _{ \texttt{labels} _i} \| ^2\]
每次尝试后。选择最佳(最小)值,并由函数返回相应的标签和紧凑性值。基本上,您可以只使用函数的核心,将尝试次数设置为1,每次使用自定义算法初始化标签,使用(flags = KMEANS_USE_INITIAL_LABELS)标志传递它们,然后选择最佳(最紧凑)聚类。int cv::partition | ( | const std::vector< _Tp > & | vec, |
std::vector< int > & | labels, | ||
_EqPredicate | predicate = _EqPredicate() ) |
#include <opencv2/core/operations.hpp>
将元素集拆分为等价类。
泛型函数partition实现了一个\(O(N^2)\)算法,用于将一组\(N\)个元素拆分为一个或多个等价类,如http://en.wikipedia.org/wiki/Disjoint-set_data_structure所述。该函数返回等价类的数量。
vec | 存储为向量的元素集。 |
labels | 标签的输出向量。它包含与vec一样多的元素。每个标签labels[i]是vec[i] 的基于0的聚类索引。 |
predicate | 等价谓词(指向具有两个参数的布尔函数的指针,或具有方法bool operator()(const _Tp& a, const _Tp& b)的类的实例)。当元素肯定在同一类中时,谓词返回true;如果它们可能在同一类中也可能不在同一类中,则返回false。 |