【发布时间】:2011-11-13 15:05:19
【问题描述】:
我有一个看起来像这样的图像:
我有一个任务,我应该把所有的瓶子都围在它们的开口周围。我创建了一个简单的算法并开始使用它。我的算法如下:
- 对原始图像设置阈值
- 在其中做一些形态学开场
- 填补空洞
- 使用区域道具分隔图像的一部分,以便仅选择相当于瓶口的区域。
- 找到每个的质心并在每个瓶子周围画一个圆圈。
我按照上面的算法做了,但是我在图像的某些部分画了一个圆圈。这是因为我选择了区域,因为瓶口的区域和剩余的噪音几乎相同。所以我得到了一个这样的数字。
对图像应用的处理如下所示:
在原始图像上绘制圆圈后我的最终图像是这样的:
我想我可以处理多余的圆圈,即因为图像的一些白色部分仍然存在,如下图 2 所示。这可以使用 regionproping 过滤掉偏心。这是一个好主意还是有其他方法可以解决这个问题?我将如何处理玻璃后面的其他瓶子并选择它们?
【问题讨论】:
-
另一个想法是使用Hough transform to detect circles
-
在 MATLAB Central File Exchange 上有几个免费提供的 circular Hough transform 的 MATLAB 实现。