十個Python常用的影像處理工具
當今世界充滿了各種資料,而影像是其中高的重要組成部分。然而,若想其有所應用,我們需要對這些影像進行處理。影像處理是分析和操縱數字影像的過程,旨在提高其質量或從中提取一些資訊,然後將其用於某些方面。
影像處理中的常見任務包括顯示影像,基本操作(如裁剪、翻轉、旋轉等),影像分割,分類和特徵提取,影像恢復和影像識別等。Python之成為影像處理任務的最佳選擇,是因為這一科學程式語言日益普及,並且其自身免費提供許多最先進的影像處理工具。
讓我們看一下用於影像處理任務的一些常用Python庫。
一、scikit Image
scikit-image是一個基於numpy陣列的開源Python包。 它實現了用於研究、教育和工業應用的演算法和實用程式。 即使是對於那些剛接觸Python的人,它也是一個相當簡單的庫。 此庫程式碼質量非常高並已經過同行評審,是由一個活躍的志願者社群編寫的。
1.1 使用說明文件:
https://scikit-image.org/docs/stable/user_guide.html
1.2 用法舉例:影像過濾、模版匹配
可使用“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')
1.3 用法舉例:模版匹配(使用match_template函式)
gallery上還有更多例子。
https://scikit-image.org/docs/dev/auto_examples/
二、Numpy
Numpy是Python程式設計的核心庫之一,支援陣列結構。 影像本質上是包含資料點畫素的標準Numpy陣列。 因此,透過使用基本的NumPy操作——例如切片、脫敏和花式索引,可以修改影像的畫素值。 可以使用skimage載入影像並使用matplotlib顯示。
2.1 使用說明文件:
2.2 用法舉例:使用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
Scipy是Python的另一個核心科學模組,就像Numpy一樣,可用於基本的影像處理和處理任務。值得一提的是,子模組scipy.ndimage提供了在n維NumPy陣列上執行的函式。 該軟體包目前包括線性和非線性濾波、二進位制形態、B樣條插值和物件測量等功能。
3.1 使用說明文件:
https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution
3.2 用法舉例:使用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/ Pillow
PIL(Python Imaging Library)是一個免費的Python程式語言庫,它增加了對開啟、處理和儲存許多不同影像檔案格式的支援。 然而,它的發展停滯不前,其最後一次更新還是在2009年。幸運的是, PIL有一個正處於積極開發階段的分支Pillow,它非常易於安裝。
Pillow能在所有主要作業系統上執行並支援Python 3。該庫包含基本的影像處理功能,包括點操作、使用一組內建卷積核心進行過濾以及顏色空間轉換。
4.1 使用說明文件:
4.2 用法舉例:使用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-Python
OpenCV( 開源計算機視覺庫,Open Source Computer Vision Library)是計算機視覺應用中使用最廣泛的庫之一。OpenCV-Python是OpenCV的python API。
OpenCV-Python不僅速度快(因為後臺由用C / C ++編寫的程式碼組成),也易於編碼和部署(由於前端的Python包裝器)。 這使其成為執行計算密集型計算機視覺程式的絕佳選擇。
5.1 使用說明文件:
5.2 用法舉例:使用Pyramids建立一個名為’Orapple’的新水果的功能
六、SimpleCV
SimpleCV也是用於構建計算機視覺應用程式的開源框架。 透過它可以訪問如OpenCV等高效能的計算機視覺庫,而無需首先了解位深度、檔案格式或色彩空間等。學習難度遠遠小於OpenCV,並且正如他們的標語所說,“ 它使計算機視覺變得簡單 ”。支援SimpleCV的一些觀點是:
即使是初學者也可以編寫簡單的機器視覺測試
攝像機、影片檔案、影像和影片流都可以互動操作
6.1 使用說明文件:
6.2 用法舉例
七、Mahotas
Mahotas是另一個用於Python的計算機視覺和影像處理庫。 它包含傳統的影像處理功能(如濾波和形態學操作)以及用於特徵計算的更現代的計算機視覺功能(包括興趣點檢測和區域性描述符)。該介面使用Python,適用於快速開發,但演算法是用C ++實現的,並且針對速度進行了最佳化。
Mahotas庫執行很快,它的程式碼很簡單,(對其它庫的)依賴性也很小。建議閱讀他們的官方文件以瞭解更多內容。
7.1 使用說明文件:
7.2 用法舉例
Mahotas庫使用簡單的程式碼來完成工作。 對於“ 尋找Wally ”的問題,Mahotas完成的得很好,而且程式碼量非常小。
八、SimpleITK
ITK(Insight Segmentation and Registration Toolkit)是一個開源的跨平臺系統,為開發人員提供了一整套用於影像分析的軟體工具。 其中, SimpleITK是一個建立在ITK之上的簡化層,旨在促進其在快速原型設計、教育以及指令碼語言中的使用。
SimpleITK是一個包含大量元件的影像分析工具包,支援一般的過濾操作、影像分割和配準。SimpleITK本身是用C++編寫的,但可用於包括Python在內的大量程式語言。
8.1 使用說明文件:
這裡有大量說明了如何使用SimpleITK進行教育和研究活動的Jupyter notebook。notebook中演示瞭如何使用SimpleITK進行使用Python和R程式語言的互動式影像分析。
8.2 用法舉例
下面的動畫是使用SimpleITK和Python建立的視覺化的嚴格CT / MR配準過程。
九、pgmagick
pgmagick是GraphicsMagick庫基於Python的包裝器。GraphicsMagick 影像處理系統有時被稱為影像處理的瑞士軍刀。它提供了強大而高效的工具和庫集合,支援超過88種主要格式影像的讀取、寫入和操作,包括DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM和TIFF等重要格式。
9.1 使用說明文件:
9.2 用法舉例:圖片縮放、邊緣提取
▲圖片縮放
▲邊緣提取
十、Pycairo
Pycairo是圖形庫cairo的一組python繫結。Cairo是一個用於繪製向量圖形的2D圖形庫。 向量圖形很有趣,因為它們在調整大小或進行變換時不會降低清晰度。Pycairo庫可以從Python呼叫cairo命令。
10.1 使用說明文件:
10.2 用法舉例:Pycairo可以繪製線條、基本形狀和徑向漸變
python學習網,免費的線上學習,歡迎關注!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4650/viewspace-2835794/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 10個常用的Python影像處理工具,非常全了!Python
- 10個常用的Python影像處理工具,建議收藏!Python
- Python中的十大影像處理工具Python
- python常用的影像處理工具有哪些?工具推薦!Python
- Python 影像處理 OpenCV (6):影像的閾值處理PythonOpenCV
- Python影像處理丨5種影像處理特效Python特效
- 20 個有用的 SVG 工具,提供更好的影像處理SVG
- Python 影像處理 OpenCV (7):影像平滑(濾波)處理PythonOpenCV
- 推薦:10個Python影像處理工具Python
- 【號外】6個最好用的Python影像處理庫!Python
- Python影像處理庫——PILPython
- Python 影像處理 OpenCV (15):影像輪廓PythonOpenCV
- Matlab影像處理常用基本函式Matlab函式
- Python 影像處理 OpenCV (5):影像的幾何變換PythonOpenCV
- Python 影像處理 OpenCV (16):影像直方圖PythonOpenCV直方圖
- Python 影像處理 OpenCV (14):影像金字塔PythonOpenCV
- 影像處理--影像特效特效
- Python 影像處理 OpenCV (3):影像屬性、影像感興趣 ROI 區域及通道處理PythonOpenCV
- 常用的十大Python開發工具Python
- webgl 影像處理2---影像畫素處理Web
- Python 影像處理 OpenCV (1):入門PythonOpenCV
- python 包之 Pillow 影像處理教程Python
- Python 影像處理 OpenCV (2):畫素處理與 Numpy 操作以及 Matplotlib 顯示影像PythonOpenCV
- 影像預處理
- Python影像處理庫:Pillow 初級教程Python
- Python影像處理初探:Pillow庫的基礎使用Python
- [Python影像處理] 三十.影像量化及取樣處理萬字詳細總結(推薦)Python
- Java 8的18個常用日期處理Java
- openCV中的影像處理 3 影像閾值OpenCV
- 跟我學Python影像處理丨獲取影像屬性、興趣ROI區域及通道處理Python
- 一個瀏覽器前端影像處理庫瀏覽器前端
- 五款Python影像處理工具!Python入門分享!Python
- 技術文件:基於 Python 的影像處理系統Python
- 前端影像處理指南前端
- 影像處理_切邊
- 影像預處理方法
- 影像輪廓處理
- 紅外影像處理