首页 文章

在白色背景上找到形状 . 细化线条

提问于
浏览
1

我将以下图像作为测试图像:

enter image description here

我试图找到图像上的形状(和其他图像) . 我现在的approch如下:

  • 具有3x3内核的高斯模糊

  • 使用列表进行Canny边缘检测(获取所有形状)

  • 使用MorphOp.Close进行形态学以关闭边缘

  • FindContours查找轮廓

  • 每个轮廓的迭代:

  • 查找ApproxPolyDP

  • 查找ConvexHull

  • 如果船体尺寸<2,大约<200或船体尺寸> 50000,或者约<100的arclength,则丢弃

  • 绘制凸包

此方法生成以下图像,其中绘制了凸包:
enter image description here

这几乎是完美的,但请注意这些线条被视为轮廓事件 - >供应商和事件 - >文档) . 在查看边缘信息时,很明显为什么会这样:

enter image description here

线条被检测为轮廓 . 我怎样才能准备/找到形状以便不检测线条?我虽然有一些细化算法,但由于我也在处理现实生活中的图像,因此很难找到有效的阈值 . 以下是真实生活图像的示例,其中难以进行细化,因为细化通常要求图像在黑白中是单色的 .

enter image description here

你会怎么做?是否有一些方法来确定轮廓/凸包是线,矩形还是类似的东西?

1 回答

  • 1

    我最终使用重叠测试和凸性扫描的混合 . 凸性扫描凸壳和实际轮廓之间的误差 . 如果此误差超过一定量,则忽略船体 . 重叠只是按位使用并检测两个凸包的重叠 . 如果它们重叠超过95%,则忽略其中一个 .

相关问题