【问题标题】:MATLAB image processing of small circles小圆圈的MATLAB图像处理
【发布时间】:2011-11-13 15:05:19
【问题描述】:

我有一个看起来像这样的图像:

我有一个任务,我应该把所有的瓶子都围在它们的开口周围。我创建了一个简单的算法并开始使用它。我的算法如下:

  • 对原始图像设置阈值
  • 在其中做一些形态学开场
  • 填补空洞
  • 使用区域道具分隔图像的一部分,以便仅选择相当于瓶口的区域。
  • 找到每个的质心并在每个瓶子周围画一个圆圈。

我按照上面的算法做了,但是我在图像的某些部分画了一个圆圈。这是因为我选择了区域,因为瓶口的区域和剩余的噪音几乎相同。所以我得到了一个这样的数字。

对图像应用的处理如下所示:

在原始图像上绘制圆圈后我的最终图像是这样的:

我想我可以处理多余的圆圈,即因为图像的一些白色部分仍然存在,如下图 2 所示。这可以使用 regionproping 过滤掉偏心。这是一个好主意还是有其他方法可以解决这个问题?我将如何处理玻璃后面的其他瓶子并选择它们?

【问题讨论】:

标签: matlab image-processing


【解决方案1】:

你为你的问题提供了很好的示例图片!

您可以用来检测剩余瓶子(如果有的话)的一件事是瓶子放置的明确定义的结构。 瓶子的 4 x 5 网格应该比较容易定位,当网格找到后,您可以测试是否在每个预期的瓶子位置检测到瓶子。

对于额外检测到的瓶子,您可以使用形状特征,例如

  • 偏心,
  • 第一个胡时刻
  • 周长与面积的平方之间的比率(对于圆形而言最小化)details here

如果您能够检测到网格,应该很容易将其定位为异常值(远离预期的瓶子位置)并相应地丢弃。

祝你的项目好运!

【讨论】:

    【解决方案2】:

    我使用了与 midtiby 的第三个建议相同的方法,使用面积和周长之间的比率,称为形状因子:

    4π * 面积/周长^2

    从轮廓跟踪图像(从阈值图像)中检测圆圈并取得巨大成功;

    http://www.empix.com/NE%20HELP/functions/glossary/morphometric_param.htm

    关于 4 个未找到的瓶子,如果不事先了解您正在查看的内容(如使用 4 x 5 网格讨论过的,然后从每个单元格的中心查看),这是相当棘手的。我确实认为,从轮廓列表中,大多数是瓶盖(您可以使用形状因子进行测试),但是,一个是大矩形。如果你能找到矩形的末端(从面积最大的轮廓),然后从第三张图像中删除它,你会留下部分圆圈。如果你然后轮廓跟踪那些部分圆圈并使用形状因子/曲线检测等的混合可能有帮助吗?是的,再次祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 2014-10-27
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      相关资源
      最近更新 更多