2016-05-01 51 views
4

我正在寻找一种算法,它可以在具有坐标的数组上创建基于 的形状。我有两个50 x 50数组:一个x和第二个y坐标。从阵列创建形状的算法

总是有2500分。然后我有另一个50 x 50数组与我的坐标值。

我根据数值创建3到6个区域(例如0-100,200-300和300-500)。具有一定价值的点创造了区域。

我需要一个算法,它可以计算区域中是否只有一个形状或更多,并用颜色填充形状。 我需要这个,因为我必须为每个区域填充一定颜色的形状。 语言是C#。

  1. 示例点。
  2. 预期的边缘。
  3. 预期的结果

Example picture

+0

输入和概念并不完全清楚。你能否提供一些样本数据,以便我们能够理解你想要的并测试最终的算法? –

+0

看起来您正在尝试查找该集合的[Convex Hull](https://en.wikipedia.org/wiki/Convex_hull)。 [凸包算法](https://en.wikipedia.org/wiki/Convex_hull_algorithms)。 –

+0

请参阅以下网页:https://en.wikipedia.org/wiki/Minimum_bounding_box_algorithms – jdweng

回答

1

基本上,你可以使用分层聚类找到集群。

  1. 每个点是自己的集群
  2. 找到两个群集最接近在一起,直到满足结束条件

情侣细节的把它们合并

  • 重复:在步骤2中,你可以用很多指标找到最近的集群。所有点对之间的平均距离或最小距离可能是最佳选择

    在步骤3中,您可以在剩余的簇数为2(或其他数字)时停止。或者当距离超过阈值时停止。

    为了找到实际的轮廓,我建议提出一些优化功能,尽量减少轮廓的长度,同时最小化轮廓的面积。和一些启发式优化功能。

    类似于区域 - 常量*长度。