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

问题描述 投票:0回答:1

有很多方法可以在二值图像上实现数学变形,例如 imerode 和 imdilate。它还用于在二值图像上使用这种简单的操作来检测不同的对象/形状,但我现在面临的问题是应用这种简单的操作,即在灰度图像上进行腐蚀、膨胀等操作,而不将它们转换为二值图像。

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

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

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

matlab image-processing matlab-compiler mathematical-morphology
1个回答
0
投票

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

我认为最快的C++库是SMIL,你可以从MatLab调用它。 C 中的另一个快速方法是that one(在单次传递中优化打开/关闭)。

但是,如果您想了解灰度级的膨胀,那么它是如何工作的:对于给定像素 p,您分析其邻域中所有像素的值(由结构元素定义),并且影响 p 邻域中的最高值。您可以对图像中的每个像素执行此操作。请参阅公式

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

© www.soinside.com 2019 - 2024. All rights reserved.