安利10款免费的Python数据处理工具

原文章作者: Parul Pandey
英文原文:10 Python image manipulation tools
译者: Regina

我们的世界充满了数据,而图像数据占据着其中很大的比例。 如果想要利用这些图像数据,我们就必须对他们进行适当的处理。 简单来说,图像处理就是对数字图像进行分析转化从而提高质量或是提取关键信息的过程。常见的图像处理任务包括图像显示,图像的基本操作(如裁剪,翻转,旋转等), 图像分割,图像分类及特征提取,图像复原和图像识别。而python是一个很适合进行此类工作的工具,因为它作为一种科学编程语言越来越受到欢迎,并且在它的生态系统中有着很多非常先进的图像处理工具可以供我们免费使用。

图片来自Luriko Yamaguchi


那么让我们来看看一些常用的python图像处理库吧~

1. scikit Image

scikit-image是一个可以与numpy数组一起使用的python开源包。它实现了用于科研,教育以及工业界的一些算法和实用功能。即使对于python初学者或者不太了解python生态的人,它依然是一个非常简洁直观的库。其中代码部分由一个活跃社区的志愿者们编写而成,经过了同行审核且有着较高的质量。

资源

通过使用大量的例子以及实际应用,它的文档化非常完善,参见文档。

应用

可以使用skimage导入包,大部分的函数都可以在子模块中找到。一些skimage 应用的例子有:

  • 图像过滤
import matplotlib.pyplot as plt 
%matplotlib inline
from skimage import data,filters
image = data.coins()
# ... or any other NumPy array!
edges = filters.sobel(image)
plt.imshow(edges, cmap='gray')

  • 使用match_template函数进行模板比对

    更多的例子可以参见这里 。

2. Numpy

Numpy是python的核心库之一,它主要提供对数组的支持。图像实际上是一种标准的包含像素数据点的Numpy数组。因此,我们可以使用Numpy的基本功能,如切片,屏蔽和花式索引等, 对图像的像素进行修改。图像可以通过skimage加载和 matplotlib显示。

资源

完整的资源列表以及文档可见Numpy官方网站

应用

  • 使用Numpy来掩模图像
import numpy as np
from skimage import data
import matplotlib.pyplot as plt 
%matplotlib inline
image = data.camera()
type(image)
numpy.ndarray #Image is a numpy array
mask = image < 87
image[mask]=255
plt.imshow(image, cmap='gray')


3. Scipy

和Numpy一样,scipy是python中另外一个用于基本图像操作和任务处理的核心科学模块。确切的说,它的子模块scipy.ndimage适用于多维度的Numpy数组。这个包现在支持线性与非线性滤波,二元形态, B样条插值和物体测量。

资源

scipy.ndimage完整资源和文档可参见这里 。

应用

  • 通过SciPy使用高斯滤波器来模糊图像:
from scipy import misc,ndimage
face = misc.face()
blurred_face = ndimage.gaussian_filter(face, sigma=3)
very_blurred = ndimage.gaussian_filter(face, sigma=5)
#Results
plt.imshow(<image to be displayed>)


4. PIL/Pillow

PIL( Python Imaging Library)是一个免费的库,它可以支持打开,操作,存储不同格式的图像文件。 但是,自从2009年发布最后一个版本后,它的开发就停滞了。幸运的是,我们还有Pillow,一个活跃的开发分支,可以很容易的在所有主流操作系统上安装运行,并且支持python3。这个库包括基本的图像处理功能,如点的操作,对内置卷积核的过滤和颜色空间的转换。

资源

文档中包括了安装说明以及每个模块的例子。

应用

  • 使用ImageFilter来增强图像
from PIL import Image, ImageFilter
#Read image
im = Image.open( 'image.jpg' )
#Display image
im.show()
from PIL import ImageEnhance
enh = ImageEnhance.Contrast(im)
enh.enhance(1.8).show("30% more contrast")


来源


5. OpenC-Python

