Mahotas - 扩大图像
在图像处理中,扩大图像是指扩展图像的像素。
扩大过程将在图像边缘周围添加像素。发生这种情况的原因是算法查看图像中的每个像素并检查其相邻像素。
如果任何相邻像素是对象的一部分,它会将这些像素添加到对象的边界。
在 Mahotas 中扩大图像
在 Mahotas 中扩大图像是指将像素数添加到图像区域的边界。此操作通常用于增强或修改图像中的形状和结构。
我们可以使用 dilate() 函数在 mahotas 中扩大图像。它用于通过使用结构元素 B 来扩展元素 A。
结构元素是一个定义每个像素周围邻域的小矩阵或形状。它用于确定在扩张过程中应考虑哪些像素。
mahotas.dilate() 函数
mahotas.dilate() 函数将输入图像和结构元素作为参数,并返回一个新的 Numpy 数组。
输出像素的值确定为邻域中所有像素的最大值。如果任何相邻像素的值为 1,则将输出像素设置为 1。
dilate() 函数逐个像素扫描图像,并检查结构元素定义的邻域。
如果任何相邻像素是对象的一部分,则扩张操作会将这些像素添加到对象的边界,使其变大。
语法
以下是 mahotas − 中 dilate() 函数的基本语法
mahotas.dilate(A, Bc=None, out=None, output=None)
其中,
A − 它是将执行扩张的输入图像。它可以是代表灰度或二进制图像数据的 2D 或 3D NumPy 数组。
Bc(可选) − 它是用于扩张的结构元素。默认值为 None。
out(已弃用)/ output(可选) − 它指定用于存储结果的输出数组。如果未提供,则创建一个新数组并作为输出返回。
示例
以下是使用 dilate() 函数在 mahotas 中扩大图像的基本示例 −
import mahotas as mh import matplotlib.pyplot as plt import numpy as np image = mh.imread('nature.jpeg', as_grey=True).astype(np.uint8) # 使用大小为 3x3 的方形核执行扩张 dilated_image = mh.dilate(image, Bc=mh.disk(3)) # 创建带有子图的图形 fig, axis = plt.subplots(1, 2, figsize=(7,5 )) # 显示原始图像 axes[0].imshow(image) axes[0].set_title('Original Image') axes[0].axis('off') # 显示扩张图像 axes[1].imshow(dilated_image, cmap='gray') axes[1].set_title('Dilated Image') axes[1].axis('off') # 调整布局并显示图 plt.tight_layout() plt.show()
输出
执行上述代码后,我们得到如下输出 −

使用不同结构元素大小进行扩张
我们还可以使用不同的结构元素大小来扩张图像,以增强图像的不同方面。这些元素是使用 Mahotas disk() 函数以不同大小创建的。
通过为结构元素选择不同的半径或大小,我们可以实现不同的效果。首先,我们使用最大的结构元素进行扩张。然后,我们继续使用较小的结构元素进行额外的扩张。
这种方法使我们能够以多种方式修改图像,增强特定功能并实现所需的视觉效果。
示例
在这里,我们尝试使用不同的结构元素大小来扩张图像 −
import mahotas as mh import numpy as np from pylab import imshow, show image = mh.imread('nature.jpeg', as_grey=True).astype(np.uint8) # 使用最大的结构元素执行扩张 largest_se = mh.disk(8) dilated_image = mh.dilate(image, Bc=largest_se) # 使用较小的结构元素执行额外的扩张 smaller_se_1 = mh.disk(2) smaller_se_2 = mh.disk(5) dilated_image = mh.dilate(dilated_image, Bc=smaller_se_1) dilated_image = mh.dilate(dilated_image, Bc=smaller_se_2) # 显示扩张的图像 imshow(dilated_image) show()
输出
获得的输出如下所示 −

使用圆形内核进行扩张
要创建圆形− 形内核,我们可以使用 Mahotas 中的 disk() 函数。通过指定所需的半径,此函数会生成一个表示圆形内核的 NumPy 数组。
一旦我们准备好图像和圆形内核,我们就可以继续执行扩张。此操作将圆形内核应用于图像的每个像素,从而相应地扩大白色区域。
简单来说,它增强了图像中的明亮区域,使其变大。
示例
现在,我们正在使用圆形− 形内核扩张图像 −
import mahotas as mh import numpy as np from pylab import imshow, show # 加载图像 image = mh.imread('sun.png', as_grey=True).astype(np.uint8) # 半径为 5 的圆形核 radius = 5 kernel = mh.disk(radius) dilated_image = mh.dilate(image, kernel) # 显示扩张的图像 imshow(dilated_image) show()
输出
以下是上述代码的输出 −
