0

我有二维线段。我的目标是制作不同的封闭多边形。但是,在这里,当平行线段很少彼此靠近时,我想选择大多数外部线段。使用不同的线组合,我可以制作不同的封闭多边形。我正在思考并努力知道如何获得最外线,因为我需要由最外线组成的多边形。(多边形最后由相交的相邻线段构成。)我想得到一个包含所有线段的大边界框并获得质心,然后找到每条线的垂直距离。在这个过程中,我发现附近的线段彼此靠近(即靠近平行线)。所以,从那些附近的平行线中,我想要最外面的一条。(那是红色的)。但是如果我使用质心并比较距离,那么当存在更多凹凸转弯时,最长距离(在附近的平行线中)不会给出正确的最外侧线,因为在某些情况下,最外侧(红色)没有给出最长距离。我所拥有的是;每条线段的终点坐标。(即矢量数据)

所以,我正在寻找一些从附近平行线中获取大部分外线段的好方法。为了让您了解,我附上了我拥有的示例数据。最外面的线段以红色显示。最后,这条红线给了我多边形的边界。所以,我想从相应的附近平行黑线中得到红线。

注意:我的线段朝向不同的方向。而且不仅适用于 X 和 Y 轴。此外,附近的线并不总是与相邻的线成 90 或 180 角。

请给我一个方法。提前致谢

例如,如果 A,B 和 C,D 是附近的平行线段。那么最外线应该是B和C。但是,如果我比较与质心(O)的距离,那么我可以得到C作为最外线,但B不能得到,因为从O到B的距离小于O到A。我的方法在这种类型的地方失败。所以,看看替代品..

在此处输入图像描述

4

1 回答 1

1

查找线的一般方法是使用霍夫变换。

http://en.wikipedia.org/wiki/Hough_transform

但是,您提供的样本数据具有平行于轴的线。我不知道这是否是您所有数据的性质,但如果是这样,那么霍夫变换基本上分解为简单地按行对平行于 x 轴的线的强度求和,并按列对平行线求和到 y 轴。

您最终将得到两个一维数组,一个带有行总和,一个带有列总和。由于线条是黑色的,前景是白色的,因此这些数组中的局部最小值将表示沿每个轴的线条位置。由于您只需要外线,因此您不必对每一列/行求和 - 只需从图像的边缘开始计算总和,直到达到局部最小值。将线放置在轴上后,您可以遍历图像中的轴切割以找到线的端点。

于 2013-02-15T12:30:10.790 回答