有很多方法可以在二进制图像上实现数学变换,例如imerode和imdilate。它还用于在二进制图像上使用这种简单的操作来检测不同的物体/形状,但我现在面临的问题是应用这种简单的操作,即在灰度图像上侵蚀,扩张和许多,而不将它们转换成二进制图像。 / p>
Selement = strel('disk',5);//disk type element used in morphology
erodeimage = imerode(image,selement);//this is only implement on binary image
以上代码用于二进制数学变换我如何在灰度图像上实现相同的概念。
注意:如果您有任何关于灰度数学变形的资源,请提供它或提供有用的链接
答案 0 :(得分:0)
MatLab中应该有一个数学形态学(MM)库。二进制图像上的MM操作显示为示例/插图,但大部分时间都以灰度级执行。
我认为最快的C ++库是SMIL,您可以从MatLab中调用它。 C中的另一个快速值是that one(在单次传递中优化打开/关闭)。
但是如果你想了解灰度级的膨胀,它的工作方式如下:对于给定的像素 p ,你可以分析其邻域中所有像素的值(由结构元素定义) ),你影响 p 附近的最高值。您可以为图像中的每个像素执行此操作。请参阅formula。
事实上,这是一个像中位数这样的等级过滤器,但不是取中间值,而是取最大值(或最小值为侵蚀)。显然,基本定义和它退出了更快的算法,就像我指出的库中开发的那样。