scikit-image 是专注于图像处理的Python包,全称是scikit-image SciKit。该包由python语言编写,由scipy 社区开发和维护,使用原生的Numpy数组作为图像对象。
一、skimage简介
skimage(scikit-Image)是基于python开发的数字图片处理包。python常用的图像处理包还有PIL,Pillow, opencv, scikit-image等。
PIL和Pillow只提供最基础的数字图像处理,功能有限。
opencv是一个c++库,提供了python接口,更新速度非常慢。
scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理。
skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能。它是。
2、主要子模块
skimage包由许多的子模块组成,各个子模块提供不同的功能。
子模块名称 | 主要实现功能 |
---|---|
color | 颜色空间变换 |
data | 提供一些测试图片和样本数据 |
draw | 操作于numpy数组上的基本图形绘制,包括线条、矩形、圆和文本等 |
exposure | 图片强度调整,如亮度调整、直方图均衡等 |
feature | 特征检测与提取等 |
filters | 图像增强、边缘检测、排序滤波器、自动阈值等 |
future | |
graph | |
io | 读取、保存和显示图片或视频 |
measure | 图像属性的测量,如相似性或等高线等 |
metrics | |
morphology | 形态学操作,如开闭运算、骨架提取等 |
registration | |
restoration | 图像恢复 |
segmentation | 图像分割 |
transform | 几何变换或其它变换,如旋转、拉伸和拉东变换等 |
util | 通用函数 |
三、skimage 环境
3.1 skimage包版本检查
查看是否已安装scikit-image, 可以使用如下命令
import skimage as ski
print(ski.__version__)
3.2 安装skimage
# update pip
python -m pip install -U pip
# install scikit-image
python -m pip install -U scikit-image
3.3 数据集下载
skimage 官方文档中示例中使用的数据默认不会离线下载,可通过如下方式下载到本地。为使本地的数据集能工作,需确保pooch已安装。
import skimage as ski
ski.data.download_all()
四、使用实例
如下介绍skimage在ct图像重建应用的例子,介绍skimage的基本使用。如图像读取、显示和保存,图像大小调整,radon和iradon变换。
import numpy as np
import skimage as ski
if __name__ == "__main__":
# load image
camera = ski.data.camera()
# save image
ski.io.imsave('camera.png', camera)
print(camera.shape[0], camera.shape[1])
# read image
img = ski.io.imread('camera.png')
# show image
ski.io.imshow(img)
# resize image
imgDim = (img.shape[0] * 2, img.shape[1] * 2)
scaled_img = ski.transform.resize(img, imgDim)
ski.io.imshow(scaled_img)
# radon transform
radon_img = ski.transform.radon(img, circle = False)
ski.io.imshow(radon_img)
# iradon transform
out_img = ski.transform.iradon(radon_img, circle = False)
output = ski.util.img_as_ubyte(out_img/out_img.max())
ski.io.imshow(output)
# save image
ski.io.imsave('camera_recon.png', output)