图像处理是分析和处理数字图像的必要的过程,而Python作为一种科学编程语言越来越受欢迎,而且在其生态系统中有许多最先进的图像处理工具可以免费使用。本文整理了10个常用的图像处理库说明及官方网站,用以了解和深入学习图像处理,觉得有用可以收藏备用。
1、PIL/Pillow
PIL(Python Imaging Library)是一个免费的Python编程语言库,它提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等。不过PIL在2009年就停止了维护,仅支持到Python 2.7。幸运的是,Pillow是一个积极开发的PIL分支,它更易于安装,可在所有主要操作系统上运行,并支持Python 3。该库包含基本图像处理功能,包括点操作,使用一组内置卷积内核进行过滤以及颜色空间转换。
官网:Python Pillow
2.NumPy
Numpy是Python编程中的核心库之一,提供对数组的支持。图像本质上是一个包含数据点像素的标准Numpy数组。因此,通过使用基本的NumPy操作,如图像读取与裁剪、通道分离、颜色变换、灰阶转换、图像卷积、 图像分割索引,我们可以修改图像的像素值。可以使用skimage加载图像,并使用matplotlib显示图像。
官网: http://www. numpy.org/
3.SciPy
SciPy是Python的另一个核心科学模块,有很多子模块可以完成不同的操作,如傅里叶变换、插值运算、优化算法和数学统计等。类似于Numpy,scipy可用于基本的图像处理和处理任务。特别是子模块 scipy.ndimage。提供在n维NumPy数组上操作的函数。
官网:SciPy.org - SciPy.org
4. scikit Image
scikit-image是一个开源的Python包,可以使用 numpy 数组。它实现了用于研究、教育和工业应用的算法和实用程序。它是一个相当简单和直接的库,即使对于Python生态系统的新手也是如此。它的代码质量很高,经过许多同行审查,并由一个活跃的志愿者社区编写。
官网:Image processing in Python
5.OpenCV-Python
OpenCV(开源计算机视觉库)是计算机视觉领域应用最广泛的开源工具包,基于C/C++,支持Linux/Windows/MacOS/Android/iOS,并提供了Python,Matlab和Java等语言的接口。OpenCV-Python是OpenCV的Python API。OpenCV-Python不仅速度快,因为后台由用C/C ++编写的代码组成,但它也很容易编程和部署(由于前端的Python包装器)。这使其成为执行计算密集型计算机视觉程序的绝佳选择。而其中的imgproc图像处理模块,提供了图像相关的基础功能(滤波,梯度,改变大小等),以及一些衍生的高级功能(图像分割,直方图,形态分析和边缘/直线提取等)。
官网:Home - OpenCV
6.SimpleCV
SimpleCV是另一个用于构建计算机视觉应用程序的开源框架。它可以访问几个高性能计算机视觉库,如OpenCV,但无需了解位深度,文件格式,色彩空间等。它的学习曲线远小于OpenCV,并且就像它的口号"让计算机视觉变得简单",支持SimpleCV的一些观点是:即使是初学者也可以编写简单的机器视觉测试;摄像机,视频文件,图像和视频流都可以互操作。
官网:SimpleCV
7.Mahotas
Mahotas是另一个用于Python的计算机视觉和图像处理库。它包含传统的图像处理功能,如过滤和形态操作,以及用于特征计算的更现代的计算机视觉功能,包括兴趣点检测和局部描述符。Mahotas的库具有简单的代码甚至最小的依赖性,目前拥有100多个图像处理和计算机视觉功能,一些示例如下:
- watershed
- convex points calculations.
- hit & miss. thinning
- Zernike & Haralick, local binary patterns, and TAS features.
- morphological processing
- Speeded-Up Robust Features (SURF), a form of local features
- thresholding
- convolution.
- Sobel edge detection
参考网站:Mahotas: Computer Vision in Python
8.SimpleITK
ITK 或者 Insight Segmentation and Registration Toolkit是一个开源的跨平台系统,为开发人员提供了一套广泛的图像分析软件工具 。SimpleITK是ITK的简化接口,使用起来更加方便,有多种语言接口。SimpleITK是专门处理医学影像的软件,在SimpleITK中,图像的概念与我们在计算机视觉中常用的RGB图像差异很大,后者只是一个多维矩阵,是一个数学上的概念,而在SimpleITK中,图像是一种物理实体,图像中的每一个像素都是物理空间中的一个点,不光有着像素值,还有着坐标,间距,方向等概念。
参考网站:SimpleITK Sphinx Documentation
9.Pgmagick
Pgmagick是GraphicsMagick库的一个基于python的包装器。图像处理系统有时被称为图像处理的瑞士军刀。它提供了一个健壮而高效的工具和库集合,支持以88种主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)读取、写入和操作图像。Pgmagick可以进行的图像处理活动不是很多,一般用于图像缩放或者边缘提取。
官网: https:// pythonhosted.org/pgmagi ck/
10.Pycairo
Pycairo是一组用于Cairo图形库的Python绑定。Cairo是一个用于绘制矢量图形的2D图形库。矢量图形很有趣,因为它们在调整大小或变换时不会失去清晰度。Pycairo可以从Python调用Cairo命令。Pycairo主要用来绘制线条、基本形状和径向梯度。
官网: https://www. cairographics.org/pycai ro/