10个Python图像处理工具
在本教程中,我们将讨论Python库,这些库提供了一种简单直观的方法来转换图像并理解其背后的数据。
当今世界充斥着大量的数据,其中大部分是图像数据。但是为了以任何方式使用这些数字图像,需要对其进行处理和分析,以提高图像质量或获取可利用的信息。
常见的图像处理任务包括显示;简单的操作,例如翻转、裁剪等。图像分割,特征提取,图像修复以及图像识别。由于Python作为一种基于科学的编程语言日益流行,以及其库中众多先进的图像处理工具的开放获取,因此Python是执行这些图像处理任务的绝佳选择。
本文将介绍十个最常用的Python库,用于执行图像处理任务。这些库提供了一种简单直观的方法,用于修改图像并理解其背后的数据。
1. scikit-image
Scikit-image可以被描述为一个使用NumPy数组的开源Python程序。它是一个用于实施算法和实用程序的工具,可用于研究、教育以及工业应用。即使对于那些不熟悉Python生态系统的人来说,它也是一个易于使用和简单的库。代码质量很高,经过同行评审,并由一大群志愿者编写。
资源
Scikit-image详细地 解释 了很多示例和实际应用的情况。
用法
它加载在 skimage 中,并且大多数函数都包含在子模块中。
import matplotlib.pyplot as mplot
%matplotlib inline
from skimage import data
from skimage import filters
image1 = data.coins() # ... or any other NumPy array!
edges1 = filters.sobel(image)
mplot.imshow(edges, cmap = 'gray')
输出:
使用match_template函数进行模板匹配:
2. NumPy
NumPy是Python编程中最重要的库之一。它还支持数组。图像本质上是一个包含像素数据的标准NumPy数组。因此,可以使用标准的NumPy技术,如裁剪、遮罩或高级索引,来更改图像中的像素值。它还可以使用skimage程序加载,并使用Matplotlib显示。
使用方法
使用NumPy来遮罩图像:
import numpy as nmp
from skimage import data
import matplotlib.pyplot as mplot
%matplotlib inline
image1 = data.camera()
type(image1)
nmp.ndarray
#Image is a NumPy array:
mask = image < 87
image[mask] = 255
mplot.imshow(image1, cmap ='gray')
输出:
3. SciPy
SciPy是Python的另一个主要科学模块(就像NumPy一样),可用于对图像进行基本操作和处理。特别是在SciPy v1.1.0中有一个子模块叫做 scipy.ndimage,它提供了在n维NumPy数组上操作的函数。该软件包目前具备非线性和线性滤波、B样条插值、二值形态学以及对象测量等功能。
使用方法
使用SciPy通过高斯滤波器来模糊图像:
4. PIL/Pillow
PIL (Python Imaging Library)是一款免费的Python库。它是用于Python编程语言的库,提供了对打开、操作和保存各种图像格式的支持。然而,它的开发速度已经放缓,最后一次发布是在2009年。不过, 有一个替代品,Pillow,它是PIL的一个活跃开发的替代品,更易于安装,在所有主要平台上可用,也支持Python 3。该库提供了基本的图像处理函数,包括点、滤波器、内置的卷积核,以及颜色空间转换。
用途
通过将图像放入Pillow并使用ImageFilter来增强图像。
5. OpenCV-Python
OpenCV(开源计算机视觉库)是最常用的计算机视觉程序之一。 **OpenCV-Python 是OpenCV的Python API。 OpenCV-Python不仅因为后台是使用C/C++编写的代码而高效,同时也因为它简单易用(因为前台有Python封装器)。这使得它成为运行计算密集型计算机视觉应用的理想选择。
用法
在OpenCV Python中使用图像金字塔混合技术,可以创建“Orapple”:
6. SimpleCV
SimpleCV 是一个用于创建计算机视觉应用程序的不同的开源框架。它提供了对许多强大的计算机视觉软件库(如OpenCV)的访问,但您无需了解位深度和颜色空间、文件格式以及色彩空间。 SimpleCV的学习曲线明显低于OpenCV(正如其标语所说),”使计算机视觉变得简单。” SimpleCV的几个优点包括:
- 即使是新手也可以编写基本的机器视觉测试。
- 摄像头、视频文件、视频和图像都是可互操作的。
用法
7. Mahotas
Mahotas 可以被描述为Python中可用的又一个用于图像和计算机视觉的软件。它除了拥有传统的图像处理工具(如滤波和形态学处理),还具备现代的计算机视觉工具,用于特征计算,包括兴趣点检测和局部描述符。接口采用Python语言,适合快速开发。然而,算法是用C++编写并进行了优化以提高速度。Mahotas库非常快速,代码量和依赖性都很小。阅读 官方出版物 以获取更多洞见。
资源
这份 文档 包括安装说明、示例和一些指南,以帮助您快速开始使用Mahotas。
用法
Mahotas库依赖简洁的代码来完成任务。例如,它非常出色地解决了”寻找沃利”问题,只需少量编程即可完成。
解决”寻找沃利”问题的方法:
8. SimpleITK
ITK (Insight Segmentation and Registration Toolkit)是一款“开源、跨平台的软件,为开发人员提供了大量工具来辅助图像分析。” SimpleITK 是构建在ITK之上的一种奇特层,旨在简化快速原型设计和教育。该工具包还包括图像分析,具有支持图像分割、图像过滤和配准等通用滤波功能的各种组件。SimpleITK是用C++编写的,但它与像Python之类的大量编程语言兼容。
资源
有许多 Jupyter Notebooks 展示了如何在研究和教育中使用SimpleITK。笔记本演示了如何使用SimpleITK以及Python和R编程语言进行交互式图像分析。
用法
使用Python和SimpleITK创建的CT/MR严格配准过程的可视化。Python:
9. pgmagick
The pgmagick 是一个基于Python的包装器,与GraphicsMagick库兼容。它是GraphicsMagick图像处理系统,通常被描述为”图像处理领域的瑞士军刀”。它可靠且功能强大的库和工具集允许在超过88种格式(包括DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)中读取、写入和操作图像。
资源
Pgmagick的GitHub存储库包含安装说明和规范。它还有一个全面的用户指南。
用法
图像缩放:
边缘提取:
10. Pycairo
Pycairo 是Python绑定的数组,用于 Cairo 图形库。Cairo是一个2D图形库,允许创建矢量图形。矢量图形在调整大小或修改时不会失去清晰度。Pycairo可以使用Python调用Cairo命令。
资源
其Pycairo GitHub存储库 是一个提供详细安装和使用说明的有用资源。它还包括一个起始指南,概述了Pycairo的概述。
用法
使用Pycairo绘制线条、基本形状和径向渐变: