当前位置: 首页 > news >正文

scikit-image (skimage) 完整API参考文档

scikit-image (skimage) 完整API参考文档

包含:
IO操作 - 图像读取、保存、显示
滤波处理 - 边缘检测、平滑、阈值分割
形态学 - 腐蚀、膨胀、开闭运算、分水岭
图像分割 - SLIC、Chan-Vese、随机游走等
特征检测 - 角点、斑点、HOG、LBP等
几何变换 - 旋转、缩放、仿射、透视、Hough变换
测量分析 - 区域属性、轮廓检测、形状分析
图像恢复 - 各种去噪算法、去模糊
曝光调整 - 直方图操作、强度调整
颜色空间 - RGB/HSV/LAB等转换
绘图工具 - 几何形状绘制
实用工具 - 数据类型转换、噪声添加

目录

  • 简介
  • 安装和导入
  • 核心子模块详解
    • skimage.io - 图像输入输出
    • skimage.filters - 图像滤波
    • skimage.morphology - 形态学操作
    • skimage.segmentation - 图像分割
    • skimage.feature - 特征检测
    • skimage.transform - 图像变换
    • skimage.measure - 测量和分析
    • skimage.restoration - 图像恢复
    • skimage.exposure - 曝光调整
    • skimage.color - 颜色空间转换
    • skimage.draw - 绘图功能
    • skimage.util - 实用工具
  • 实际应用案例
  • 最佳实践

简介

scikit-image是一个基于SciPy构建的开源图像处理库,专门为Python设计。它提供了广泛的图像处理算法,包括分割、几何变换、颜色空间操作、分析、滤波、形态学、特征检测等功能。

核心特点

  • 🔬 科学计算导向:基于NumPy数组,与科学计算生态系统完美集成
  • 🎯 算法丰富:涵盖图像处理的各个方面,从基础到高级
  • 📚 易于学习:API设计简洁直观,文档完善
  • 🔧 模块化设计:功能按模块组织,便于使用和维护
  • 🚀 高性能:底层使用Cython优化,支持多维数组操作

安装和导入

安装

# 使用pip安装
pip install scikit-image# 使用conda安装
conda install scikit-image# 安装所有依赖
pip install scikit-image[optional]

基本导入

import skimage
from skimage import io, filters, morphology, segmentation
from skimage import feature, transform, measure, restoration
from skimage import exposure, color, draw, util
import numpy as np
import matplotlib.pyplot as plt

核心子模块详解

skimage.io - 图像输入输出

图像读取、保存和显示功能。

主要函数

imread(fname, as_gray=False, plugin=None, **plugin_args)

读取图像文件。

参数:

  • fname (str): 文件路径
  • as_gray (bool): 是否转换为灰度图像
  • plugin (str): 指定读取插件
from skimage import io# 读取彩色图像
image = io.imread('image.jpg')# 读取为灰度图像
gray_image = io.imread('image.jpg', as_gray=True)# 读取多帧图像(如TIFF堆栈)
image_stack = io.imread('stack.tif', plugin='tifffile')
imsave(fname, arr, plugin=None, check_contrast=True, **plugin_args)

保存图像到文件。

参数:

  • fname (str): 输出文件路径
  • arr (ndarray): 图像数组
  • check_contrast (bool): 是否检查对比度
# 保存图像
io.imsave('output.png', processed_image)# 保存时指定质量(JPEG)
io.imsave('output.jpg', image, quality=95)
imshow(arr, plugin=None, **plugin_args)

显示图像。

# 显示图像
io.imshow(image)
io.show()# 使用matplotlib显示
import matplotlib.pyplot as plt
plt.imshow(image)
plt.axis('off')
plt.show()

其他有用函数

# 获取可用插件
print(io.available_plugins)# 读取图像集合
image_collection = io.ImageCollection('*.jpg')
for img in image_collection:print(img.shape)

skimage.filters - 图像滤波

各种图像滤波和边缘检测算法。

边缘检测

sobel(image, mask=None, axis=None)

Sobel边缘检测。

from skimage import filters# Sobel边缘检测
edges = filters.sobel(gray_image)# 指定方向
edges_x = filters.sobel(gray_image, axis=1)  # 水平边缘
edges_y = filters.sobel(gray_image, axis=0)  # 垂直边缘
canny(image, sigma=1.0, low_threshold=None, high_threshold=None)

Canny边缘检测。

# Canny边缘检测
edges = filters.canny(gray_image, sigma=2, low_threshold=0.1, high_threshold=0.2)
prewitt(image, mask=None)

Prewitt边缘检测。

edges = filters.prewitt(gray_image)

平滑滤波

gaussian(image, sigma=1, output=None, mode='nearest')

高斯滤波。

# 高斯平滑
blurred = filters.gaussian(image, sigma=2)# 多通道图像
blurred_color = filters.gaussian(color_image, sigma=1, multichannel=True)
median(image, disk(radius), out=None, mode='nearest')

中值滤波。

from skimage.morphology import disk# 中值滤波去噪
denoised = filters.median(image, disk(2))

其他滤波器

# 双边滤波
bilateral = filters.bilateral(image, sigma_color=0.1, sigma_spatial=15)# 拉普拉斯滤波
laplacian = filters.laplace(gray_image)# Frangi滤波(血管增强)
frangi = filters.frangi(gray_image, sigmas=range(1, 10, 2))# Hessian滤波
hessian = filters.hessian(gray_image, sigmas=[1, 2, 3])

阈值分割

threshold_otsu(image, nbins=256)

Otsu自动阈值选择。

# Otsu阈值
thresh = filters.threshold_otsu(gray_image)
binary = gray_image > thresh
其他阈值方法
# 局部阈值
local_thresh = filters.threshold_local(gray_image, block_size=35)
binary_local = gray_image > local_thresh# 李氏阈值
li_thresh = filters.threshold_li(gray_image)# 三角阈值
triangle_thresh = filters.threshold_triangle(gray_image)# Yen阈值
yen_thresh = filters.threshold_yen(gray_image)

skimage.morphology - 形态学操作

数学形态学操作,用于图像的结构分析和处理。

结构元素

from skimage import morphology# 创建结构元素
disk_elem = morphology.disk(3)        # 圆盘
square_elem = morphology.square(3)    # 正方形
rectangle_elem = morphology.rectangle(3, 5)  # 矩形
star_elem = morphology.star(3)        # 星形

基本形态学操作

erosion(image, selem=None, out=None)

腐蚀操作。

# 腐蚀
eroded = morphology.erosion(binary_image, morphology.disk(2))
dilation(image, selem=None, out=None)

膨胀操作。

# 膨胀
dilated = morphology.dilation(binary_image, morphology.disk(2))
opening(image, selem=None, out=None)

开运算(先腐蚀后膨胀)。

# 开运算 - 去除小物体
opened = morphology.opening(binary_image, morphology.disk(3))
closing(image, selem=None, out=None)

闭运算(先膨胀后腐蚀)。

# 闭运算 - 填充小孔
closed = morphology.closing(binary_image, morphology.disk(3))

高级形态学操作

# 形态学梯度
gradient = morphology.gradient(binary_image, morphology.disk(2))# 顶帽变换(原图与开运算的差)
tophat = morphology.white_tophat(gray_image, morphology.disk(5))# 黑帽变换(闭运算与原图的差)
blackhat = morphology.black_tophat(gray_image, morphology.disk(5))# 骨架化
skeleton = morphology.skeletonize(binary_image)# 凸包
convex_hull = morphology.convex_hull_image(binary_image)# 去除小物体
cleaned = morphology.remove_small_objects(binary_image, min_size=100)# 去除小孔洞
filled = morphology.remove_small_holes(binary_image, area_threshold=50)

分水岭算法

from scipy import ndimage
from skimage.feature import peak_local_maxima# 距离变换
distance = ndimage.distance_transform_edt(binary_image)# 寻找局部最大值作为种子点
local_maxima = peak_local_maxima(distance, min_distance=20, threshold_abs=0.3)# 创建标记
markers = np.zeros_like(distance, dtype=int)
markers[tuple(local_maxima.T)] = np.arange(1, len(local_maxima) + 1)# 分水岭分割
labels = morphology.watershed(-distance, markers, mask=binary_image)

skimage.segmentation - 图像分割

图像分割算法集合。

区域生长分割

flood_fill(image, seed_point, new_value, ...)

漫水填充算法。

from skimage import segmentation# 漫水填充
filled = segmentation.flood_fill(image, (100, 100), 255, tolerance=0.1)

基于聚类的分割

slic(image, n_segments=100, compactness=10, ...)

SLIC超像素分割。

# SLIC超像素
segments = segmentation.slic(image, n_segments=300, compactness=10, sigma=1)# 显示超像素边界
boundaries = segmentation.mark_boundaries(image, segments)
felzenszwa

相关文章:

  • AI是什么?大模型、语料、训练、推理、机器学习、神经网络等专业名词如何关联
  • cuda编程笔记(2.5)--简易的应用代码
  • 5.5.2_1并查集
  • Vue3优质动画库推荐
  • 在windows10上安装nvm以及配置环境
  • Claude Code 是什么?
  • 刷leetcode hot100返航版--字符串6/15
  • python动态蓝色蝴蝶爱心
  • 目标分割数据集大全「包含分割数据标注+训练脚本」 (持续原地更新)
  • 设计模式(10)——创建型模式之抽象工厂
  • Python 文件操作详解
  • 电脑上的.ssh目录只做什么的
  • AMD Pensando Pollara 400Gbps网卡深度解析:超级以太网重塑AI集群网络架构
  • linux多线程之POSIX信号量
  • Python变量与数据类型全解析
  • AI视野:视频处理AI排行榜Top10 | 2025年05月
  • SpringJPA统计数据库表行数及更新频率
  • 37-Oracle 23 ai Shrink Tablespace(一键收缩表空间)
  • 打卡day54
  • Pico rp2040开发之Vscode插件+ c/c++独立环境搭建
  • 公司网站招聘的作用/思亿欧seo靠谱吗
  • 企业网站管理系统破解版/软文营销范文
  • 新河企业做网站/一键搭建网站工具
  • 给我免费的观看/福州seo招聘
  • 前端网站如何做全景图/长春做网站推荐选吉网传媒好
  • 网站安全风险提示单/新闻热点大事件