OpenCV(Open Source Computer Vision Library) 是应用最广的计算机视觉应用库之一。OpenCV-Python是OpenCV的python API. OpenCV-Python不仅运行快,因为后台由C/C++代码组成, 而且易于开发和部署(前台有python包装器)。这使得它成为计算密集型计算机视觉工程的一个很好的选择。

资源

OpenCV2-Python指南可以帮助我们很容易的了解OpenCV-Python。

应用

  • 以下是一个用OpenCV-Python混合图像的例子,我们使用Pyramids来产生一个叫做“橘苹果”的新水果

6. SimpleCV

SimpleCV也是一个用于计算机视觉应用的开源框架。通过它你可以访问几个高性能的计算机视觉库如OpenCV,即使你并不了解位深度,文件格式,颜色空间等。它的上手程度相对于OpenCV来说要容易的多,正如他们的口号所说,“让计算机视觉更容易”。
一些支持SimpleCV的观点有:

  • 即使是初学者也可以编写简单的机器视觉测试
  • 摄像,视频文件,图像,和视频流可以互相操作,交流信息

资源

官方文档非常易于理解,而且有大量的例子和实例可以参考。

应用


7. Mahotas

Mahotas是另一个python计算机视觉和图像处理的库。它不仅包括传统图像处理功能, 如滤波和形态学操作,还包括现代计算机视觉有关特征计算的功能,包括兴趣点探测和局部描述器。它的接口是由Python写成的,所以可以支持快速开发,但是算法是由C++实现的,这使得速度也可以被优化和提升。Mahotas库包速度快而且含代码简洁,甚至依赖性也很小。有兴趣的话,可以通过他们的的官方论文了解更多信息。

资源

文档中包括安装指南,实例和教程来帮助用户更容易上手。

应用

  • Mahotas库凭借简洁的代码就可以解决问题。例如Mahotas可以用最少的代码很好的解决了“寻找Wally”的问题。这里是源代码

8. SimpleITK

ITK(Insight Segmentation and Registration Toolkit)是一个开源,跨平台的系统,它为开发者提供了一套扩展性的图像分析工具。其中,SimpleITK是基于ITK的一个简化层,目的是用于快速原型开发,教育和解释语言。SimpleITK是一个图像分析包,它包含大量的支持过滤操作,图像分割和注册的组件。SimpleITK本身是由C++写成的,但是可以支持包括python在内的很多编程语言。

资源

有许多Jupyter Notebooks介绍了如何用SimpleITK进行教学和研究。他们演示了怎么用SimpleITK和Python或者R进行交互的图像分析。

使用

  • 以下动画展示了使用SimpleITK和Python可视化CT / MR配准过程。读者可以阅读源码了解更多。


来源


9. pgmagick

pgmagick 是一个GraphicsMagick的python包装器。GraphicsMagick图像处理系统,有时也被称为图像处理的瑞士军刀。它提供了一个健壮且高效的工具集合,支持超过88种主要格式(包括DPX, GIF, JPEG, JPEG-2000, PNG, PDF, PNM, and TIFF)图像的读写操作。

资源

有一个专门用于开发PgMagick的Github仓库,其中包括安装和需求说明以及详细的用户指南。

应用

可以使用pgmagick进行图像处理的例子有:

  • 图像缩放
  • 边界提取

10. Pycairo

Pycairo是cairo库的一组python绑定。Cairo是一个支持绘制矢量图的2D图像库。矢量图的有趣之处在于它在调整大小或转换过程中并不会失去清晰度。 Pycairo是一组可以用Python调用cairo命令的绑定。

资源

Pycairo Github仓库是一个介绍其安装使用的很好的资源。另外,还有一个简短的Pycairo的教程可以用来参考。

应用

  • 使用Pycairo绘制线条、基本形状和径向梯度

结论

以上这些就是有用且免费的一些python图像处理库。有些也许你已经熟悉了但有些可能你还没有了解过,那么就上手试试这些工具以了解更多吧~

你可能感兴趣的:(翻译)