- 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 - Haralick特征
- 标记区域的权重
- Mahotas - Zernike特征
- Mahotas - Zernike矩
- Mahotas - 排序滤波器
- Mahotas - 2D拉普拉斯滤波器
- Mahotas - 多数滤波器
- Mahotas - 均值滤波器
- Mahotas - 中值滤波器
- Mahotas - Otsu方法
- Mahotas - 高斯滤波
- Mahotas - 击中击不中变换
- Mahotas - 标记最大数组
- Mahotas - 图像均值
- Mahotas - SURF密集点
- Mahotas - SURF积分图像
- Mahotas - Haar变换
- 突出图像最大值
- 计算线性二值模式
- 获取标签边界
- 反转Haar变换
- Riddler-Calvard方法
- 标记区域的大小
- 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 ("The image is read.")
输出
这将从“nature.jpeg”文件读取图像并将其存储在变量“image”中 -
The image is read.
我们还可以像下面讨论的那样,在读取图像后显示它。
显示图像
读取图像后,我们可以使用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 ("The image is read.") # Write the image to a file ms.imsave('writing.jpeg', image) print ("The image data is saved.")
输出
这将图像保存到“writing.jpeg”文件中 -
The image is read. The image data is saved.
使用Mahotas进行图像处理
图像处理指的是一组用于对图像执行多个操作的技术。这些技术有助于提高图像的视觉质量、提取有用的信息或准备图像以进行分析。
一些常见的图像处理任务包括滤波、分割和特征提取。在本节中,我们将探讨Mahotas提供的一些关键图像处理函数。
滤波
在Mahotas中,滤波指的是修改图像的外观或从中提取有用的信息。这是通过对图像应用数学运算来完成的。滤波过程有助于去除噪声、平滑图像、增强边缘或执行其他有助于提高图像质量或可解释性的操作。
示例
在下面的示例中,我们尝试使用高斯滤波器平滑图像。高斯滤波器会模糊图像,这可以用来减少噪声或平滑图像 -
import mahotas as ms import numpy as np import matplotlib.pyplot as mtplt # Loading an image and converting it to grayscale image = ms.imread('nature.jpeg', as_grey=True) # Applying a Gaussian filter # Standard deviation sigma = 15 gaussian_filtered = ms.gaussian_filter(image, sigma) # Displaying the original image fig, axes = mtplt.subplots(1, 2, figsize=(9, 4)) axes[0].imshow(image, cmap='gray') axes[0].set_title('Original Image') axes[0].axis('off') # Displaying the filtered image axes[1].imshow(gaussian_filtered, cmap='gray') axes[1].set_title('Gaussian Filtered') axes[1].axis('off') mtplt.show()
输出
这将使用标准差为15的高斯滤波器平滑原始图像,如下所示 -
分割
在Mahotas中,分割指的是根据某些特征或标准将图像划分为有意义的区域或分割的过程。这些分割可以表示不同的对象、感兴趣区域或图像内的不同区域。
示例
现在,让我们通过使用Mahotas进行阈值化的基本图像分割示例。阈值化用于根据像素强度值将对象与背景分离。它通过将图像转换为二值图像来简化图像,其中每个像素都被分类为前景(对象)或背景 -
import mahotas as ms import numpy as np import matplotlib.pyplot as mtplt # Loading the image image = ms.imread('nature.jpeg', as_grey=False) # Performing thresholding # Calculating threshold value by taking mean of image threshold = np.mean(image) # creating binary image # comparing each pixel value with the threshold binary_image = image > threshold # Perform connected component analysis # assigns a unique label to each connected region in the binary image labeled_image, num_objects = ms.label(binary_image) # Displaying the original image fig, ax = mtplt.subplots(1, 2, figsize=(9, 4)) ax[0].imshow(image, cmap='gray') ax[0].set_title('Original Image') # Displaying the segmented 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 # Loading the image image = ms.imread('nature.jpeg', as_grey=True) # Normalizing the image normalized_image = ms.stretch(image) # Specifying the radius for Zernike moments calculation radius = 30 # Calculating Zernike moments moments = zernike_moments(normalized_image, radius) # Printing the resulting moments 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]