Mahotas 教程

Mahotas - 主页 Mahotas - 简介 Mahotas - 计算机视觉 Mahotas - 历史 Mahotas - 功能 Mahotas - 安装

Mahotas 处理图像

Mahotas - 处理图像 Mahotas - 加载图像 Mahotas - 将图像加载为灰色 Mahotas - 显示图像 Mahotas - 显示图像形状 Mahotas - 保存图像 Mahotas - 图像的质心 Mahotas - 图像的卷积 Mahotas - 创建 RGB 图像 Mahotas - 图像的欧拉数 Mahotas - 图像中的零分数 Mahotas - 获取图像矩 Mahotas - 图像中的局部最大值 Mahotas - 图像椭圆轴 Mahotas - 图像拉伸 RGB

Mahotas 颜色空间转换

Mahotas - 颜色空间转换 Mahotas - RGB 到灰度转换 Mahotas - RGB 到 LAB 转换 Mahotas - RGB 转棕褐色 Mahotas - RGB 到 XYZ 转换 Mahotas - XYZ 到 LAB 转换 Mahotas - XYZ 到 RGB 转换 Mahotas - 增加伽马校正 Mahotas - 拉伸伽马校正

Mahotas 标记图像函数

Mahotas - 标记图像函数 Mahotas - 标记图像 Mahotas - 过滤区域 Mahotas - 边界像素

Mahotas - 形态学操作

Mahotas - 形态运算符 Mahotas - 查找图像平均值 Mahotas - 裁剪图像 Mahotas - 图像偏心率 Mahotas - 叠加图像 Mahotas - 图像圆度 Mahotas - 调整图像大小 Mahotas - 图像直方图 Mahotas - 扩大图像 Mahotas - 腐蚀图像 Mahotas - 分水岭 Mahotas - 图像的开运算过程 Mahotas - 图像的闭合过程 Mahotas - 填补图像中的空洞 Mahotas - 条件性膨胀图像 Mahotas - 条件腐蚀图像 Mahotas - 图像的条件分水岭 Mahotas - 图像中的局部最小值 Mahotas - 图像的区域最大值 Mahotas - 图像的区域最小值

Mahotas - 高级概念

Mahotas - 图像阈值 Mahotas - 设置阈值 Mahotas - 软阈值 Mahotas - Bernsen 局部阈值 Mahotas - 小波变换 Mahotas - 制作图像小波中心 Mahotas - 距离变换 Mahotas - 多边形实用程序 Mahotas - 局部二元模式 Mahotas - 阈值邻接统计 Mahotas - Haralic 特征 Mahotas - 标记区域的权重 Mahotas - Zernike 特征 Mahotas - Zernike 矩 Mahotas - 等级过滤器 Mahotas - 2D 拉普拉斯过滤器 Mahotas - 多数过滤器 Mahotas - 均值滤波器 Mahotas - 中值滤波器 Mahotas - Otsu 方法 Mahotas - 高斯滤波 Mahotas - 命中与未命中变换 Mahotas - 标记最大值数组 Mahotas - 图像平均值 Mahotas - SURF 密集点 Mahotas - SURF 积分 Mahotas - Haar 变换 Mahotas - 突出显示图像最大值 Mahotas - 计算线性二进制模式 Mahotas - 获取标签边框 Mahotas - 逆 Haar 变换 Mahotas - Riddler-Calvard 方法 Mahotas - 标记区域的大小 Mahotas - 模板匹配 Mahotas - 加速稳健特征 Mahotas - 移除带边框的标签 Mahotas - Daubechies 小波 Mahotas - Sobel 边缘检测



Mahotas - 2D 拉普拉斯滤波器

拉普拉斯滤波器用于检测图像中的边缘和强度变化。从数学上讲,拉普拉斯滤波器定义为图像在 x 和 y 方向上的二阶导数之和。

二阶导数提供有关每个像素强度变化率的信息。

拉普拉斯滤波器强调图像中强度变化迅速的区域,例如边缘和角落。它的工作原理是从中心像素中减去周围像素的平均值,从而得出强度的二阶导数的度量。

在 2D 中,拉普拉斯滤波器通常由方阵表示,通常为 3×3 或 5×5。以下是 3×3 拉普拉斯滤波器的示例−

0  1  0
1 -4  1
0  1  0

Mahotas 中的 2D 拉普拉斯滤波器

要在 mahotas 中应用 2D 拉普拉斯滤波器,我们可以使用 mahotas.laplacian_2D() 函数。以下是 Mahotas 中 2D 拉普拉斯滤波器的工作原理概述 −

