【发布时间】:2012-11-07 16:10:45
【问题描述】:
我想用 kmeans2 算法量化一些图像。 我的问题是找到(接近)最佳集群数。
有人知道如何估计集群的数量吗? 我的想法是在 hsv-color-space 中创建色调的累积直方图。但我不知道如何使用这些信息来估计计数。
问候
【问题讨论】:
标签: opencv k-means quantization
我想用 kmeans2 算法量化一些图像。 我的问题是找到(接近)最佳集群数。
有人知道如何估计集群的数量吗? 我的想法是在 hsv-color-space 中创建色调的累积直方图。但我不知道如何使用这些信息来估计计数。
问候
【问题讨论】:
标签: opencv k-means quantization
我个人使用以下方法:
伪代码:
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)或折衷(某处介于两者之间)。
【讨论】: