摘要:接下來的學習筆記本人都將使用來代替。庫中提供的很多圖像操作都是分別作用于某個通道的數據。是最流行的開源色彩管理庫之一。目前只支持在增加和。模塊支持從圖像對象創建或的對象,方便被使用和顯示。模塊對圖像或指定區域的每個通道進行統計,包括等。
介紹
《Programming Computer Vision with Python》是一本介紹計算機視覺底層基本理論和算法的入門書,通過這本收可以學到有關對象識別、基于內容的圖像搜索、光學字符識別、光流法、跟蹤、三維重建、立體成像、增強現實、姿態估計、全景創建、圖像分割、降噪、圖像分組等技術的實現原理。
英文版PDF下載:https://it-ebooks.info/book/836/
中文版介紹:http://book.douban.com/subject/25906843/
先介紹基本的圖像處理,包括圖像的讀取、轉換、縮放、導數計算、畫圖和保存,這些知識將為后面內容的學習打下基礎。
作者選擇Python編寫例子,并使用一個叫PIL(Python Imaging Library)的第三方圖像處理庫。這里特別指出的是:PIL庫開發不活躍,并且很久沒更新了,所以有人基于它fork了另一個分支叫Pillow,Pillow保持與PIL相似的使用接口,解決了許多Bug,并同時兼容Python2和Python3,目前開發狀態活躍。接下來的學習筆記本人都將使用Pillow來代替PIL。
以Ubuntu系統為例:
#安裝python開發工具及包管理工具 sudo apt-get install python-dev python-pip #安裝一些需要支持的圖像格式開發包 sudo apt-get install libjpeg-dev libpng-dev libtiff-dev #安裝Pillow圖像處理庫 sudo pip install pillowPillow一瞥
Pillow主要包含了對各種圖像模式、圖像格式、顏色、過濾器的數據結構(對象)表示,實現了對圖像模式轉換、格式轉換、過濾器應用、常規圖像處理操作、圖像數據算術運算、2D畫圖等功能,以模塊、類對外提供。
首先,先了解一下Pillow庫使用的一些基本概念:
Bands(圖像通道)
圖像的通道即圖像像素的組成部分,跟Channel應該是同一個概念。比如RGB圖像有3個通道分別為紅、綠、藍。二值圖像和灰度圖像只有1個通道。PNG圖像有4個通道分別為R、G、B和alpha。庫中提供的很多圖像操作都是分別作用于某個通道的數據。
Modes(圖像模式)
圖像模式定義了像素的類型和位深,Pillow支持以下模式:
1 (1-bit pixels, black and white, stored with one pixel per byte)
L (8-bit pixels, black and white)
P (8-bit pixels, mapped to any other mode using a color palette)
RGB (3x8-bit pixels, true color)
RGBA (4x8-bit pixels, true color with transparency mask)
CMYK (4x8-bit pixels, color separation)
YCbCr (3x8-bit pixels, color video format)
LAB (3x8-bit pixels, the Lab color space)
HSV (3x8-bit pixels, Hue, Saturation, Value color space)
I (32-bit signed integer pixels)
F (32-bit floating point pixels)
模塊概覽
Pillow的功能劃分為許多模塊,我們簡單過一下這些模塊的功能,以便在看到作者的示例代碼時,可以快速知道這些代碼功能在Pillow哪些模塊中提供。因為作者使用的PIL庫已經過時,我們得用新的Pillow庫來重寫和改進代碼。
Image模塊
提供了一個叫Image的類來表示圖像,以下提到的PIL圖像指的就是此類的對象。Image對象可以使用Image.new、Image.fromarray、Image.frombytes、Image.frombuffer等方法來構造,也可以open一張圖片來構造。Image類提供了一些對圖像進行簡單處理的方法(如:convert、copy、crop、filter、resize、rotate、save、show、transform等)和圖像的基本屬性/信息。以下代碼示例打開一張圖片,旋轉45度后顯示出來:
from PIL import Image im = Image.open("bride.jpg") im.rotate(45).show()
ImageChops模塊
提供了一些對圖像顏色通道的算術運算,Chops為Channel Operations的縮寫,這些運算通常是對兩幅圖像進行的,并返回一幅處理后的圖像,大部分操作目前只支持8-bit通道。
ImageColor模塊
包含一個顏色表和一個從CSS3表示的顏色到RGB顏色的轉換器,主要用于方便構造Image對象,即PIL.Image.new(mode, size, color=0)的color參數支持以下形式:
16進制的顏色表示,如#rgb, #rrggbb
rgb函數,如rgb(255,0,0), rgb(100%, 0%, 100%)
HSL(色相、飽和、亮度)函數,如hsl(0,100%,100%),色相取值為0到360,飽和度和亮度取值為0%到100%
常規的HTML顏色名字,如red, Red
ImageCms模塊
提供對LittleCMS2色彩管理引擎的支持。Little CMS是最流行的開源色彩管理庫之一。
ImageDraw模塊
提供簡單的2D畫圖功能,比如畫點、畫線、畫矩形、多邊形、文本、弧形、橢圓等,支持字體設置。
ImageEnhance模塊
提供一些類用于圖像增強操作,比如邊緣銳化、色彩平衡、對比度和亮度調節等。
ImageFile模塊
提供圖像文件的打開和保存,另外,還提供了一個Parser類,用于支持對圖片邊讀邊解碼(比如圖片邊從網絡上下載邊解碼的情景)。
ImageFilter模塊
預定義了一些過濾器,可以在Image.filter(filter)中作為參數使用:
BLUR(模糊效果)
CONTOUR(輪廓)
DETAIL(細節)
EDGE_ENHANCE(邊緣加強)
EDGE_ENHANCE_MORE(邊緣加強)
EMBOSS(浮雕效果)
FIND_EDGES(查找邊緣)
SMOOTH(使光滑)
SMOOTH_MORE(使光滑)
SHARPEN(銳化)
ImageFont模塊
定義了類ImageFont表示位圖字體(點陣字體),字體對象可以作為參數傳給ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None)以指定的字體畫文本。
PIL使用自有格式存儲位圖字體,從1.1.4開始,支持TrueType和OpenType字體。
ImageGrab模塊
從屏幕截圖或從剪貼板獲取圖像,得到Image對象。目前只支持OSX(在3.0增加)和Windows。
ImageMath模塊
只提供了一個函數ImageMath.eval用于對圖像表達式(image expressions)進行求值,這些表達式可以是對圖像數據每個bit的位運算(&、|、^、~),也可以是內置的一些運算,比如對圖像的每個像素求絕對值、轉換圖像模式、轉float或int等。
ImageMorph模塊
提供圖像形態操作。
ImageOp模塊
提供一些可直接使用的圖像處理操作,如自動調節對比度、自動裁邊等。
ImagePalette模塊
提供調色板類,其中的方法都被標記為experimental,文檔不詳。
ImagePath模塊
用于存儲和操作2維向量數據。Path對象可傳入ImageDraw模塊的相關方法。
ImageQt模塊
支持從PIL圖像對象創建PyQt4或PyQt5的QImage對象,方便被Qt使用和顯示。
ImageSequence模塊
支持枚舉出一個image sequence(圖像系統,如fli動畫文件)的所有幀。
ImageStat模塊
對圖像或指定區域的每個通道進行統計,包括count、sum、min/max等。
ImageTk模塊
支持從PIL圖像對象創建Tkinter(Python的GUI庫)的BitmapImage和PhotoImage對象。
ImageWin模塊
支持在Windows平臺上創建和顯示圖像,可與PythonWin和其它UI庫一起使用,為這些工具庫提供Windows設備上下文或windows句柄的訪問。
最后給出一個簡單的示例,把書的彩色封面圖像轉為灰度圖像并顯示出來:
from PIL import Image pil_im = Image.open("cover.png").convert("L") pil_im.show()
效果如下:
小結下一個筆記將介紹另外幾個圖像處理相關的庫。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44178.html
摘要:學習筆記七數學形態學關注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學習筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現代方法基于區域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個提問: pyth...
摘要:下面是二維空間的高斯分布函數公式這個公式被稱作高斯核。高斯模糊使用高斯平均算子來實現的圖像模糊叫高斯模糊,也叫高斯平滑被認為是一種最優的圖像平滑處理。 SciPy庫 SciPy庫,與之前我們使用的NumPy和Matplotlib,都是scipy.org提供的用于科學計算方面的核心庫。相對NumPy,SciPy庫提供了面向更高層應用的算法和函數(其實也是基于NumPy實現的),并以子模塊...
摘要:簡稱庫是從擴展下來的,提供了更豐富的圖像處理函數,去噪函數除了還有算法,比如邊緣檢測還有以前簡單提過的算子濾波器。下面我用看具體的例子,將和高斯平滑進行對比效果對比如下明顯感覺使用的效果要比高斯平滑好很多。 圖像去噪(Image Denoising)的過程就是將噪點從圖像中去除的同時盡可能的保留原圖像的細節和結構。這里講的去噪跟前面筆記提過的去噪不一樣,這里是指高級去噪技術,前面提過的...
摘要:圖像矩圖像矩或稱幾何矩是由在年提出的。矩給出了對圖像形狀的一種度量。使用建議的第二種采樣方法即以圖像中心進行高斯分布采樣,長度使用,然后在基礎上增加了旋轉的描述以及快速的計算方法,這種方法被稱為。 ORB(Oriented FAST and Rotated BRIEF)可用來替代SIFT(或SURF),它對圖像更具有抗噪特性,是一種特征檢測高效算法,其速度滿足實時要求,可用于增強圖像匹...
閱讀 3313·2023-04-26 00:58
閱讀 1268·2021-09-22 16:04
閱讀 3311·2021-09-02 15:11
閱讀 1554·2019-08-30 15:55
閱讀 2339·2019-08-30 15:55
閱讀 3248·2019-08-23 18:41
閱讀 3458·2019-08-23 18:18
閱讀 2752·2019-08-23 17:53