我需要一个算法来找到它们的角落,实际上我想要将它们的点总结为最小值,以dxf格式保存它们并且我将它们的点位置放在数组中。 像哈里斯或冲浪这样的简单算法找不到合适的点并因此返回太多的点。 你可以帮助我通过算法或想法或代码解决这个问题吗? (在c,c#,java,...中)或图像处理 提前谢谢。
答案 0 :(得分:1)
您想要实现的目标称为polygon vectorization 。
首先,您需要应用轮廓跟踪算法来按顺序获取像素。在这种情况下,似乎只需将像素链接到它们的邻居就可以了(请注意,在您的示例中,某些形状是开放的,您可能必须将邻域扩展为两个或三个像素。
然后通过Douglas-Peucker算法(https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm)或类似算法检测长直边。
你的一些角落很钝,你可能想把它们弄好。我建议丢弃形成平角的短段序列,并连接长的相邻段以恢复方角。
不要指望“完美”的结果。