opencv - 如何使用 kmeans2 估计用于颜色量化的簇数

标签 opencv k-means quantization

我想用 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)或折衷(某处介于两者之间)。

可以看看here更多/更好的想法。或者 here (第 8 周)如果您喜欢视频。

关于opencv - 如何使用 kmeans2 估计用于颜色量化的簇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13458870/

相关文章:

c++ - 如何使用 openCV 将网格变形为目标网格?

python - K-means算法的种子值如何放置?

python - 与 SciPy kmeans 相比,使用 sklearn KMeans 是否有优势?

java - 颜色量化给出非常糟糕的结果?

c# - 使用 NQUANT 进行图像量化时出现的错误

opengl-es - 抖动 gouraud 着色的顶点色多边形以去除 strip

python-3.x - 删除黑色背景并使python open cv中的grabcut输出透明

opencv - Imshow() 在 stitching_detailed.cpp opencv 中不起作用

opencv - cvGetCaptureProperty 总是为 CV_CAP_PROP_FRAME_COUNT 返回 0!

python - 如何调整kMeans聚类灵敏度?