Python中的十大圖像處理工具

2021-12-10 頂級程式設計師

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

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

讓我們看一下用於圖像處理任務的一些常用Python庫。

01 scikit Image

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

使用說明文檔:

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

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

import matplotlib.pyplot as plt
%matplotlib inline
from skimage import data,filters
image = data.coins()

edges = filters.sobel(image)
plt.imshow(edges, cmap='gray')

gallery上還有更多例子。

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

02 Numpy

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

使用說明文檔:

http://www.numpy.org/

import numpy as np
from skimage import data
import matplotlib.pyplot as plt
%matplotlib inline
image = data.camera()
type(image)
numpy.ndarray 
mask = image < 87
image[mask]=255
plt.imshow(image, cmap='gray')

03 Scipy

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

使用說明文檔:

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

from scipy import misc,ndimage
face = misc.face()
blurred_face = ndimage.gaussian_filter(face, sigma=3)
very_blurred = ndimage.gaussian_filter(face, sigma=5)

plt.imshow(<image to be displayed>)


04 PIL/ Pillow

PIL(Python Imaging Library)是一個免費的Python程式語言庫,它增加了對打開、處理和保存許多不同圖像文件格式的支持。 然而,它的發展停滯不前,其最後一次更新還是在2009年。幸運的是, PIL有一個正處於積極開發階段的分支Pillow,它非常易於安裝。

Pillow能在所有主要作業系統上運行並支持Python 3。該庫包含基本的圖像處理功能,包括點操作、使用一組內置卷積內核進行過濾以及顏色空間轉換。

使用說明文檔:

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

from PIL import Image, ImageFilter

im = Image.open( 'image.jpg' )

im.show()
from PIL import ImageEnhance
enh = ImageEnhance.Contrast(im)
enh.enhance(1.8).show("30% more contrast")

05 OpenCV-Python

OpenCV( 開源計算機視覺庫,Open Source Computer Vision Library)是計算機視覺應用中使用最廣泛的庫之一。OpenCV-Python是OpenCV的python API。

OpenCV-Python不僅速度快(因為後臺由用C / C ++編寫的代碼組成),也易於編碼和部署(由於前端的Python包裝器)。 這使其成為執行計算密集型計算機視覺程序的絕佳選擇。

使用說明文檔:

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


06 SimpleCV

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

即使是初學者也可以編寫簡單的機器視覺測試

攝像機、視頻文件、圖像和視頻流都可以交互操作

使用說明文檔:

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

07 Mahotas

Mahotas是另一個用於Python的計算機視覺和圖像處理庫。 它包含傳統的圖像處理功能(如濾波和形態學操作)以及用於特徵計算的更現代的計算機視覺功能(包括興趣點檢測和局部描述符)。該接口使用Python,適用於快速開發,但算法是用C ++實現的,並且針對速度進行了優化。

Mahotas庫運行很快,它的代碼很簡單,(對其它庫的)依賴性也很小。建議閱讀他們的官方文檔以了解更多內容。

使用說明文檔:

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

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

08 SimpleITK

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配準過程。

09 pgmagick

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

使用說明文檔:

https://github.com/hhatto/pgmagick

▲圖片縮放

▲邊緣提取

10 Pycairo

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

使用說明文檔:

https://github.com/pygobject/pycairo

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

相關報導:

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

