Python中的十大圖像處理工具

 

文章發佈於公號【數智物語】 (ID:decision_engine),關注公號不錯過每一篇乾貨。html

 

 

 

來源 | 大數據文摘(BigDataDigest)前端

編譯 | 張秋玥、小7、蔣寶尚python

 

 

本文主要介紹了一些簡單易懂最經常使用的 Python 圖像處理庫。git

 

當今世界充滿了各類數據,而圖像是其中高的重要組成部分。然而,若想其有所應用,咱們須要對這些圖像進行處理。圖像處理是分析和操縱數字圖像的過程,旨在提升其質量或從中提取一些信息,而後將其用於某些方面。github

 

圖像處理中的常見任務包括顯示圖像,基本操做(如裁剪、翻轉、旋轉等),圖像分割,分類和特徵提取,圖像恢復和圖像識別等。 Python 之成爲圖像處理任務的最佳選擇,是由於這一科學編程語言日益普及,而且其自身免費提供許多最早進的圖像處理工具。算法

 

讓咱們看一下用於圖像處理任務的一些經常使用 Python 庫。編程

 

01scikit Image數組

 

scikit-image 是一個基於 numpy 數組的開源 Python 包。 它實現了用於研究、教育和工業應用的算法和實用程序。 即便是對於那些剛接觸 Python 的人,它也是一個至關簡單的庫。 此庫代碼質量很是高並已通過同行評審,是由一個活躍的志願者社區編寫的。app

 

使用說明文檔:框架

https://scikit-image.org/docs/stable/user_guide.html

 

用法舉例:圖像過濾、模版匹配

 

可以使用「skimage」來導入該庫。大多數功能都能在子模塊中找到。 

 

import matplotlib.pyplot as plt%matplotlib inlinefrom skimage import data,filtersimage = data.coins()# ... or any other NumPy array!edges = filters.sobel(image)plt.imshow(edges, cmap='gray')

 

 

模版匹配(使用 match_template 函數)

 

 

gallery 上還有更多例子。

 

https://scikit-image.org/docs/dev/auto_examples/

 

02Numpy

 

Numpy 是 Python 編程的核心庫之一,支持數組結構。 圖像本質上是包含數據點像素的標準 Numpy 數組。 所以,經過使用基本的 NumPy 操做——例如切片、脫敏和花式索引,能夠修改圖像的像素值。 可使用 skimage 加載圖像並使用 matplotlib 顯示。

 

使用說明文檔:

http://www.numpy.org/

 

用法舉例:使用 Numpy 來對圖像進行脫敏處理

 

import numpy as npfrom skimage import dataimport matplotlib.pyplot as plt%matplotlib inlineimage = data.camera()type(image)numpy.ndarray #Image is a numpy arraymask = image < 87image[mask]=255plt.imshow(image, cmap='gray')

 

 

03Scipy

 

scipy 是 Python 的另外一個核心科學模塊,就像 Numpy 同樣,可用於基本的圖像處理和處理任務。值得一提的是,子模塊 scipy.ndimage 提供了在 n 維 NumPy 數組上運行的函數。 該軟件包目前包括線性和非線性濾波、二進制形態、B 樣條插值和對象測量等功能。

 

使用說明文檔:

https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution

 

用法舉例:使用 SciPy 的高斯濾波器對圖像進行模糊處理

 

from scipy import misc,ndimageface = misc.face()blurred_face = ndimage.gaussian_filter(face, sigma=3)very_blurred = ndimage.gaussian_filter(face, sigma=5)#Resultsplt.imshow(<image to be displayed>)

 

 

04PIL/ Pillow

 

PIL (Python Imaging Library) 是一個免費的 Python 編程語言庫,它增長了對打開、處理和保存許多不一樣圖像文件格式的支持。 然而,它的發展停滯不前,其最後一次更新仍是在 2009 年。幸運的是, PIL 有一個正處於積極開發階段的分支 Pillow,它很是易於安裝。Pillow 能在全部主要操做系統上運行並支持 Python 3。該庫包含基本的圖像處理功能,包括點操做、使用一組內置卷積內核進行過濾以及顏色空間轉換。

 

使用說明文檔:

https://pillow.readthedocs.io/en/3.1.x/index.html

 

用法舉例:使用 ImageFilter 加強 Pillow 中的圖像

 

from PIL import Image, ImageFilter#Read imageim = Image.open( 'image.jpg' )#Display imageim.show()from PIL import ImageEnhanceenh = ImageEnhance.Contrast(im)enh.enhance(1.8).show("30% more contrast")

 

 

05OpenCV-Python

 

