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

如何在matlab中实现灰度形态学在灰度图像上检测圆形物体?,matlab,matlab-compiler,morphological-analysis,mathematical-morphology,image-morphology,Matlab,Matlab Compiler,Morphological Analysis,Mathematical Morphology,Image Morphology,有很多方法可以在二值图像上实现数学变形,如imerode和IMExplate。它还用于检测不同的物体/形状,使用这种简单的二值图像操作,但我现在面临的问题是,在灰度图像上应用这种简单的操作,即腐蚀、放大和许多,而不将它们转换为二值图像 Selement = strel('disk',5);//disk type element used in morphology erodeimage = imerode(image,selement);//this is only implement on b

有很多方法可以在二值图像上实现数学变形,如imerode和IMExplate。它还用于检测不同的物体/形状,使用这种简单的二值图像操作,但我现在面临的问题是,在灰度图像上应用这种简单的操作,即腐蚀、放大和许多,而不将它们转换为二值图像

Selement = strel('disk',5);//disk type element used in morphology
erodeimage = imerode(image,selement);//this is only implement on binary image
上面的代码是关于二进制数学变形的,我如何在灰度图像上实现相同的概念

注意:如果您有任何关于灰度数学变形的资源,请提供它或提供有用的链接


在MatLab中应该有一个数学形态学(MM)库。二进制图像上的MM操作如示例/图示所示,但大多数情况下是以灰度级执行的

<>我认为最快的C++库是,你可以从MATLAB调用它。C语言中的另一个快速方法是(在单道中优化开/关)

但是,如果你想了解灰度级的膨胀,下面是它的工作原理:对于给定的像素p,你分析其邻域中所有像素的值(由结构元素定义),然后影响邻域中的最高值p。您可以为图像中的每个像素执行此操作。看


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

在MatLab中应该有一个数学形态学(MM)库。二进制图像上的MM操作如示例/图示所示,但大多数情况下是以灰度级执行的

<>我认为最快的C++库是,你可以从MATLAB调用它。C语言中的另一个快速方法是(在单道中优化开/关)

但是,如果你想了解灰度级的膨胀,下面是它的工作原理:对于给定的像素p,你分析其邻域中所有像素的值(由结构元素定义),然后影响邻域中的最高值p。您可以为图像中的每个像素执行此操作。看


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

imerode
适用于灰度图像。来自:“IM2=imerode(IM,SE)侵蚀灰度、二进制或压缩二进制图像IM…”
imerode
适用于灰度图像。来自:“IM2=imerode(IM,SE)侵蚀灰度、二进制或压缩二进制图像IM…”