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 - 处理图像

Mahotas 是一个流行的 Python 包,用于处理图像并对其执行各种操作。它可以对图像执行许多操作,例如将图像分成不同的部分、查找边缘以及识别其中的物体。

使用 Mahotas,我们可以找到一组图片中的所有人脸,或者识别一组图片中不同类型的花朵。我们还可以在 Mahotas 中找到图片中物体的边缘,或者使模糊的图片更清晰。

在本教程中,我们将简要概述如何使用 Mahotas 处理图像,包括如何读取、写入和显示图像。我们还将学习如何执行常见的图像处理任务,例如过滤、分割和特征提取。

使用 Mahotas 进行图像处理

Mahotas 的主要功能之一是它能够处理各种格式的图像,例如 JPEG、PNG 和 BMP。 Mahotas 为我们提供了读取和写入图像以及在不同格式之间转换图像的函数。

让我们学习如何在 Mahotas 中读取图像。

读取图像

在 mahotas 中读取图像是指从文件加载图像数据的过程。要在 Mahotas 中读取图像,我们可以使用 imread() 函数。此函数从文件中读取图像并返回表示该图像的 NumPy 数组。

示例

在下面的代码中,我们尝试读取名为"nature.jpeg"的 JPEG 图像 −

import mahotas as ms
image = ms.imread('nature.jpeg')
print ("图像已读取。")

输出

这将从文件"nature.jpeg"读取图像并将其存储在变量"image"中 −

图像已读取。

我们还可以像下面讨论的那样在读取图像后显示图像。

显示图像

读取图像后,我们可以使用 matplotlib 库显示它。matplotlib 库用于数据可视化和绘图。

示例

让我们使用 matplotlib 库显示图像"nature.jpeg",如下所示 −

import matplotlib.pyplot as plt
import mahotas as ms
image = ms.imread('nature.jpeg')
plt.imshow(image)
plt.show()

输出

以下是执行上述代码时获得的图像−

显示图像

写入图像

在 Mahotas 中写入图像是指将图像数据保存到特定图像格式(如 PNG、JPEG、BMP、TIFF 等)的文件中。我们可以使用 imsave() 函数在 Mahotas 中写入图像。此函数是 mahotas 中图像输入/输出 (IO) 模块的一部分。

示例

在下面的代码中,我们尝试保存名为"nature.jpeg"的图像 −

import mahotas as ms
image = ms.imread('nature.jpeg')
print ("图像已读取。")
# 将图像写入文件
ms.imsave('writing.jpeg', image)
print ("图像数据已保存。")

输出

这会将图像保存到文件"writing.jpeg" −

图像已读取。
图像数据已保存。

使用 Mahotas 进行图像处理

图像处理是指一组用于对图像执行多种操作的技术。这些技术有助于提高图像的视觉质量、提取有用信息或为分析做准备。

一些常见的图像处理任务是过滤、分割和特征提取。在本节中,我们将探讨 Mahotas 提供的一些关键图像处理功能。

过滤

在 mahotas 中,过滤是指修改图像的外观或从中提取有用信息。这是通过对图像应用数学运算来完成的。过滤过程可用于去除噪声、平滑图像、增强边缘或执行其他有助于提高图像质量或可解释性的操作。

示例

在下面的例子中,我们尝试使用高斯滤波器平滑图像。高斯滤波器使图像模糊,可用于降低噪声或平滑图像 −

import mahotas as ms
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像并将其转换为灰度
image = ms.imread('nature.jpeg', as_grey=True)
# 应用高斯滤波器
# 标准偏差
sigma = 15
gaussian_filtered = ms.gaussian_filter(image, sigma)
# 显示原始图像
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(gaussian_filtered, cmap='gray')
axes[1].set_title('Gaussian过滤')
axes[1].axis('off')
mtplt.show()
输出

这将使用标准偏差为 15 的高斯滤波器平滑原始图像,如下所示 −

图像过滤

分割

Mahotas 中的分割是指根据某些特征或标准将图像划分为有意义的区域或片段的过程。这些片段可以表示不同的对象、感兴趣的区域或图像内的不同区域。

示例

现在,让我们通过 Mahotas 的阈值分割进行图像分割的基本示例。阈值用于根据像素强度值将对象与背景分离。它通过将图像转换为二进制图像来简化图像,其中每个像素被分类为前景(对象)或背景 −

import mahotas as ms
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = ms.imread('nature.jpeg', as_grey=False)
# 执行阈值处理
# 通过取图像平均值计算阈值
threshold = np.mean(image)
# 创建二值图像
# 将每个像素值与阈值进行比较
binary_image = image > Threshold
# 执行连通分量分析
# 为二值图像中的每个连通区域分配唯一标签
labeled_image, num_objects = ms.label(binary_image)
# 显示原始图像
fig, ax = mtplt.subplots(1, 2, figsize=(9, 4))
ax[0].imshow(image, cmap='gray')
ax[0].set_title('Original Image')
# 显示分割图像
ax[1].imshow(labeled_image, cmap='rainbow')
ax[1].set_title('Segmented Image ({} objects)'.format(num_objects))
mtplt.show()
输出

上述代码的输出如下所示 −

原始分割图像

特征提取

Mahotas 中的特征提取是指从图像中提取有意义且信息丰富的特征的过程。这些特征可以表示图像的各个方面,例如纹理、形状或颜色,并可用于描述和区分图像中的对象或区域。

示例

现在,让我们看一个如何使用 Mahotas 计算 Zernike 矩的示例。Zernike 矩是一组数值,用于描述图像中对象或区域的形状。它们通过捕捉物体的轮廓和空间特征来提供物体形状的紧凑表示 −

import mahotas as ms
from mahotas.features import zernike_moments
# 加载图像
image = ms.imread('nature.jpeg', as_grey=True)
# 标准化图像
normalized_image = ms.stretch(image)
# 指定 Zernike 矩计算的半径
radius = 30
# 计算 Zernike 矩
moments = zernike_moments(normalized_image, radius)
# 打印结果矩
print(moments)
输出

执行上述代码后,我们得到一组描述图像形状特征的数值,如下所示 −

[0.31830989 0.01252728 0.00854837 0.00677556 0.00239216 0.00742469
0.00553204 0.00306795 0.01058855 0.00368774 0.00456233 0.01123103
0.00336877 0.00349998 0.00387494 0.0108442 0.00294575 0.00490895
0.00243368 0.01113736 0.00229705 0.00511743 0.00668574 0.0083512
0.00767699]