java - 定义轮廓是否闭合

标签 java algorithm image-processing recursion shapes

我需要一种方法来定义轮廓是代表直线还是闭合形状。在 Java 中,我有一个对象 Shape,它包含再次将其定义为单独对象的所有点。对象 Point 表示点的坐标。我尝试用递归解析形状,但对于更大的形状,超过 150 个点,性能非常差。我附上了一张我想要解析的形状的图片,以帮助更好地理解这个问题。

我正在放一张图片以便更好地可视化问题。

enter image description here

这只是展示了我得到的所有形状。我只想显示两个关闭的。

提前致谢。 瓦西尔·科塞夫

最佳答案

第一个想法:使用合适的 contour tracing algorithm得到一个有序的轮廓。如果你的轮廓是闭合的,你最终会回到第一点。

第二个想法:使用 flood filling algorithm : 如果你离开对象的边界框,它是打开的,否则它是关闭的。

第三个想法:使用形态学。删除孤立的像素。查找所有端点和分支点。删除所有分支点。没有端点的连通分量是闭合轮廓(“圆”),具有两个端点的连通分量是开放轮廓(“线”)。将没有端点的连通分量重新投影到原始图像,并只保留与它们有共同部分的连通分量。我认为这可以实时实现,而且最容易实现。

关于java - 定义轮廓是否闭合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491096/

相关文章:

java - 如何以可移植的方式从 java 运行 JMeter?

c++ - 在两台计算机上使用 float 的相同代码会给出两个不同的结果

image-processing - 高斯模糊和 FFT

algorithm - 计算数组中的反转 - 特例

php - 计算 m*n 矩阵从左上角到右下角的所有可能路径

image - 使用 node.js 跨平台调整图像大小

java - 由于 JPEG 错误,ImageIO 给我一个 CMMException

java - 我已经导入了 org.openqa.selenium.interactions.Actions 但仍然抛出错误 Actions can not parsed to a variable

java - 模型- View -控制和 Swing GUI

algorithm - 如何在二维矩阵中找到孔?