在MATLAB中在数据集群上绘制多边形的问题

时间:2010-06-01 18:18:00

标签: matlab polygon

我有一些数据点,我将它们划分为一些聚类,并使用一些聚类算法,如下图所示:(图像可能需要一些时间才能显示) alt text http://www.freeimagehosting.net/uploads/05a807bc42.png

每种颜色代表不同的簇。我必须在每个群集周围绘制多边形。因为这个原因我使用了convhull。但正如你所看到的那样,红色星团的多边形非常大,并且覆盖了许多区域,这不是我要寻找的区域。我需要在我的数据集周围绘制线条(ploygons)。例如,在上图中,我想要一个多边形,其绘制方式与具有3个分支的红色簇完全相同(和周围)。换句话说,在这种情况下,我需要一个带有3个分支的多边形来覆盖我的红色簇,而不是覆盖整个区域的大多边形。谁能帮我这个? 请注意解决方案应该是通用的,因为群集会在算法的每次运行中发生变化,因此需要采用一般的方式。

2 个答案:

答案 0 :(得分:3)

我不确定这是一个完全指定的问题。我看到这个问题的变种经常出现。

为什么在这里无法真正回答:想象六个点,三个在等边三角形中,另外三个在等边三角形内,在同一个方向上。

这周围的船体是什么?它只是凸壳吗?它是内三角形,有三条线刺出来吗?三角形的相对大小是什么关系?您是否必须指定该参数?

答案 1 :(得分:0)

如果您的群集非常紧凑,您可以尝试以下方法:

  1. 创建一个网格,比如间距为0.1。
  2. 如果至少有一个数据点覆盖它,则将网格中的每个像素设置为1,如果没有数据点覆盖像素,则将像素设置为0。
  3. 你可能需要在你的面具上运行imclose,以填补由于运气不好而没有上色的小洞。
  4. 使用例如提取边框像素。 bwperim。这是您正在寻找的多边形的轮廓。