OpenCV 4.10.0
开源计算机视觉
|
枚举 | |
枚举 | cv::KmeansFlags { cv::KMEANS_RANDOM_CENTERS = 0 , cv::KMEANS_PP_CENTERS = 2 , cv::KMEANS_USE_INITIAL_LABELS = 1 } |
k 均值标记 更多... | |
函数 | |
double | cv::kmeans (InputArray data, int K, InputOutputArray bestLabels, TermCriteria criteria, int attempts, int flags, OutputArray centers=noArray()) |
查找集群中心,并将输入样本分组到集群中。 | |
模板<typename _Tp , 类 _EqPredicate > | |
int | cv::partition (const std::vector< _Tp > &_vec, std::vector< int > &labels, _EqPredicate predicate=_EqPredicate()) |
将元素集拆分为等价类。 | |
#include <opencv2/core.hpp>
k 均值标记
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 均值算法,查找 cluster_count 个簇的中心,并将输入样本分组在簇的周围。作为输出,\(\texttt{bestLabels}_i\) 包含样本的基于 0 的簇索引,该样本存储在样本矩阵的第 \(i^{th}\) 行。
data | 用于聚类的数,需要一个具有浮动坐标的 N 维点的数组。此数组的示例可以是
|
K | 用来对数据集进行拆分的簇数。 |
bestLabels | 输入/输出整型数组,用于存储每个样本的簇索引。 |
criteria | 算法终止的条件,即最大迭代次数和/或所需的精度。将精度指定为 accuracy.epsilon。一旦在某些迭代中每个簇中心的移动幅度均小于 accuracy.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。 |