好的,所以我必须说 OpenCV 提供的示例 K-means 算法程序相当混乱。即使花了整个下午都没有得到完整的画面。这些是我想问的几个问题:
1)我如何将给定的图像转换为单列矩阵,因为 K-means 函数只接受这样的矩阵作为输入?我知道我必须使用 CvMat 函数,但无法弄清楚到底如何。
2)是否可以根据颜色强度进行聚类,使用一些预先确定的强度作为种子值?
最后但并非最不重要的一点,它会很高;如果有人可以提供任何详细解释 K-means 的链接,您将不胜感激。我已经经历了willowgarage和aishack的解释,仍然存在疑问。提前致谢 !!
这正是我想要做的:假设这是提供的图像
我的代码的输出应该有点像这样:
如您所见,在第二张图像中,由于阴影的影响被移除,我们得到了具有明确颜色层的图像。
现在为此我应用以下方法首先我根据图像的相应 LAB 值选择种子颜色。然后在获得种子值后,我尝试使用 K-means 聚类将相似的颜色聚类成一个确定的颜色层。(如上图所示)。