當今世界充滿了各種數據,而圖像是其中高的重要組成部分。然而,若想其有所應用,我們需要對這些影像進行處理。影像處理是分析和操縱數位影像的過程,旨在提高其品質或從中提取一些信息,然後將其用於某些方面。
影像處理中的常見任務包括顯示影像,基本操作(如裁剪、翻轉、旋轉等),影像分割,分類和特徵提取,影像復原和影像辨識等。 Python 之成為影像處理任務的最佳選擇,是因為這種科學程式語言日益普及,並且本身免費提供許多最先進的影像處理工具。
讓我們來看看用於影像處理任務的一些常用 Python 函式庫。
scikit-image 是一個基於 numpy 陣列的開源 Python 套件。它實現了用於研究、教育和工業應用的演算法和實用程式。即使是對於那些剛接觸 Python 的人,它也是一個相當簡單的函式庫。此庫程式碼品質非常高並且已經過同行評審,是由一個活躍的志工社群編寫的。
用法範例:影像過濾、模版匹配。
可使用「skimage」來匯入該函式庫。大多數功能都能在子模組中找到。
import matplotlib.pyplot as plt %matplotlib inline from skimage import data,filters image = data.coins() # ... or any other NumPy array! edges = filters.sobel(image) plt.imshow(edges, cmap='gray')
模式版匹配(使用match_template 函數)
# Numpy 是Python 程式設計的核心庫之一,支援數組結構。影像本質上是包含資料點像素的標準 Numpy 陣列。因此,透過使用基本的 NumPy 操作——例如切片、脫敏和花式索引,可以修改影像的像素值。可以使用 skimage 載入圖像並使用 matplotlib 顯示。
用法範例:使用Numpy 來對影像進行減敏處理:
import numpy as np from skimage import data import matplotlib.pyplot as plt %matplotlib inline image = data.camera() type(image) numpy.ndarray #Image is a numpy array mask = image < 87 image[mask]=255 plt.imshow(image, cmap='gray')
scipy 是Python的另一個核心科學模組,就像Numpy 一樣,可用於基本的影像處理和處理任務。值得一提的是,子模組 scipy.ndimage 提供了在 n 維 NumPy 陣列上運行的函數。該軟體包目前包括線性和非線性濾波、二進位形態、B 樣條插值和物件測量等功能。
用法範例:使用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>)
PIL (Python Imaging Library) 是一個免費的Python 程式語言庫,它增加了對開啟、處理和保存許多不同影像檔案格式的支援。然而,它的發展停滯不前,其最後一次更新仍在 2009 年。幸運的是, PIL 有一個正處於積極開發階段的分支 Pillow,它非常容易安裝。 Pillow 能在所有主要作業系統上運作並支援 Python 3。該庫包含基本的影像處理功能,包括點操作、使用一組內建卷積內核進行過濾以及色彩空間轉換。
用法範例:使用ImageFilter 增強Pillow 中的映像:
from PIL import Image, ImageFilter #Read image im = Image.open( 'image.jpg' ) #Display image im.show() from PIL import ImageEnhance enh = ImageEnhance.Contrast(im) enh.enhance(1.8).show("30% more contrast")
OpenCV(開源電腦視覺庫,Open Source Computer Vision Library)是電腦視覺應用中使用最廣泛的庫之一。 OpenCV-Python 是 OpenCV 的 python API。 OpenCV-Python 不僅速度快(因為後台由用 C / C 編寫的程式碼組成),也易於編碼和部署(由於前端的 Python 包裝器)。這使其成為執行計算密集型計算機視覺程式的絕佳選擇。
用法範例:使用 Pyramids 建立一個名為'Orapple'的新水果的功能
SimpleCV 也是用於建立電腦視覺應用程式的開源框架。透過它可以存取如 OpenCV 等高效能的電腦視覺庫,而無需先了解位元深度、檔案格式或色彩空間等。學習難度遠遠小於 OpenCV,正如他們的標語所說,「 它使電腦視覺變得簡單 」。支持SimpleCV 的一些觀點是:
用法舉例
Mahotas 是另一個用於Python 的電腦視覺和影像處理庫。它包含傳統的影像處理功能(如濾波和形態學操作)以及用於特徵計算的更現代的電腦視覺功能(包括興趣點檢測和局部描述符)。此介面使用 Python,適用於快速開發,但演算法是用 C 實現的,並且針對速度進行了最佳化。 Mahotas 函式庫運作很快,它的程式碼很簡單,(對其它函式庫的)依賴性也很小。建議閱讀他們的官方文件以了解更多內容。
用法範例
Mahotas 函式庫使用簡單的程式碼來完成工作。對於「 尋找 Wally 」的問題,Mahotas 完成的得很好,而且程式碼量非常小。
ITK (Insight Segmentation and Registration Toolkit) 是一個開源的跨平台系統,為開發人員提供了一整套用於影像分析的軟體工具。其中, SimpleITK 是一個建立在 ITK 之上的簡化層,旨在促進其在快速原型設計、教育以及腳本語言中的使用。 SimpleITK 是一個包含大量組件的影像分析工具包,支援一般的過濾操作、影像分割和配準。 SimpleITK 本身是用 C 編寫的,但可用於包括 Python 在內的大量程式語言。
這裡有大量說明如何使用 SimpleITK 進行教育和研究活動的 Jupyter notebook。 notebook 中示範如何使用 SimpleITK 進行使用 Python 和 R 程式語言的互動式影像分析。
用法範例
下面的動畫是使用 SimpleITK 和 Python 建立的視覺化的嚴格 CT / MR 配準過程。
pgmagick 是 GraphicsMagick 函式庫基於 Python 的包裝器。 GraphicsMagick 影像處理系統有時被稱為影像處理的瑞士軍刀。它提供了強大而高效的工具和庫集合,支援超過 88 種主要格式影像的讀取、寫入和操作,包括 DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM 和 TIFF 等重要格式。
用法範例:圖片縮放、邊緣提取
#圖片縮放
邊緣提取
Pycairo 是圖形庫cairo 的一組python 綁定。 Cairo 是一個用於繪製向量圖形的 2D 圖形庫。向量圖形很有趣,因為它們在調整大小或進行變換時不會降低清晰度。 Pycairo 函式庫可以從 Python 呼叫 cairo 指令。
用法:Pycairo 可以繪製線條、基本形狀和徑向漸層。
以上就是一些免費的優秀映像處理 Python 函式庫。有些很知名,你可能已經知道或用過,有些可能對你來說還是新的。那就剛好現在就上手操作一下,試試看!
以上是Python中的十大影像處理工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!