如何根据此图片中的颜色减少区域数量?

时间:2016-05-13 10:08:11

标签: matlab image-processing cluster-analysis

我需要通过为每个相似的颜色区域提供一种颜色来显示3种颜色的图像。对于图像中的任何区域,结果应该是3种颜色而不会逃脱。

如何在一个区域中将相同颜色的小区域组合成可能的限制

我需要减少区域数量。

感谢 enter image description here

1 个答案:

答案 0 :(得分:2)

我希望你自己已经有了这些地区,否则你会问一个太广泛的问题,因为那些超级像素很难得到。

虽然我不会为你编写代码,但是会给你所需的步骤。

  1. 查找每个地区的平均颜色。记住要使用HSV,而不是RGB。另外,请记住H是圆形的。 [1 0 0][0 0 0]在HSV中的颜色相同。
  2. 通过例如KNN对这些颜色进行分类。创建3个集群,并计算这些集群的质心。那将是你的3种颜色
  3. 将3个质心和每个超像素的平均颜色转换为L*a*b*颜色空间。该空间被定义为“最接近的颜色是最相似的颜色”。基本上,计算超像素的每个平均值与3“类颜色”的欧氏距离。最小距离等级将是与该超像素对应的距离等级。
  4. 如果您使用Google /搜索Stackverflow,可以轻松找到有关这些步骤的帮助。

    正确编码的好处是你可以尝试更多的颜色,比如5或6,看看图像/分类是否更好。 3似乎很少颜色。