使用形态学操作计算圆

Counting circles using morphological operations

我有一张图片,要求我数数圆圈的数量。我能够将其缩小为这张图片:

现在我可以使用连通分量的数量来得到答案了。没关系。但是是否可以仅使用形态学操作来做到这一点? (比如以某种方式获得这些 "circles" 的 "center" 然后简单地计算像素)

有一种称为细化的操作,它迭代地侵蚀图像但保留一组特定的点(这是一种条件侵蚀)。根据条件侵蚀中使用的结构元素集,该操作可以将对象缩减为一个点(或者对于其中有孔的对象,将其缩减为一个圆)。您可以应用细化,然后计算像素。

正如 Alex Alex 在 中提到的那样,在 MATLAB bwmorph(Image, 'shrink', Inf) 中执行此操作。

我发现最好最快的方法是 cv2.findcontours()