我有2D线段。我的目标是制作不同的封闭多边形。但是,在这里,我想在几个平行线段彼此保持闭合时选择大多数外线段。使用不同的线组合,我可以制作不同的闭合多边形。我正在思考并努力知道如何获得大多数外线,因为我需要由最外面的线制作的多边形。 (Polyogns最后由交叉的相邻线段构成。) 我想要得到一个包含所有段的大型边界框并获得质心,然后找到每条线的垂直距离。在这个过程中,我发现附近的线段彼此靠近(即靠近平行线)。所以,从附近的平行线我想要最外面的一条线。 (那是红色的)。 但是如果我使用质心并比较距离,那么当存在更多的凹凸转弯时,最长距离(在附近的平行线之间)不会给出正确的最外线,因为有些情况最外面(红色)一个不给出最长的距离。我拥有的是什么;每个线段的终点坐标。 (即矢量数据)
所以,我正在寻找一些从附近的平行线获得大多数外线段的好方法。 为了便于您了解我附上了我拥有的样本数据。最外部的线段以红色显示。最后这条红线给了我多边形的边界。所以,我想从附近相应的平行黑线中得到红线。
注意:我的线段朝向不同的方向。而且不只是X& Y轴。此外,附近的线路不会与相邻的线路形成90度或180度角。
请建议我一个方法。提前谢谢
例如,如果A,B和C,D是附近的平行线段。然后,最外面的线应该是B和C.但是,如果我比较距质心(O)的距离,那么我可以得到C作为最外层,但是B不能得到距离从O到B的距离小于O到A.方法在这种类型的斑点中失败。所以,看看替代品..
答案 0 :(得分:1)
查找线条的一般方法是使用Hough变换。
http://en.wikipedia.org/wiki/Hough_transform
但是,您提供的样本数据具有与轴平行的线。我不知道这是否是你所有数据的性质,但如果是,那么Hough变换基本上分解为简单地将行的强度与行平行于x轴的行相加并且按行并行来求和行到y轴。
最终会有两个一维数组,一个有行和,一个有列和。由于线条为黑色且前景为白色,因此这些阵列中的局部最小值将表示沿每个轴的线位置。由于您只需要外部线,因此不必对每个列/行求和 - 只需从图像的边缘开始计算总和,直到达到局部最小值。将线放置在轴上后,您可以遍历图像中轴的切口以查找线的端点。