相關焦點

  • 在Windows配置Python的圖像處理(pillow,matplotlib,opencv)
    介紹1.1 介紹Python處理圖像有幾個常用的庫,包括Pillow、Matplotlib、OpenCV,今天童鞋們就跟著福哥對這三種庫進行一個初步了解吧。我們先學習這三個庫的安裝方法,再學習這三個庫的基本使用方法,大家可以根據實際情況進行選擇。2.
  • Python PIL庫圖像處理基本操作
    介紹    PIL(Python Image Library)是python的第三方圖像處理庫,但是由於其強大的功能與眾多的使用人數,幾乎已經被認為是python官方圖像處理庫了。其官方主頁為:PIL。
  • Python中pip工具丟失的處理
    pip 是 Python 包管理工具,該工具提供了對Python 包的查找、下載、安裝、卸載的功能。
  • 【乾貨】計算機視覺實戰系列01——用Python做圖像處理
    專知成員hui計劃推出一系列計算機視覺入門實戰講解,以時下最流行的Python語言為工具,對圖像處理技術的具體操作進行詳細講述,旨在讓零基礎的讀者也可以輕鬆上手! 基本的圖像操作和處理 Python中有好多工具包應用於圖像處理當中,這一節作為入門章節,首先來介紹Python中最基本的幾個工具包,也希望讀者可以在之後自行練習。
  • 【乾貨】計算機視覺實戰系列06——用Python做圖像處理
    【乾貨】計算機視覺實戰系列01——用Python做圖像處理(基本的圖像操作和處理)【乾貨】計算機視覺實戰系列02——用Python做圖像處理(Matplotlib基本的圖像操作和處理)【乾貨】計算機視覺實戰系列03——用Python做圖像處理(Numpy基本操作和圖像灰度變換)【乾貨】計算機視覺實戰系列04——用Python做圖像處理(圖像的縮放
  • 【乾貨】計算機視覺實戰系列03——用Python做圖像處理
    Numpy基本操作和圖像灰度變換Python中有好多工具包應用於圖像處理當中,本章作為入門章節,首先來介紹Python中最基本的幾個工具包,也希望讀者可以在之後自行練習。 ▌NumpyNumpy中的數組對象可以幫助我們進行數組的重要操作,比如矩陣乘積、轉置、解方程系統、向量乘積歸一化,通過這些操作,我們可以對圖像進行建模、圖像分類、圖像聚類等複雜的圖像處理工作。
  • 【乾貨】計算機視覺實戰系列08——用Python做圖像處理
    【導讀】在前面幾講中,專知成員Hui介紹了PIL、Matplotlib、Numpy、SciPy等Python圖像處理的工具包。
  • 可去圖像馬賽克的工具發布
    在具有相同字體設置(文本大小,字體,顏色,hsl)的編輯器中,粘貼帶有預期字符的De Bruijn序列。製作序列的屏幕截圖。如果可能,請使用與創建像素化圖像相同的屏幕截圖工具。運行 python depix.py -p [pixelated rectangle image] -s [search sequence image] -o output.png算法該算法利用線性濾波器分別處理每個塊。對於每個塊,它將對搜索圖像中的所有塊進行像素化以檢查直接匹配。
  • 10 個 Python 圖像編輯工具
    當今的世界充滿了數據,而圖像數據就是其中很重要的一部分。但只有經過處理和分析,提高圖像的質量,從中提取出有效地信息,才能利用到這些圖像數據。常見的圖像處理操作包括顯示圖像,基本的圖像操作,如裁剪、翻轉、旋轉;圖像的分割、分類、特徵提取;圖像恢復;以及圖像識別等等。Python 作為一種日益風靡的科學程式語言,是這些圖像處理操作的最佳選擇。
  • 實戰 | 用Python做圖像處理(一)
    Python中有好多工具包應用於圖像處理當中,這一節(基本的圖像操作和處理)作為入門章節,首先來介紹Python中最基本的幾個工具包,也希望讀者可以在之後自行練習
  • Python圖像處理介紹--彩色圖像的直方圖處理
    點擊上方「小白學視覺」,選擇加"星標"或「置頂」重磅乾貨,第一時間送達引言在昨天的文章中我們介紹了基於灰度圖像的直方圖處理,也簡單的提到了彩色圖像的直方圖處理,但是沒有討論最好的方法。為了幫助我們更好地了解此圖像中的 RGB 圖層,讓我們隔離每個單獨的通道。
  • 實戰 | 用Python做圖像處理(三)
    圖像的縮放、均勻操作、直方圖均衡化及降噪▌圖像的縮放Numpy的數組對象是我們處理圖像和數據的主要工具。想要對圖像進行縮放處理沒有現成的簡單的方法。mean()函數需要將所有的圖像堆積到一個數組中;也就是說,如果有很多幅圖像,該處理方式會佔用大量內存。
  • OpenCV之圖像處理基礎
    需要說明的是,在使用面向python的OpenCV必須熟練掌握Numpy庫,尤其是Numpy.array庫是python處理圖像的基礎。圖像的基本表示方法這裡只討論二值圖像、灰度圖像、彩色圖像的基本表示方法。二值圖像二值圖像是指僅僅包含黑色和白色兩種顏色的圖像。在計算機中,將白色像素點處理為「1」,將黑色像素點處理為「0」,以方便進行後續的存儲和處理等操作。
  • Python中的圖像增強技術
    AI 前線導讀:圖像增強是一種非常強大的技術,針對現有圖像人為創建各種變化以擴展圖像數據集,例如縮放現有圖像、將現有圖像旋轉幾度、剪切或裁剪圖像等等。在本文中,我們將使用 imgaug 庫探索 Python 中的圖像增強技術。
  • 20 個有用的 SVG 工具,提供更好的圖像處理
    SVG 現正在 Web 設計領域變得越發流行, 你可以使用 Illustrator 或者 Inkscape 來創建 SVG 圖像。 但當進行 Web 設計時,我們還需要做一些優化來使得 SVG 變得更加輕量。下面介紹的 20 個工具,可以幫助你快速有效的創建 SVG 圖像。現有的在線工具已經可以幫助我們進行優化、轉換、新建模式等工作。
  • Python的圖像處理庫Pillow使用教程
    介紹1.1 介紹福哥今天要詳情的跟大家講講圖像處理庫Pillow的使用技巧,Pillow是一個非常強大的圖像處理庫,基本可以滿足日常使用當中的所有圖片加工的需求。學會Pillow庫的使用技巧,就可以對我們的照片進行自動化的加工處理了。2.
  • OpenCV 教程 之 圖像處理
    1、安裝pip install opencv-python
  • 基本概念:亮度、對比度、飽和度、銳化、解析度【數字圖像處理系列二】
    python版本:python3.5.4 ; opencv-python版本:opencv-python3.4.2.17使用的開發環境是
  • 機器視覺圖像處理——基於LabVIEW圖像管理與顯示
    事件捕捉器13.IMAQ WindToolsSetup:配置將在工具條中出現的ROI工具14.IMAQ WindToolsSelect:可以在ROI工具條顯示或隱藏的情況下,判斷當前已被選中的ROI工具或重新選中某個ROI工具15.IMAQ WindToolsShow:判斷ROI工具條是否處於顯示狀態,或重新顯示/隱藏ROI工具條16.IMAQ WindToolsMove:獲取ROI工具條當前的位置坐標或重新設置其顯示位置17.IMAQ WindToolsClose:關閉顯示的ROI工具條ROI與圖像的遮罩
  • Python 進階必備:圖像庫 pillow
    印象中大約是2015年前後(網上檢索不到這一段歷史),PIL 不再有更新,取而代之的,則是 PIL 的嫡傳分支 pillow —— 完全繼承了 PIL 的 API,且支持 py3 的圖像庫。儘管我們在提到圖像處理時經常會提到 PIL,但一般情況下是指 pillow。