基于python脚本语言开发的数字图像处理包很多,比如说PIL,Pillow,openCV,scikit-image等。
对这些包进行一个简单的比较,PIL和Pillow只提供最基础的数字图像处理,功能有限;openCV实际上是一个C++库,只是提供了python的接口,更新速度非常慢。
scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,正好与matlab一样,因此,我们最终选择scikit-image进行数字图像处理。
因为scikit-image是基于scipy进行运算的,因此安装numpy和scipy是必须的。要进行图片的显示,还需要安装matplotlib包,综合起来,需要的包有:
python>=2.6
Numpy>=1.6.1
Cython>=0.21
Six>=1.4
Scipy>=0.9
Matplotlib>=1.1.0
NetworkX>=1.8
Pillow>=1.7.8
dask[array]>=0.5.0
安装起来非常费事,尤其是scipy,在windows上基本安装不上。
这里推荐安装Anaconda,它把以上需要的包都集成在一起,因此我们实际上从头到尾只需要安装Anaconda软件就好。其他什么都不用装。
Anaconda的安装非常简单,到官网下载相应的版本即可。
安装完成后,打开windows的命令提示符:
输入conda list就可以查询现在安装了哪些库,常用的numpy,scipy名列其中。如果我们还有什么包没有安装上,可以运行conda install 来进行安装。(是我们需要安装的包的名称)
如果某个包的版本不是最新的,运行conda update *就可以更新了。
三.简单测试
anaconda自带了一款编辑器spyder,我们以后就可以用这款编辑器来编写代码。
我们编写一个程序来测试一下安装是否成功,改程序用来打开一张图片并显示。首先准备一张图片,然后打开spyder,编写如下代码:
from skimage import io
img = io.imread('e:/bear.jpg')
io.imshow(img)
然后点击上面工具栏的绿色三角进行运行,最终显示。
四skimage包的子模块
skimage包的全称为scikit-image SciKit(toolkit for SciPy),ta是对scipy.ndimage进行了扩展,提供了更多的图片处理功能。ta是由python语言编写,由scipy社区开发和维护。skimage包由许多的子模块组成,各个子模块提供不同的功能。主要的子模块列表:
- io 读取、保存、显示图片和视频
- data 提供一些测试图片和样本数据
- color 颜色空间变换
- filters 图像增强、边缘检测、排序滤波器、自动阈值等
- draw 操作与numpy数组上的基本图形绘制,包括线条、矩形、圆和文本等。
- transform 几何变换或者其他变换,如旋转、拉伸和拉东变换
- morphology 形态学操作,如开闭运算和骨架提取。
- exposure 图片强度调整,如亮度的调整和直方图均衡等。
- feature 特征检测与提取。
- measure 图像属性的测量,如相似性或者等高线等。
- segmentation 图像分割
- restoration 图像恢复
- util 通用函数
用到一些图片处理的操作函数时,需要导入对应的子模块,如果需要导入多个模块,则用逗号隔开。eg:
from skimage import io,data.color