【问题标题】:Proper contour break适当的轮廓中断
【发布时间】:2019-02-04 15:47:18
【问题描述】:

我想借助轮廓分析图像中的对象几何形状。这样可以确定角度和距离等参数:

但有些图像看起来像这样:

我试图在两个对象之间制作轮廓中断,问题是对象没有固定大小。他们可以改变他们的长度和形状。结果,轮廓中断是在错误的位置完成的,因此无法进行适当的分析。现在,轮廓中断与下部对象的大小相结合。正确的休息应该是这样的:

知道如何解决这个问题吗?

编辑:

带有输入图像的文件夹: https://ufile.io/v6fqs

例子:

【问题讨论】:

  • 您使用什么标准来决定应该在哪里分割/破坏轮廓?它是仅基于轮廓属性还是您使用底层图像中的任何特征?
  • 如果您向我们展示原始图像(没有二进制掩码)应该会更好,但我可以猜测,分水岭算法可能是您的解决方案。如果你有彩色图像,模糊 C 均值也很棒。
  • 如果你有完整的(连接的)轮廓,计算整个图像中的距离变换。然后计算蓝线像素到该边界的平均(或中值)距离。然后计算切割线到完整轮廓的最大距离,并测试它是否大于某个最小距离并且不低于平均(预期)距离。
  • @dhanushka 现在中断是基于下一行的长度,这是对象主体的模糊表示。这是一种非常不准确的方法,因为物体上的照明在移动时会发生变化。这导致相机捕获的光子更少。因此对象看起来更小/更大。它与一个 zylinder 对象一起工作。但这是一个螺旋。太不准确了。
  • @Meisam 我在 Edit 部分中添加了输入图像以及指向其文件夹的链接

标签: python opencv


【解决方案1】:

感谢您提供的示例和精心设计的问题。

这确实是一个大问题,尤其是考虑到医学成像。在我看来,答案在于斑点检测和分离方法。

一个好的方法是进行一些二值化、形态变换和搜索凸性缺陷 (https://docs.opencv.org/master/d3/dc0/group__imgproc__shape.html#gada4437098113fd8683c932e0567f47ba)。

convexityDefects =  cv.convexityDefects(contour, convexhull[, convexityDefects] )

我也认为这个帖子也可以帮助你:

http://answers.opencv.org/question/71691/single-blob-multiple-objects-ideas-on-how-to-separate-objects/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2014-07-12
    • 2022-09-29
    相关资源
    最近更新 更多