如何在matlab中实现灰度形态学来检测灰度图像上的圆形物体?

How to implement Gray scale morphology to detect round object on gray scale image in matlab?

有很多方法可以在二进制图像上实现数学变形,例如 imerode 和 imdilate。它也用于检测不同的 object/shape 使用二值图像上的这个简单操作,但我现在面临的问题是应用这个简单的操作,即侵蚀,膨胀和许多灰度图像而不将它们转换成二值图像.

Selement = strel('disk',5);//disk type element used in morphology
erodeimage = imerode(image,selement);//this is only implement on binary image

以上代码用于二进制数学变形我如何在灰度图像上实现相同的概念。

Note: If your have any resources regarding gray scale math morph kindly provide it or provide useful link

MatLab 中应该有一个数学形态学 (MM) 库。二值图像上的 MM 操作显示为 example/illustration,但大部分时间以灰度级执行。

我认为最快的 C++ 库是 SMIL, and you can call it from MatLab. An other fast one in C is that one(单次优化 opening/closing)。

但是如果你想了解灰度级的膨胀,它是这样工作的:对于给定的像素 p 你分析其邻域中所有像素的值(由结构元素定义),并且您影响 p 邻域中的最高值。您为图像中的每个像素执行此操作。见 formula.

这实际上是一个类似于中值的排名过滤器,但不是取中值,而是取最大值(或最小值用于侵蚀)。显然,基本定义和它存在更快的算法,就像我指出的库中开发的那样。