
本文為 AI 研習社編譯的技術部落格,原标題 :
10 Python image manipulation tools.
作者 | Parul Pandey
翻譯 | 安其羅•喬爾、JimmyHua
編輯 | 王立魚
原文連結:
https://towardsdatascience.com/image-manipulation-tools-for-python-6eb0908ed61f
圖檔來自 Pexels 的Luriko Yamaguchi
今天,在我們的世界裡充滿了資料,圖像成為構成這些資料的重要組成部分。但無論是用于何種用途,這些圖像都需要進行處理。圖像處理就是分析和處理數字圖像的過程,主要旨在提高其品質或從中提取一些資訊,然後可以将其用于某種用途。
圖像進行中的常見任務包括顯示圖像,基本操作如裁剪、翻轉、旋轉等,圖像分割,分類和特征提取,圖像恢複和圖像識别。Python成為這種圖像處理任務是一個恰當選擇,這是因為它作為一種科學程式設計語言正在日益普及,并且在其生态系統中免費提供許多最先進的圖像處理工具供大家使用。
讓我們看一下可以用于圖像處理任務中的常用 Python 庫有哪些吧。
1.scikit-image
scikit-image是一個開源的Python包,适用于numpy數組。它實作了用于研究,教育和工業應用的算法和實用工具。即使是那些剛接觸Python生态系統的人,它也是一個相當簡單直接的庫。此代碼是由活躍的志願者社群編寫的,具有高品質和同行評審的性質。
資源
文檔裡記錄了豐富的例子和實際用例,閱讀下面的文檔:
http://scikit-image.org/docs/stable/user_guide.html
用法
該包作為skimage導入,大多數功能都在子子產品中找的到。下面列舉一些skimage的例子:
圖像過濾
使用match_template函數進行模闆比對
你可以通過此處檢視圖庫找到更多示例。
2. Numpy
Numpy是Python程式設計的核心庫之一,并為數組提供支援。圖像本質上是包含資料點像素的标準Numpy數組。是以,我們可以通過使用基本的NumPy操作,例如切片、掩膜和花式索引,來修改圖像的像素值。可以使用skimage加載圖像并使用matplotlib顯示圖像。
Numpy的官方文檔頁面提供了完整的資源和文檔清單:
http://www.numpy.org/
使用Numpy來掩膜圖像.
3.Scipy
scipy是Python的另一個類似Numpy的核心科學子產品,可用于基本的圖像操作和處理任務。特别是子子產品scipy.ndimage,提供了在n維NumPy數組上操作的函數。該包目前包括線性和非線性濾波,二值形态學,B樣條插值和對象測量等功能函數。
有關scipy.ndimage包提供的完整功能清單,請參閱下面的連結:
https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution
使用SciPy通過高斯濾波器進行模糊:
4. PIL/ Pillow
PIL( Python圖像庫 )是Python程式設計語言的一個免費庫,它支援打開、操作和儲存許多不同的檔案格式的圖像。然而, 随着2009年的最後一次釋出,它的開發停滞不前。但幸運的是還有有Pillow,一個PIL積極開發的且更容易安裝的分支,它能運作在所有主要的作業系統,并支援Python3。這個庫包含了基本的圖像處理功能,包括點運算、使用一組内置卷積核的濾波和色彩空間的轉換。
文檔中有安裝說明,以及涵蓋庫的每個子產品的示例:
https://pillow.readthedocs.io/en/3.1.x/index.html
在 Pillow 中使用 ImageFilter 增強圖像:
5. OpenCV-Python
OpenCV( 開源計算機視覺庫 )是計算機視覺應用中應用最廣泛的庫之一 。OpenCV-Python 是OpenCV的python版API。OpenCV-Python的優點不隻有高效,這源于它的内部組成是用C/C++編寫的,而且它還容易編寫和部署(因為前端是用Python包裝的)。這使得它成為執行計算密集型計算機視覺程式的一個很好的選擇。
OpenCV-Python-Guide指南可以讓你使用OpenCV-Python更容易:
https://github.com/abidrahmank/OpenCV2-Python-Tutorials
下面是一個例子,展示了OpenCV-Python使用金字塔方法建立一個名為“Orapple”的新水果圖像融合的功能。
6. SimpleCV
SimpleCV 也是一個用于建構計算機視覺應用程式的開源架構。有了它,你就可以通路幾個高性能的計算機視覺庫,如OpenCV,而且不需要先學習了解位深度、檔案格式、顔色空間等。
它的學習曲線大大小于OpenCV,正如它們的口号所說“計算機視覺變得簡單”。一些支援SimpleCV的觀點有:
即使是初學者也可以編寫簡單的機器視覺測試
錄影機、視訊檔案、圖像和視訊流都是可互操作的
官方文檔非常容易了解,而且有大量的例子和使用案例去學習:
https://simplecv.readthedocs.io/en/latest/
用法
7. Mahotas
Mahotas 是另一個計算機視覺和圖像處理的Python庫。它包括了傳統的圖像處理功能例如濾波和形态學操作以及更現代的計算機視覺功能用于特征計算,包括興趣點檢測和局部描述符。該接口是Python語言,适合于快速開發,但是算法是用C語言實作的,并根據速度進行了調優。Mahotas庫速度快,代碼簡潔,甚至具有最小的依賴性。通過原文閱讀它們的官方論文以獲得更多的了解。
文檔包括安裝指導,例子,以及一些教程,可以更好的幫助你開始使用mahotas。
https://mahotas.readthedocs.io/en/latest/install.html
Mahotas庫依賴于使用簡單的代碼來完成任務。關于‘Finding Wally’的問題,Mahotas做的很好并且代碼量很少。下面是源碼:
https://mahotas.readthedocs.io/en/latest/wally.html
8. SimpleITK
ITK 或者 Insight Segmentation and Registration Toolkit是一個開源的跨平台系統,為開發人員提供了一套廣泛的圖像分析軟體工具 。其中, SimpleITK是建立在ITK之上的簡化層,旨在促進其在快速原型設計、教育、解釋語言中的應用。SimpleITK 是一個圖像分析工具包,包含大量支援一般過濾操作、圖像分割和比對的元件。SimpleITK本身是用C++寫的,但是對于包括Python以内的大部分程式設計語言都是可用的。
大量的Jupyter Notebooks 表明了SimpleITK在教育和研究領域已經被使用。Notebook展示了用Python和R程式設計語言使用SimpleITK來進行互動式圖像分析。
http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/
下面的動畫是用SimpleITK和Python建立的剛性CT/MR比對過程的可視化 。點選此處可檢視源碼!
9. pgmagick
pgmagick是GraphicsMagick庫的一個基于python的包裝。 GraphicsMagick圖像處理系統有時被稱為圖像處理的瑞士軍刀。它提供了一個具有強大且高效的工具和庫集合,支援以88種主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)讀取、寫入和操作圖像。
有一個專門用于PgMagick的Github庫 ,其中包含安裝和需求說明。還有關于這個的一個詳細的使用者指導:
https://github.com/hhatto/pgmagick
使用pgmagick可以進行的圖像處理活動很少,比如:
圖像縮放
邊緣提取
10. Pycairo
Pycairo是圖像處理庫cairo的一組Python捆綁。Cairo是一個用于繪制矢量圖形的2D圖形庫。矢量圖形很有趣,因為它們在調整大小或轉換時不會失去清晰度 。Pycairo是cairo的一組綁定,可用于從Python調用cairo指令。
Pycairo的GitHub庫是一個很好的資源,有關于安裝和使用的詳細說明。還有一個入門指南,其中有一個關于Pycairo的簡短教程。
庫:https://github.com/pygobject/pycairo
指南:https://pycairo.readthedocs.io/en/latest/tutorial.html
使用Pycairo繪制線條、基本形狀和徑向梯度:
總結
有一些有用且免費的Python圖像處理庫可以使用,有的是衆所周知的,有的可能對你來說是新的,試着多去了解它們。
注:本文的内容改編自作者之前在 opensource.com 上發表的文章。雷鋒網雷鋒網雷鋒網(公衆号:雷鋒網)
想要繼續檢視該篇文章相關連結和參考文獻?
點選【常用的十大 python 圖像處理工具】即可通路:
https://ai.yanxishe.com/page/TextTranslation/1755
今日資源推薦:
49個Python學習資源收集!作者把它分解為4種形式:1、那些剛剛開始程式設計和Python的初學者資源;2、适用于那些希望将Python知識基礎應用于資料科學和Web開發等領域的人員的進階資源;3、為那些希望通過Python深入學習和大資料等概念的人提供進階資源;4、最後是最重要的練習計劃,幫助你快速實踐和鞏固 Python 技能。
詳情點選:https://ai.yanxishe.com/page/tweet/26516