OpenCV(開源計算機視覺庫,Open Source Computer Vision Library)是計算機視覺應用中使用最普遍的庫之一。OpenCV-Python 是 OpenCV 的 python API。 OpenCV-Python 不只速度快(由於後臺由用 C / C ++ 編寫的代碼組成),也易於編碼和部署(因爲前端的 Python 包裝器)。 這使其成爲執行計算密集型計算機視覺程序的絕佳選擇。

 

使用說明文檔:

https://github.com/abidrahmank/OpenCV2-Python-Tutorials

 

用法舉例:使用 Pyramids 建立一個名爲'Orapple'的新水果的功能

 

 

06SimpleCV

 

SimpleCV 也是用於構建計算機視覺應用程序的開源框架。 經過它能夠訪問如 OpenCV 等高性能的計算機視覺庫,而無需首先了解位深度、文件格式或色彩空間等。學習難度遠遠小於 OpenCV,而且正如他們的標語所說,「 它使計算機視覺變得簡單 」。支持 SimpleCV 的一些觀點是:

  • 即便是初學者也能夠編寫簡單的機器視覺測試

  • 攝像機、視頻文件、圖像和視頻流均可以交互操做

 

使用說明文檔:

https://simplecv.readthedocs.io/en/latest/

 

用法舉例

 

 

07Mahotas

 

Mahotas 是另外一個用於 Python 的計算機視覺和圖像處理庫。 它包含傳統的圖像處理功能(如濾波和形態學操做)以及用於特徵計算的更現代的計算機視覺功能(包括興趣點檢測和局部描述符)。 該接口使用 Python,適用於快速開發,但算法是用 C++ 實現的,而且針對速度進行了優化。Mahotas 庫運行很快,它的代碼很簡單,(對其它庫的)依賴性也很小。 建議閱讀他們的官方文檔以瞭解更多內容。

 

使用說明文檔:

https://mahotas.readthedocs.io/en/latest/install.html

 

用法舉例

 

Mahotas 庫使用簡單的代碼來完成工做。 對於「 尋找 Wally 」的問題,Mahotas 完成的得很好,並且代碼量很是小。

 

 

08SimpleITK

 

ITK (Insight Segmentation and Registration Toolkit) 是一個開源的跨平臺系統,爲開發人員提供了一整套用於圖像分析的軟件工具。 其中, SimpleITK 是一個創建在 ITK 之上的簡化層,旨在促進其在快速原型設計、教育以及腳本語言中的使用。SimpleITK 是一個包含大量組件的圖像分析工具包,支持通常的過濾操做、圖像分割和配準。 SimpleITK 自己是用 C++ 編寫的,但可用於包括 Python 在內的大量編程語言。

 

使用說明文檔:

https://github.com/hhatto/pgmagick

 

這裏有大量說明了如何使用 SimpleITK 進行教育和研究活動的 Jupyter notebook。notebook 中演示瞭如何使用 SimpleITK 進行使用 Python 和 R 編程語言的交互式圖像分析。

 

用法舉例

 

下面的動畫是使用 SimpleITK 和 Python 建立的可視化的嚴格 CT / MR 配準過程。

 

 

09pgmagick

 

pgmagick 是 GraphicsMagick 庫基於 Python 的包裝器。GraphicsMagick 圖像處理系統有時被稱爲圖像處理的瑞士軍刀。它提供了強大而高效的工具和庫集合,支持超過 88 種主要格式圖像的讀取、寫入和操做,包括 DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM 和 TIFF 等重要格式。

 

使用說明文檔:

https://github.com/hhatto/pgmagick

 

用法舉例:圖片縮放、邊緣提取

 

圖片縮放

 

邊緣提取

 

10Pycairo

 

Pycairo 是圖形庫 cairo 的一組 python 綁定。 Cairo 是一個用於繪製矢量圖形的 2D 圖形庫。 矢量圖形頗有趣,由於它們在調整大小或進行變換時不會下降清晰度。Pycairo 庫能夠從 Python 調用 cairo 命令。

 

使用說明文檔:

https://github.com/pygobject/pycairo

 

用法:Pycairo 能夠繪製線條、基本形狀和徑向漸變

 

 

以上就是一些免費的優秀圖像處理 Python 庫。有些很知名,你可能已經知道或者用過,有些可能對你來講仍是新的。那正好如今就上手操做一下,試一試吧!

 

相關報道:

https://towardsdatascience.com/image-manipulation-tools-for-python-6eb0908ed61f

 

 

數智物語徵稿啓事0613.png

 

星標我,天天多一點智慧

 

相關文章
相關標籤/搜索