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]:

  1. %matplotlib inline
  2. import numpy as np
  3. check = np.zeros((9, 9))
  4. check[::2, 1::2] = 1
  5. check[1::2, ::2] = 1
  6. import matplotlib.pyplot as plt
  7. plt.imshow(check, cmap='gray', interpolation='nearest')

Out[1]:

  1. <matplotlib.image.AxesImage at 0x105717610>

3.3.1 介绍和观点 - 图1

3.3.1.1 scikit-image 和 SciPy 生态系统

最新版的scikit-image包含在大多数的科学Python发行版中,比如,Anaconda或Enthought Canopy。它也包含在 Ubuntu/Debian。

In [6]:

  1. import skimage
  2. from skimage import data # 大多数函数在子包中

大多数scikit-image函数用NumPy ndarrays作为参数

In [6]:

  1. camera = data.camera()
  2. camera.dtype

Out[6]:

  1. dtype('uint8')

In [7]:

  1. camera.shape

Out[7]:

  1. (512, 512)

In [8]:

  1. from skimage import restoration
  2. filtered_camera = restoration.denoise_bilateral(camera)
  3. type(filtered_camera)

Out[8]:

  1. numpy.ndarray

其他Python包也可以用于图像处理,并且使用Numpy数组:

  • scipy.ndimage : 对于 nd-arrays。基础过滤、数学形态学和区域属性
  • Mahotas 同时,强大的图形处理库有Python封装:
  • OpenCV (计算机视觉)
  • ITK (3D图像和注册)
  • 其他 (但是,他们没有那么Pythonic也没有Numpy友好,在一定范围)。

3.3.1.2 scikit-image能发现什么