zoukankan      html  css  js  c++  java
  • 十个python图像处理工具

    介绍

    如今的世界存在了大量的数据,图像数据是重要的组成部分。如果要利用这些图片,需要对图像进行处理,提高图片质量或提取图片内容信息。

    图像处理的常见操作包括图像显示,基本操作如裁剪,翻转,旋转等,图像分割,分类和特征提取,图像恢复和图像识别。Python是图像处理的合适选择,因为它作为一种科学编程语言日益普及,并且提供了许多免费实用的图像处理工具。

    下面将介绍10个用于图像处理的python库,它们在处理图像等方面都提供了简单方便的方法。

    1. scikit Image

    scikit-image(https://scikit-image.org/)是一个与numpy一起使用的开源Python工具。它实现了用于研究,教育和行业应用的算法和实用程序。即使是刚接触Python的人也可以轻松使用。它的代码由活跃的志愿者编写,由高质量的同行进行评审。

    资源

    有完善的文档和丰富的示例(http://scikit-image.org/docs/stable/user_guide.html)。

    示例

    导入skimage,大多数函数都在它的子模块中。下面是一些 skimage 的例子:

    • 图像过滤

    import matplotlib.pyplot as plt 
    %matplotlib inline
    
    from skimage import data,filters
    
    image = data.coins()
    # ... 或者其他的 Numpy 数组
    edges = filters.sobel(image)
    plt.imshow(edges, cmap='gray')
    

    640?wx_fmt=png

    • 使用match_template函数进行模板匹配

    640?wx_fmt=png

    在gallery中有更多例子。

    2. Numpy

    Numpy是Python的核心库之一,它为数组提供了支持。一个图像本质上是包含像素数据的标准Numpy数组。因此,通过使用基本的Numpy操作,例如切片,掩膜(mask)和花式索引(fancy indexi)等直接修改图像的像素值。可以使用skimage加载图像并用matplotlib显示。

    资源

    Numpy的官方文档提供了完整的文档和资源列表(http://www.numpy.org/)。

    示例

    使用Numpy对图像进行掩膜操作。

    import numpy as np
    from skimage import data
    import matplotlib.pyplot as plt 
    %matplotlib inline
    
    image = data.camera()
    type(image)
    
    numpy.ndarray #图像是一个numpy数组
    
    mask = image < 87
    image[mask]=255
    plt.imshow(image, cmap='gray')
    

    640?wx_fmt=png

    3. Scipy

    scipy是一个类似Numpy的核心科学计算模块,可用于基本的图像处理任务。特别是子模块scipy.ndimage提供了操作n维Numpy数组的函数。该软件包目前包括线性、非线性滤波,二值形态(binary morphology),B样条插值(B-spline interpolatio)和对象测量(object measurements)等功能。

    资源

    scipy.ndimage的完整函数列表:https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution

    示例

    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>)
    

    640?wx_fmt=png

    4. PIL / Pillow

    PIL(Python Imaging Library)是一个免费的Python函数库,它增加了打开、操作和保存多种不同图像格式的支持。然而,它已经停止了开发,最后一次发布是2009年。幸运的是,PIL有一个活跃的分支Pillow,它更易于安装,支持所有主要的操作系统并支持Python 3。该库包含了基本的图像处理功能,包括像素操作,使用内置卷积内核进行过滤以及颜色空间转换。

    资源

    该文档包含了安装指引以及每个模块的示例。

    示例

    使用Pillow中的ImageFilter增强图像:

    from PIL import Image, ImageFilter
    #读入图像
    im = Image.open( 'image.jpg' )
    #显示图像
    im.show()
    
    from PIL import ImageEnhance
    enh = ImageEnhance.Contrast(im)
    enh.enhance(1.8).show("30% more contrast")
    

    640?wx_fmt=png

    5. OpenCV-Python

    OpenCV(Open Source Computer Vision Library)是视觉应用中使用最广的库之一。OpenCV-Python是OpenCV的python API。OpenCV-Python不仅速度快,因为后台使用C/C++编写,而且易于编码和部署(由于前端的Python包装器)。这使其成为执行计算密集型视觉程序的绝佳选择。

    资源

    OpenCV2-Python-Guide使你更容易上手OpenCV-Python。

    示例

    下面的示例是使用OpenCV-Python的金字塔融合创建名为'Orapple'的新水果的功能。

    640?wx_fmt=jpeg

    6. SimpleCV

    SimpleCV也是一个构建视觉应用的开源框架。有了它,您可以使用如OpenCV等几个高性能的计算机视觉库,不需要了解位深度,文件格式,色彩空间等概念。学习难度远远小于OpenCV,并且正如他们的标语所说,“它使计算机视觉变得简单”。SimpleCV的其他优点还有:

    • 初学者也可以编写简单的机器视觉测试

    • 摄像机,视频文件,图像和视频流可以相互操作

    资源

    官方文档简单易懂,还有大量的案例参考。

    示例

    640?wx_fmt=png

    7. Mahotas

    Mahotas是另一个Python计算机视觉和图像处理库。它包含了传统的图像处理功能,如过滤和形态学操作,以及用于特征计算的计算机视觉功能,包括兴趣点检测和局部描述符。该接口使用Python,可以快速开发,算法使用C++实现,并且针对速度进行了优化。Mahotas库具有尽量少的代码甚至最小的依赖。阅读他们的{官方文章](https://openresearchsoftware.metajnl.com/articles/10.5334/jors.ac/)获取更多信息。

    资源

    该文档包含了安装说明,示例和教程,帮助你轻松地使用mahotas。

    示例

    Mahotas尽量使用简单的代码实现功能。例如“Finding Wally”问题,Mahotas使用最少的代码实现了较好的结果。这里是它的源代码。

    640?wx_fmt=png

    640?wx_fmt=png

    8. SimpleITK

    ITK(Insight Segmentation and Registration Toolkit)是一个开源的跨平台系统,为开发人员提供了一整套用于图像分析的软件工具。其中,SimpleITK是一个基于ITK的简化层,旨在促进快速原型设计,教育,解释语言中的使用。SimpleITK是一个图像分析工具包,具有大量的组件,支持过滤操作,图像分割和配准。SimpleITK使用C++编写,也可以用于包括Python在内的大量编程语言。

    资源

    有许多Jupyter Notebooks展示了SimpleITK在教育和研究中的使用。使用SimpleITK进行Python和R编程语言的交互式图像分析。

    示例

    下面是使用SimpleITK和Python实现的CT/MR配准过程的可视化。源代码。

    640?wx_fmt=gif

    9. pgmagick

    pgmagick是使用Python包装的GraphicsMagick库。GraphicsMagick有时被称为图像处理中的瑞士军刀。它提供了强大高效的工具和库集合,支持超过88种主要图像格式的读取,写入和操作,包括DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM和TIFF等重要格式。

    资源

    Github仓库,有安装和要求说明,详细的用户指南。

    示例

    一些使用 pgmagick 的图像操作:

    图像缩放:

    640?wx_fmt=png

    边缘提取:

    640?wx_fmt=png

    10. Pycairo

    Pycairo是cairo图形库的一组python绑定。Cairo是一个绘制矢量图形的2D图形库。矢量图形在调整大小或变换时不会丢失清晰度。Pycairo可使用Python调用cairo命令。

    资源

    Pycairo GitHub仓库有安装和使用的详细说明。以及Pycairo的简要教程。

    示例

    使用Pycairo绘制线段,基本形状和径向渐变(radial gradients)。

    640?wx_fmt=png

    总结

    以上是Python中一些好用且免费的图像处理库。他们都值得尝试使用并了解更多它们的信息。

    欢迎关注磐创博客资源汇总站:
    http://docs.panchuang.net/

    欢迎关注PyTorch官方中文教程站:
    http://pytorch.panchuang.net/

  • 相关阅读:
    hadoop2.6虚拟机搭建和应用到win平台下eclipse开发
    javascript相关的增删改查以及this的理解
    javascript中对编码的解读
    Js中去除数组中重复元素的6种方法
    手机端页面自适应解决方案—rem布局
    js相关的时间获取方法
    js获取时间
    谈谈 ES6 的 Promise 对象
    彻底搞懂闭包
    c# 获取Excel内容的分析
  • 原文地址:https://www.cnblogs.com/panchuangai/p/12568013.html
Copyright © 2011-2022 走看看