输入图像

  • 滤波器采用灰度输入图像。

卷积

  • 拉普拉斯滤波器使用内核对输入图像应用卷积运算。内核确定卷积期间应用于相邻像素的权重。

  • 卷积运算涉及将内核滑动到整个图像上。在每个像素位置,拉普拉斯滤波器将相应的核权重与邻域中的像素值相乘并计算总和。

拉普拉斯响应

  • 通过将拉普拉斯算子应用于图像可获得拉普拉斯响应。

    它表示与边缘相关的图像中的强度变化或不连续性。

mahotas.laplacian_2D() 函数

mahotas.laplacian_2D() 函数以灰度图像作为输入并对其执行 2D 拉普拉斯运算。生成的图像突出显示强度变化迅速的区域,例如边缘。

语法

以下是 mahotas 中 laplacian_2D() 函数的基本语法 −

mahotas.laplacian_2D(array, alpha=0.2)

其中,

  • array − 是输入图像。

  • alpha(可选) − 是 0 到 1 之间的标量值,用于控制拉普拉斯滤波器的形状。alpha 值越大,拉普拉斯滤波器对边缘的敏感度就越高。默认值为 0.2。

示例

以下是使用 laplacian_2D() 函数检测图像中的边缘的基本示例 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
image = mh.imread('picture.jpg', as_grey = True)
# 应用拉普拉斯滤波器
filtered_image = mh.laplacian_2D(image)
# 显示原始图像
fig, axis = mtplt.subplots(1, 2, figsize=(9, 4))
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].axis('off')
# 显示拉普拉斯滤波后的特色图像
axes[1].imshow(filtered_image, cmap='gray')
axes[1].set_title('Laplacian Filtered')
axes[1].axis('off')
mtplt.show()
输出

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

2D 拉普拉斯滤波器

缩放拉普拉斯响应

通过改变 alpha 参数,我们可以控制拉普拉斯响应的尺度。较小的 alpha 值(例如 0.2)会产生相对微妙的响应,突出显示更精细的细节和边缘。

另一方面,较大的 alpha 值(例如 0.8)会放大响应,使其更加明显并强调更突出的边缘和结构。

因此,我们可以在拉普拉斯滤波器中使用不同的 alpha 值来反映边缘检测的变化。

示例

在这里,我们在拉普拉斯滤波器中使用不同的 alpha 值来反映边缘检测的变化 −

import mahotas as mh
import matplotlib.pyplot as plt
# 加载示例图像
image = mh.imread('pic.jpg', as_grey=True)
# 应用具有不同 alpha 值的拉普拉斯滤波器
filtered_image_1 = mh.laplacian_2D(image, alpha=0)
filtered_image_2 = mh.laplacian_2D(image, alpha=0.5)
filtered_image_3 = mh.laplacian_2D(image, alpha=1)
# 以不同的比例显示原始图像和滤波后的图像
fig, axis = plt.subplots(1, 4, figsize=(12, 3))
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].axis('off')
axes[1].imshow(filtered_image_1, cmap='gray')
axes[1].set_title('Filtered Image (alpha=0)')
axes[1].axis('off')
axes[2].imshow(filtered_image_2, cmap='gray')
axes[2].set_title('Filtered Image (alpha=0.5)')
axes[2].axis('off')
axes[3].imshow(filtered_image_3, cmap='gray')
axes[3].set_title('Filtered Image (alpha=1)')
axes[3].axis('off')
plt.show()

输出

以下是上述代码的输出 −

2D 拉普拉斯滤波器 1

使用随机生成的数组

我们也可以在随机生成的数组上应用拉普拉斯滤波器。为此,首先我们需要创建一个随机的 2D 数组。我们可以使用 NumPy 库的 np.random.rand() 函数创建该数组。

此函数生成 0 到 1 之间的值,表示数组的像素强度。

接下来,我们将随机生成的数组传递给 mahotas.laplacian_2D() 函数。此函数将拉普拉斯滤波器应用于输入数组并返回过滤后的数组。

示例

现在,我们尝试将拉普拉斯滤波器应用于随机生成的数组 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
# 生成一个随机二维数组
array = np.random.rand(100, 100)
# 应用拉普拉斯滤波器
filtered_array = mh.laplacian_2D(array)
# 显示原始数组和滤波后的数组
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(array, cmap='gray')
plt.title('Original Array')
plt.axis('off')
plt.subplot(1, 2, 2)
plt.imshow(filtered_array, cmap='gray')
plt.title('Filtered Array')
plt.axis('off')
plt.show()

输出

上述代码的输出如下 −

随机生成的数组