Python中最有用的图像处理库研究

磐创AI

    介绍正如IDC所指出的,数字信息将飙升至175 ZB,而这些信息中的巨大一部分是图片。数据科学家需要(预先)测量这些图像,然后再将它们放入人工智能和深度学习模型中。在愉快的部分开始之前,他们需要做重要的工作。为了快速地处理大量信息,科学家需要利用图像准备工具来完成人工智能和深度学习任务。在本文中,我将深入研究Python中最有用的图像处理库,这些库正在人工智能和深度学习任务中得到大力利用。我们开始吧!
    目录
    OpenCV
    Scikit-Image
    Scipy
    Python Image Library(Pillow/PIL)
    Matplotlib
    SimpleITK
    Numpy
    Mahotas
    OpenCV
    OpenCV是最著名和应用最广泛的开源库之一,用于图像处理、目标检测、人脸检测、图像分割、人脸识别等计算机视觉任务。除此之外,它还可以用于机器学习任务。
    这是英特尔在2002年开发的。它是用C++编写的,但是开发人员已经提供了Python和java绑定。它易于阅读和使用。
    为了建立计算机视觉和机器学习模型,OpenCV有超过2500种算法。这些算法对于执行各种任务非常有用,例如人脸识别、目标检测等。让我们看一些可以使用OpenCV执行的示例:
    灰度缩放
    灰度缩放是一种将3通道图像(如RGB、HSV等)转换为单通道图像(即灰度)的方法。最终的图像在全白和全黑之间变化。灰度缩放的重要性包括降维(将3通道图像转换为单通道图像)、降低模型复杂度等。下面的代码片段显示了OpenCV中的灰度缩放import cv2 as cv
    img = cv.imread('example.jpg')
    cv.imshow('Original', img)
    cv.waitKey()
    #Use cvtColor, to convert to grayscale
    gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    cv.imshow('Grayscale', gray_img)
    cv.waitKey(0)
    
    旋转图像
    OpenCV有助于使用从0到360度的任意角度旋转图像。检查以下代码以将图像旋转180度。import cv2 as cv
    import matplotlib.pyplot as plt
    img = cv.imread('example.jpg')
    h, w = image.shape[:2]
    rot_matrix = cv.getRotationMatrix2D((w/2,h/2), -180, 0.5)
    rot_image = cv.warpAffine(img, rot_matrix, (w, h))
    plt.imshow(cv.cvtColor(rot_image, cv.COLOR_BGR2RGB))
    
    OpenCV还提供了除我们到目前为止讨论的功能之外的其他功能。除此之外,它还有助于人脸检测、图像分割、特征提取、目标检测、三维重建等。
    Scikit-Image
    Scikit Image是另一个伟大的开源图像处理库。它几乎适用于任何计算机视觉任务。它是最简单、最直接的库之一。这个库的某些部分是用Cython编写的(它是python编程语言的超集,旨在使python比C语言更快)。它提供了大量的算法,包括分割、颜色空间操作、几何变换、滤波、形态学、特征检测等。Scikit Image使用Numpy数组作为图像对象。让我们看看如何在scikit图像中执行活动轮廓操作。活动轮廓描述图像中形状的边界。
    检查以下活动轮廓操作代码:import numpy as np
    import matplotlib.pyplot as plt
    from skimage.color import rgb2gray
    from skimage import data
    from skimage.filters import gaussian
    from skimage.segmentation import active_contour
    image = data.astronaut()
    # Data for circular boundary
    s = np.linspace(0, 2*np.pi, 400)
    x = 220 + 100*np.cos(s)
    y = 100 + 100*np.sin(s)
    init = np.array([x, y]).T
    # formation of the active contour
    centre = active_contour(gaussian(image, 3),init, alpha=0.015, beta=10, gamma=0.001)
    figure, axis = plt.subplots(1, 2, figsize=(7, 7))
    ax[0].imshow(image, cmap=plt.cm.gray)
    ax[0].set_title("Original Image")
    ax[1].imshow(image, cmap=plt.cm.gray)
    
    Scipy
    SciPy主要用于数学和科学计算,但有时也可以使用子模块SciPy.ndimage用于基本的图像操作和处理任务。归根结底,图像只是多维数组,SciPy提供了一组用于操作n维Numpy操作的函数。SciPy提供了一些基本的图像处理操作,如人脸检测、卷积、图像分割、读取图像、特征提取等。除此之外,还可以执行过滤,在图像上绘制轮廓线。
    请检查以下代码以使用SciPy模糊图像:from scipy import ndimage, misc
    from matplotlib import pyplot as plt
    f = misc.face()
    b_face = ndimage.gaussian_filter(f, sigma=3)
    figure, axis = plt.subplots(1, 2, figsize=(16, 8))
    
    Python Image Library (Pillow/PIL)
    它是一个用于图像处理任务的开放源码python库。它提供了其他库通常不提供的特殊功能,如过滤、打开、操作和保存图像。这个库支持多种文件格式,这使它更高效。PIL还支持图像处理、图像显示和图像存档等功能。让我们看看使用Pillow/PIL的图像增强。
    库更改图像的清晰度:
    
    Matplotlib
    Matplotlib主要用于二维可视化,如散点图、条形图、直方图等,但我们也可以将其用于图像处理。从图像中提取信息是有效的。它不支持所有的文件格式。背景颜色更改操作后,请检查以下图像:
    
    SimpleITK
    它也称为图像分割和注册工具包。它是一个用于图像注册和图像分割的开源库。像OpenCV这样的库将图像视为一个数组,但是这个库将图像视为空间中某个区域上的一组点。检查以下示例:
    
    图像分割
    Numpy
    它是一个用于数值分析的开放源码python库。它包含一个矩阵和多维数组作为数据结构。但是NumPy也可以用于图像处理任务,例如图像裁剪、操作像素和像素值的蒙版。
    检查下图以从图像中提取绿色/红色/蓝色通道:
    
    Mahotas
    它是另一个用于计算机视觉和图像处理的开放源码python库。它是为生物信息学而设计的。它提供了很多算法,这些算法是用C++编写的,速度很快,使用了一个好的Python接口。它以NumPy数组读取和写入图像。使用Mahotas检查下面的模板匹配图像:
    
    结论
    因此,在本文中,我们介绍了2021年机器学习用python中排名前8位的图像处理库。我希望你从这个博客中学到一些东西,对你的项目有益。