我想用 kmeans2 算法量化一些图像。 我的问题是找到(接近)最佳的簇数。
有人知道如何估计集群的数量吗? 我的想法是在 hsv 颜色空间中创建色调的累积直方图。但我不知道如何使用这些信息来估计计数。
问候
最佳答案
我个人使用以下方法:
伪代码:
int k = 1;
double oldCompactness = std::numeric_limits<double>::max();
double compactness = kmeans(data, k);
while( compactness/oldCompactness < threshold ) {
oldCompactness = compactness;
k = k + 1;
compactness = kmeans(data, k);
}
紧凑度随着集群数量的增加而降低(如果集群数量与数据点一样多,它应该变为零)。
我应该指出,最佳集群数量与应用程序密切相关。例如,在您的应用程序中,我不知道您是更喜欢高数据缩减(低 k)还是良好的视觉表示(高 k)或折衷(某处介于两者之间)。
关于opencv - 如何使用 kmeans2 估计用于颜色量化的簇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13458870/