在矩阵中查找聚类

时间:2014-11-23 15:03:11

标签: image-processing matrix computer-vision cluster-analysis k-means

我正在尝试了解矩阵中的模式。我认为聚类适合于这样的任务,但不确定哪种聚类技术(k-mean,hierachy,dbscan等)是有效的。以下是一些例子。

  1. 此矩阵产生3个簇:对角线 包含1s,对角线上方的(右上角)三角形 包含0,以及包含随机的(左下)三角形 0,1的。

    1,0,0,0,0,0,0,0,0,0
    1,1,0,0,0,0,0,0,0,0
    0,1,1,0,0,0,0,0,0,0
    0,1,0,1,0,0,0,0,0,0
    0,0,1,0,1,0,0,0,0,0
    1,0,0,0,1,1,0,0,0,0
    1,1,1,1,1,0,1,0,0,0
    0,0,1,1,0,0,1,1,0,0
    1,1,1,0,1,0,1,1,1,0
    1,1,0,1,1,1,1,0,1,1
    
  2. 当使用k = 3-means时,我得到以下结果(0,1,2表示标签或簇)。显然,不是我要找的东西

        0 0 0 0 2 2 2 2 2 2
        0 0 0 0 2 2 2 2 2 2
        0 0 0 0 2 2 2 2 2 2
        0 0 0 0 2 2 2 2 2 2
        0 0 0 0 2 2 2 2 2 2
        0 0 1 1 1 1 1 2 2 2
        0 1 1 1 1 1 1 1 1 2
        1 1 1 1 1 1 1 1 1 1
        1 1 1 1 1 1 1 1 1 1
        1 1 1 1 1 1 1 1 1 1
    
    1. 这个产生4个簇:左上1,右上3x3矩阵为1,左下矩阵为1,其余为。

      1,0,0,0,1,1,1
      0,0,0,0,1,1,1
      0,0,0,0,1,1,1
      0,0,0,0,0,0,0
      1,1,1,0,0,0,0
      1,1,1,0,0,0,0
      1,1,1,0,0,0,0
      
    2. k = 4-mean给出以下结果,这也不是我想要的结果

          1 1 1 0 0 0 0
          1 1 1 0 0 0 0
          1 1 1 0 0 0 0
          2 2 1 3 3 3 3
          2 2 2 3 3 3 3
          2 2 2 3 3 3 3
          2 2 2 3 3 3 3
      

2 个答案:

答案 0 :(得分:0)

群集分析不是您正在寻找的工具。

您的要求可能比图像处理更具有图像处理性质。

群集不会在矩阵上“直观地”操作。一个单元格与集群中的另一个单元格非常相似,并且一个单元格主要使用矩阵,因为有快速实现可用,并且您最终会得到一个简短的概念和相当高的性能。 聚类使用的矩阵类型通常是距离矩阵

此外,大多数聚类算法都假定属性为连续

如果您只是将您的单元格映射到(x,y,value)我并不感到惊讶它不起作用。三个列的数值范围不匹配,值为0的“点”与值为1的点不同。这不是适合此类算法的数据模型。

问题是,我使用过的100种聚类算法都没有达到你想要的效果。

相反,图像分析技术将更有可能帮助您。

答案 1 :(得分:0)

我必须同意Anony-Mousse。没有我知道的聚类技术可以处理你的所有情况。

特别是,我建议您查看Image Segmentation上的维基百科页面。它提到了Anony-Mousse不赞成的那种方法的概括。例如,如果您使用(x,y,value)表示使得该值的权重明显大于该位置,则可能它可以在您的第二种情况下发现您想要的四个段。也就是说,我无法使用scipy kmeans函数来完成这项工作。