3.3.1 介绍和观点
图像是NumPy的数组np.ndarray
图像: | np.ndarray |
---|---|
像素: | array values: a[2, 3] |
渠道: | array dimensions |
图像编码: | dtype (np.uint8, np.uint16, np.float) |
过滤器: | functions (numpy, skimage, scipy) |
In [1]:
%matplotlib inline
import numpy as np
check = np.zeros((9, 9))
check[::2, 1::2] = 1
check[1::2, ::2] = 1
import matplotlib.pyplot as plt
plt.imshow(check, cmap='gray', interpolation='nearest')
Out[1]:
<matplotlib.image.AxesImage at 0x105717610>
3.3.1.1 scikit-image 和 SciPy 生态系统
最新版的scikit-image
包含在大多数的科学Python发行版中,比如,Anaconda或Enthought Canopy。它也包含在 Ubuntu/Debian。
In [6]:
import skimage
from skimage import data # 大多数函数在子包中
大多数scikit-image
函数用NumPy ndarrays作为参数
In [6]:
camera = data.camera()
camera.dtype
Out[6]:
dtype('uint8')
In [7]:
camera.shape
Out[7]:
(512, 512)
In [8]:
from skimage import restoration
filtered_camera = restoration.denoise_bilateral(camera)
type(filtered_camera)
Out[8]:
numpy.ndarray
其他Python包也可以用于图像处理,并且使用Numpy数组:
- scipy.ndimage : 对于 nd-arrays。基础过滤、数学形态学和区域属性
- Mahotas 同时,强大的图形处理库有Python封装:
- OpenCV (计算机视觉)
- ITK (3D图像和注册)
- 其他 (但是,他们没有那么Pythonic也没有Numpy友好,在一定范围)。
3.3.1.2 scikit-image能发现什么
- 网站: http://scikit-image.org/
例子库 (就像在 matplotlib 或 scikit-learn): http://scikit-image.org/docs/stable/auto_examples/ 不同类的函数,从基本的使用函数到高级最新算法。
过滤器: 函数将图像转化为其他图像。
- NumPy组件
- 通用过滤器算法
- 数据简化函数: 计算图像直方图、局部极值位置、角。
- 其他动作: I/O, 可视化,等。