Mahotas图像闭运算



闭运算与开运算相反。首先进行膨胀操作,然后进行腐蚀操作。膨胀检查每个像素及其相邻像素。

如果任何相邻像素为白色,则中心像素也变为白色。此步骤有助于扩展或加厚图像,并可以填充小的间隙或孔洞。

膨胀之后,腐蚀检查每个像素及其相邻像素。如果任何相邻像素为黑色,则中心像素也变为黑色。此步骤有助于收缩或去除不需要的细节,例如细小的突出部分和内部噪声。

闭运算有效地关闭二值图像中的小孔或间隙,并平滑或消除小的前景区域。

Mahotas中的图像闭运算

要在Mahotas中执行闭运算,我们使用`mahotas.close()`函数。此方法允许顺序应用膨胀和腐蚀操作。

膨胀扩展剩余结构,同时通过用其邻域中的最大值替换每个像素来保留其关键特征。

随后,腐蚀通过考虑每个像素的邻域并将其替换为最小值来减少噪声并消除小的结构。

`mahotas.close()`函数

Mahotas中的`close()`函数有两个主要参数:二值图像和结构元素(内核)。该函数首先将膨胀操作应用于输入二值图像。然后,它将腐蚀操作应用于膨胀后的图像。

`close()`函数在执行膨胀和腐蚀操作后返回生成的闭合图像。

语法

以下是Mahotas中`close()`函数的基本语法:

mahotas.close(f, Bc={3x3 cross}, out={np.empty_like(f)})

其中,

  • f - 它是表示为NumPy数组的输入二值图像。

  • Bc - 它是用于膨胀和腐蚀操作的结构元素。默认为3x3十字形结构元素。

  • out - 它是输出数组。结果将存储在一个与输入图像f具有相同形状和数据类型的新数组中。

示例

在下面的示例中,我们对图像执行闭运算:

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image = mh.imread('sun.png')
closed_image = mh.close(image)
# Create a figure with subplots
fig, axes = plt.subplots(1, 2, figsize=(7,5 ))
# Display the original image
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].axis('off')
# Display the closed image
axes[1].imshow(closed_image, cmap='gray')
axes[1].set_title('Closed Image')
axes[1].axis('off')
# Adjust the layout and display the plot
plt.tight_layout()
plt.show()

输出

执行上述代码后,我们得到以下输出:

Closing Process Image

使用随机二值图像

我们还可以通过创建随机二值图像来对图像执行闭运算。为此,我们首先使用NumPy创建一个随机二值图像,其中像素为0(背景)或1(前景)。

一旦我们有了二值图像,就可以使用结构元素进行形态学闭运算。它将定义膨胀和腐蚀操作的邻域的形状和大小。

此外,我们创建一个与输入图像形状相同的空数组来存储结果。最后,我们得到最终的闭合图像。

示例

在这里,我们尝试通过创建随机二值图像来对图像执行闭运算:

import mahotas as mh
import numpy as np
from pylab import imshow, show
# Create a random binary image
image = np.random.randint(0, 2, size=(100, 50), dtype=np.bool_)
Bc=np.ones((3,3))
# Perform morphological closing with a 3x3 cross structuring element
result = mh.close(image, Bc, out=np.empty_like(image))
# Show the result
imshow(result)
show()

输出

生成的输出如下所示:

Using Random Binary Image

使用灰度图像

我们也可以在mahotas中对灰度图像执行闭运算。为此,我们在读取图像时只需传递`as_grey=True`参数,确保图像以灰度图像加载。接下来,我们将对灰度图像执行形态学闭运算。

示例

现在,我们在mahotas中对灰度图像执行闭运算:

import mahotas as mh
import numpy as np
from pylab import imshow, show
# Create a grayscale image
image = mh.imread('nature.jpeg', as_grey = True).astype(np.uint8)
Bc=np.ones((20,15))
# Perform morphological closing with a 3x3 cross structuring element
result = mh.close(image, Bc, out=np.empty_like(image))
# Show the result
imshow(result)
show()

输出

以下是上述代码的输出:

Grayscale Image Mahotas
广告