>>> from env_helper import info; info()
页面更新时间: 2023-04-15 20:57:48
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-7-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

9.1. scikit-image数字图像处理:环境安装与配置

一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点:

  1. 不开源,价格贵

  2. 软件容量大。一般3G以上,高版本甚至达5G以上。

  3. 只能做研究,不易转化成软件。

因此,我们这里使用python这个脚本语言来进行数字图像处理。

要使用python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是linux系统,安装都是非常简单的。

要使用python进行各种开发和科学计算,还需要安装对应的包。 这和matlab非常相似,只是matlab里面叫工具箱(toolbox),而python里面叫库或包。 基于python脚本语言开发的数字图片处理包,其实很多,比如PIL,Pillow, opencv, scikit-image等。

对比这些包,PIL和Pillow只提供最基础的数字图像处理,功能有限; opencv实际上是一个c++库,只是提供了python接口,更新速度非常慢。 到现在python都发展到了3.5版本,而opencv只支持到python 2.7版本; scikit-image是基于scipy的一款图像处理包, 它将图片作为numpy数组进行处理,正好与matlab一样,因此,我们最终选择scikit-image进行数字图像处理。

9.1.1. 需要的安装包

因为scikit-image是基于scipy进行运算的,因此安装numpy和scipy是肯定的。 要进行图片的显示,还需要安装matplotlib包,综合起来,需要的包有:

  1. Python

  2. Numpy

  3. Cython

  4. Six

  5. SciPy

  6. Matplotlib

  7. NetworkX

  8. Pillow

  9. dask[array]

Windows下的安装

scikit-image 需要的包比较多,安装起来非常费事,尤其是scipy,在windows上基本安装不上。

但是不用怕,我们选择一款集成安装环境就行了。 如果在 Windows 下,推荐使用 Anaconda, 它把以上需要的包都集成在了一起, 因此我们实际上从头到尾只需要安装Anaconda软件就行了,其它什么都不用装。

Linux 下的安装

推荐使用 Linux 发行版 Debian, 及其一系列衍生版本(包括 Ubuntu )。 这个发行版非常好地打包了一系列 Python 工具。 安装 scikit-image 非常简单。

使用下面的命令:

$ sudo apt install python3-skimage

9.1.2. 简单测试

anaconda自带了一款编辑器spyder,我们以后就可以用这款编辑器来编写代码。

我们简单编写一个程序来测试一下安装是否成功,该程序用来打开一张图片并显示。首先准备一张图片,然后打开spyder,编写如下代码:

>>> %matplotlib inline
>>>
>>> from skimage import io
>>> img=io.imread('foo1_x29d.jpg')
>>> io.imshow(img)
<matplotlib.image.AxesImage at 0x7fefb9effad0>
_images/sec01_setup_5_1.png

将其中的1.jpg 改成你的图片位置

然后点击上面工具栏里的绿色三角进行运行,最终显示

图1.4

如果右下角“ Ipython console” 能显示出图片,说明我们的运行环境安装成功。

我们可以选择右上角的 ” variable explorer” 来查看图片信息,如

图1.5

我们可以把这个程序保存起来,注意python脚本文件的后缀名为py.

9.1.3. skimage包的子模块

skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能。它是由python语言编写的,由scipy 社区开发和维护。skimage包由许多的子模块组成,各个子模块提供不同的功能。主要子模块列表如下:

子模块名称

主要实现功能

io

读取、保存和显示图片或视频

data

提供一些测试图片和样本数据

color

颜色空间变换

filters

图像增强、边缘检测、排序滤波器、自动阈值等

draw

操作于numpy数组上的基本图形绘制,包括线条、矩形、圆和文本等

transform

几何变换或其它变换,如旋转、拉伸和拉东变换等

morphology

形态学操作,如开闭运算、骨架提取等

exposure

图片强度调整,如亮度调整、直方图均衡等

feature

特征检测与提取等

measure

图像属性的测量,如相似性或等高线等

segmentation

图像分割

restoration

图像恢复

util

通用函数

用到一些图片处理的操作函数时,需要导入对应的子模块,如果需要导入多个子模块,则用逗号隔开,如:

>>> from skimage import io,data,color