algorithm - 通过点位置或图像进行角点检测

标签 algorithm image-processing dxf corner-detection

我有一些简单的形状,这些形状不一定是规则的。 enter image description here

我需要一个算法来找到它们的角点,实际上我想将它们的点总结到最小,以 dxf 格式保存它们,并且我在数组中有它们的点位置。 像 harris 或 surf 这样的简单算法找不到合适的点并因此返回太多点。 你能帮我用算法、想法或代码来解决这个问题吗? (在 c、c#、java 中,...)或图像处理 提前致谢。

最佳答案

你想要实现的是所谓的多边形矢量化

首先,您需要应用轮廓跟随算法来按顺序获取像素。在这种情况下,似乎只需将像素链接到它们的邻居就可以了(请注意,在您的样本中,一些形状是开放的,您可能必须将邻域扩展到两个或三个像素。

然后通过 Douglas-Peucker 算法 (https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm) 或类似算法检测长直边。

你的一些角落是钝的,你可能想把它们修好。我建议丢弃形成平角的短线段序列,并加入相邻的长线段以恢复方角。

enter image description here

enter image description here

不要期待“完美”的结果。

关于algorithm - 通过点位置或图像进行角点检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48495679/

相关文章:

python-3.x - 如何使用ezdxf返回 'MTEXT'内的字符串?

delphi - 从 Delphi 应用程序将文本样式写入 DXF

c - C 是否有任何用于执行字符串添加的工具?

java - 在 Java 中获取 TreeSet 的 headSet 的时间复杂度是多少?另外,如果我调用 headSet 方法 'n' 次怎么办?

OpenCV 裁剪图像

matlab - 使用matlab从具有透视失真的图像中进行文本检测

python - 有没有办法找出A是否是B的子矩阵?

performance - 为什么 Map 实现应该覆盖 foreach?

遵循 3D 图像上的脊线路径的算法

opencv - 使用端点和凸出距离绘制圆弧。在 OpenCV 或 PIL 中