Mahotas 简明教程
Mahotas - Morphological Operators
形态学算子是一组图像处理技术,有助于修改图像中对象的形状、大小和空间关系。它们就像用于对图像内的对象进行重新整形或处理的工具。
想象一下,你有一幅包含各种对象(例如圆形、方形和线段)的图片。形态学算子允许你以不同的方式更改这些对象的形状。
例如,你可以放大或缩小它们,平滑其边缘,移除细小的细节或填补缝隙。
为了实现这些变换,形态学算子使用涉及扫描图像的数学运算,扫描图像时使用一种称为结构元素的特殊图案。此结构元素定义在操作期间要考虑的每个像素周围的邻域形状和大小。
Mahotas and Morphological Operators
Mahotas 提供了一套全面的形态学算子,这些算子可以应用于二值、灰度或多通道图像。这些算子使用经过优化的算法实现,使其适用于具有大规模数据集的实际应用程序。
让我们看看可以在 mahotas 中执行的一些形态学操作 −
Conditional Erosion
条件腐蚀是一种形态学操作,根据用户定义的条件保留图像中的结构。它有选择地腐蚀图像的区域,所述区域基于第二个称为标记图像的图像指定的条件。
这项操作仅在标记图像具有非零值的位置侵蚀图像。
下图显示条件侵蚀 −
Conditional Dilation
条件膨胀类似于条件侵蚀,但操作方式相反。它根据标记图像指定的条件有选择性地扩张图像区域。
这项操作仅在标记图像具有非零值的位置膨胀图像。
下图显示条件膨胀 −
Regional Maxima
区域最大值是指图像中在邻域内具有最高强度的点。它们表示图像中的局部峰值或显着特征。
Mahotas 中的区域最大值操作符识别这些局部最大值并将其标记为前景像素。
下图显示区域最大值 −
Regional Minima
区域最小值是指图像中在邻域内具有最低强度的点。它们表示图像中的局部盆地或洼地。
Mahotas 中的区域最小值操作符识别这些局部最小值并将其标记为背景像素。
下图显示区域最小值 −
Example
在以下示例中,我们要执行上述所有形态学操作 −
import mahotas as mh
import matplotlib.pyplot as plt
import numpy as np
image = mh.imread('nature.jpeg', as_grey=True).astype(np.uint8)
# Dilation
dilated_image = mh.dilate(image, Bc=mh.disk(8))
plt.title("Dilated Image")
plt.imshow(dilated_image)
plt.show()
# Erosion
plt.title("Eroded Image")
eroded_image = mh.erode(image, Bc=mh.disk(8))
plt.imshow(eroded_image)
plt.show()
# Opening
plt.title("Opened Image")
opened_image = mh.open(image)
plt.imshow(opened_image)
plt.show()
# Closing
plt.title("Closed Image")
closed_image = mh.close(image)
plt.imshow(closed_image)
plt.show()
# Conditional Dilation
plt.title("Conditional Dilation")
g = image * 6
cdilated_image = mh.cdilate(image, g)
plt.imshow(cdilated_image)
plt.show()
# Conditional Erosion
plt.title("Conditional Erosion")
scaled_image = image * 0.5
scaled_image = scaled_image.astype(np.uint8)
ceroded_image = mh.cerode(image, scaled_image)
plt.imshow(ceroded_image)
plt.show()
# Regional Maxima
plt.title("Regional Maxima")
regional_maxima = mh.regmax(image)
plt.imshow(regional_maxima)
plt.show()
# Regional Minima
plt.title("Regional Minima")
regional_minima = mh.regmin(image)
plt.imshow(regional_minima)
plt.show()
获得的输出如下所示 −
Dilation:
Erosion:
Opened Image:
Closed Image:
Conditional Dilation:
Conditional Erosion:
Regional Maxima:
Regional Minima:
我们将在此部分的剩余章节中详细讨论所有形态学算子。