1

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

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

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

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

4

1 回答 1

0

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

我认为最快的 C++ 库是SMIL,你可以从 MatLab 调用它。C 中的另一种快速是那个(单次通过优化打开/关闭)。

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

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

于 2016-05-18T19:22:48.070 回答