1。问题
鉴于房屋屋顶的图像,我试图找到屋顶的轮廓。我标记了可用的数据(作为多边形顶点),我插入并创建真实图像,如下所示
我使用canny,hough-lines,LBP功能训练ML模型,结果看起来不错。模型输出显示在中间,测试图像上的叠加显示在右侧。
2。我需要什么。
最终输出应该是一组多边形,我需要找到应该绘制这些多边形的点(参见下图中突出显示的点)。因此输出可以设置为n个线段。其中每个线段是2个点[(x1,y1),(x2,y2)]
第3。我的想法/想法是什么;
一个。侵蚀,膨胀,开启,关闭,概括操作
虽然这些操作使上图中的线条更整洁,但它们无法帮助我找到我正在寻找的多边形顶点。
我想将(多个)线条拟合到图像中的白色像素(类似于hough线)。
这些线的交点将为我提供我正在寻找的多边形的顶点。
我想知道是否有更标准/更好的方法来实现上述目标。
答案 0 :(得分:1)
我认为HoughLinesP会帮助您实现目标。它将找到线段并将其输出到向量[x1,y1,x2,y2]
中,其中(x,y)对表示线段的起点和终点。
每个顶点应接近 2个或更多个线段的末尾。您将浏览每个端点并计算它们出现的次数。当您处理完所有点后,您可以消除任何少于2次出现的点。当然,您需要一些小的阈值来确定一个点是唯一的,因为行中的间隙有些伪造的代码:dist(point1, point2) < some_delta_threshold
我不确定你现在如何找到多边形,但希望这会提供一些帮助