对无序顺序坐标进行排序以获得区域轮廓

时间:2015-03-06 10:23:26

标签: algorithm sorting date-sorting

输入是我从区域中找到轮廓时得到的序列。 该序列由该区域周围的像素组成。

但是当我得到序列时,由于使用递归,这个序列没有被排序。 我怎样才能对这个序列进行排序?

输出应该是一个在同一点开始和结束并通过所有点的电路(如果需要,可能会忽略几个点)。

2 个答案:

答案 0 :(得分:0)

如果区域是凸的,那么您需要做的就是找到像素集的convex hull。如果区域也可以是凹的,那么你就不可能解决问题 - 轮廓可以通过多种方式重建,并且每个轮廓都是同样可能的(除非提供进一步的信息)。

答案 1 :(得分:0)

你说你的这些要点代表某个地区的轮廓。如果确实如此,你可以去搜索最近的邻居。

但仅此一点可能非常慢,因此请确保您实施一些启发式算法,以降低您需要计算的点之间的距离,以便找到最近的邻居。

最简单的方法是将您的世界划分为网格状图案,然后首先尝试搜索与原点相同的网格单元格中的可能邻居。

如果到同一网格单元格中所有点的距离大于从原点到最近单元格边界的距离,也要检查该相邻网格单元中共享相同边框的点。

这种方法的最大优点是,如果区域形状是凸形或凹形,它并不在意。