第二十九章:Python-mahotas库:图像处理的高效工具

打印 上一主题 下一主题

主题 1630|帖子 1630|积分 4890

一、mahotas库简介

   mahotas是一个功能强大的Python图像处理库,提供了丰富的图像处理算法和工具,包罗图像分割、特征提取、滤波、形态学操作等。它以简便的API和高效的性能著称,特别得当处理大型图像。资源绑定附上完整资料供读者参考学习!
二、常见操作示例

1. 图像读取与保存

Python示例代码

  1. import mahotas as mh
  2. # 读取图像
  3. image = mh.imread('演示图片4.jpg')
  4. # 保存图像
  5. mh.imsave('output.jpg', image)
复制代码
运行效果


2. 图像转换为灰度图

Python示例代码

  1. import mahotas as mh
  2. import matplotlib.pyplot as plt
  3. # 读取图像
  4. image = mh.imread('演示图片4.jpg')
  5. # 转换为灰度图像
  6. gray_image = image.mean(2)  # 对于RGB图像,计算每个像素的平均值
  7. # 显示灰度图像
  8. plt.imshow(gray_image, cmap='gray')
  9. plt.title('Gray Image')
  10. plt.axis('off')  # 关闭坐标轴
  11. plt.show()
复制代码
运行效果



3. 高斯滤波

Python示例代码

  1. import mahotas as mh
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. # 读取图像
  5. image = mh.imread('演示图片3.jpg')
  6. # 如果图像是彩色的,将其转换为灰度图像
  7. if len(image.shape) == 3:  # 检查是否为RGB图像
  8.     gray_image = image.mean(2)  # 计算每个像素的平均值
  9. else:
  10.     gray_image = image.copy()
  11. # 应用高斯滤波
  12. sigma = 20  # 高斯滤波的标准差
  13. smoothed_image = mh.gaussian_filter(gray_image, sigma)
  14. # 显示原始图像和滤波后的图像
  15. plt.figure(figsize=(12, 10))
  16. # 显示原始图像
  17. plt.subplot(1, 2, 1)
  18. plt.imshow(gray_image, cmap='gray')
  19. plt.title('原始图像',font='SimHei',fontsize=30)
  20. plt.axis('off')
  21. # 显示滤波后的图像
  22. plt.subplot(1, 2, 2)
  23. plt.imshow(smoothed_image, cmap='gray')
  24. plt.title('高斯滤波图像 (σ={})'.format(sigma),font='SimHei',fontsize=30)
  25. plt.axis('off')
  26. plt.tight_layout()
  27. plt.show()
复制代码
运行效果



三、高级示例

1. 分水岭算法进行图像分割

Python示例代码

  1. import mahotas as mh
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. from skimage.filters import sobel, threshold_otsu  # 修改这里
  5. from skimage import measure
  6. # 读取图像
  7. image = mh.imread('演示图片4.jpg')
  8. # 确保图像是彩色的
  9. if len(image.shape) != 3:
  10.     raise ValueError("图像必须是彩色的")
  11. # 转换为LAB颜色空间并提取亮度通道
  12. lab_image = mh.colors.rgb2lab(image)
  13. L = lab_image[:, :, 0]
  14. # 修改部分:使用skimage的Otsu阈值方法
  15. T = threshold_otsu(L)  # 这里替换为skimage的版本
  16. binary = L > T
  17. # 生成标记(使用连通组件)
  18. labeled_markers, num_regions = measure.label(binary, return_num=True)
  19. # 计算梯度并应用分水岭
  20. gradient = sobel(L)
  21. segmented = mh.cwatershed(gradient, labeled_markers)
  22. # 可视化
  23. plt.figure(figsize=(12, 10))
  24. plt.subplot(1, 2, 1)
  25. plt.imshow(image)
  26. plt.title('原始图片',font='SimHei',fontsize=30)
  27. plt.axis('off')
  28. plt.subplot(1, 2, 2)
  29. plt.imshow(segmented, cmap='nipy_spectral')
  30. plt.title('图像分割',font='SimHei',fontsize=30)
  31. plt.axis('off')
  32. plt.tight_layout()
  33. plt.show()
复制代码
运行效果





2. HOG特征提取

Python示例代码

  1. # 正确的 HOG 特征提取方法(使用 scikit-image)
  2. from skimage.feature import hog
  3. from skimage import io, color
  4. import matplotlib.pyplot as plt
  5. # 读取图像并转换为灰度
  6. image = io.imread('演示图片5.jpg')
  7. gray_image = color.rgb2gray(image)  # 转换为灰度(0-1 float)
  8. # 计算 HOG 特征
  9. hog_features, hog_image = hog(
  10.     gray_image,
  11.     orientations=9,                # 方向bin数量
  12.     pixels_per_cell=(8, 8),        # 每个cell的像素数
  13.     cells_per_block=(2, 2),        # 每个block的cell数
  14.     visualize=True,                # 返回可视化图像
  15.     channel_axis=None              # 明确指定单通道
  16. )
  17. print("HOG特征维度:", hog_features.shape)
  18. # 可视化结果
  19. plt.figure(figsize=(12, 6))
  20. plt.subplot(1, 2, 1)
  21. plt.imshow(image)
  22. plt.title('原始图像',font='SimHei',fontsize=30)
  23. plt.subplot(1, 2, 2)
  24. plt.imshow(hog_image, cmap='gray')
  25. plt.title('HOG特征提取',font='SimHei',fontsize=30)
  26. plt.show()
复制代码
运行效果





HOG 参数详解表:

参数类型默认值作用orientationsint9方向直方图的bin数目pixels_per_celltuple(8,8)每个cell的像素尺寸cells_per_blocktuple(2,2)每个block包含的cell数block_normstr'L2-Hys'标准化方法(可选L1/L2)visualizeboolFalse是否返回可视化图像channel_axisint/NoneNone多通道图像指定颜色轴 四、函数参数总结

函数名参数阐明imread读取图像文件,参数为文件路径。imsave保存图像文件,参数为文件路径和图像数据。rgb2gray将RGB图像转换为灰度图。gaussian_filter应用高斯滤波器,参数为图像和标准差。cwatershed分水岭算法,参数为图像和标记矩阵。hog提取HOG特征,参数为图像。 五、总结

   mahotas库以其高效的性能和简便的API,为图像处理提供了强大的支持。无论是底子的图像操作还是高级的特征提取,mahotas都能满足你的需求。盼望本文的示例能引发你的动手欲望,快来尝试吧!资源绑定附上完整资料供读者参考学习!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表