【发布时间】:2018-07-07 19:39:31
【问题描述】:
我需要一种算法来找到它们的角点,实际上我想将它们的点汇总到最小,以 dxf 格式保存它们,并且我将它们的点位置放在数组中。 harris 或 surf 等简单算法找不到合适的点,因此返回的点太多。 你能帮我用算法、想法或代码解决这个问题吗? (在 c、c#、java 中)或图像处理 提前致谢。
【问题讨论】:
标签: algorithm image-processing dxf corner-detection
我需要一种算法来找到它们的角点,实际上我想将它们的点汇总到最小,以 dxf 格式保存它们,并且我将它们的点位置放在数组中。 harris 或 surf 等简单算法找不到合适的点,因此返回的点太多。 你能帮我用算法、想法或代码解决这个问题吗? (在 c、c#、java 中)或图像处理 提前致谢。
【问题讨论】:
标签: algorithm image-processing dxf corner-detection
你想要实现的叫做多边形矢量化。
首先,您需要应用轮廓跟踪算法来按顺序获取像素。在这种情况下,似乎只需将像素链接到它们的邻居就可以了(请注意,在您的示例中,某些形状是开放的,您可能必须将邻域扩展到两个或三个像素。
然后通过 Douglas-Peucker 算法 (https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm) 或类似算法检测长直边。
你的一些角落是钝的,你可能想把它们修好。我建议丢弃形成平角的短线段序列,并加入长的相邻线段以恢复方角。
不要期望“完美”的结果。
【讨论】: