一提到處理啤覆,大部分人會想到Matlab苍日,但是Matlab也有很多缺點:
- 不開源,價格貴
- 軟件容量大窗声。一般3G以上相恃,高版本甚至達(dá)5G以上。
- 只能做研究笨觅,不易轉(zhuǎn)化成軟件拦耐。
因此,我們這里使用python這個腳本語言來進(jìn)行數(shù)字圖像處理见剩。
要使用python杀糯,必須先安裝python,一般是2.7版本以上炮温,不管是在windows系統(tǒng)火脉,還是linux系統(tǒng),安裝都是非常簡單的柒啤。
要使用python進(jìn)行各種開發(fā)和科學(xué)計算,還需要安裝對應(yīng)的包畸颅。這和Matlab非常相似担巩,只是Matlab里面叫工具箱(toolbox),而python里面叫庫或包没炒√伟基于python腳本語言開發(fā)的數(shù)字圖片處理包,其實很多送火,比如PIL,Pillow, opencv, scikit-image等拳话。
對比這些包,PIL和Pillow只提供最基礎(chǔ)的數(shù)字圖像處理种吸,功能有限弃衍;opencv實際上是一個c++庫,只是提供了python接口坚俗,更新速度非常慢镜盯。到現(xiàn)在python都發(fā)展到了3.5版本岸裙,而opencv只支持到python 2.7版本;scikit-image是基于scipy的一款圖像處理包速缆,它將圖片作為numpy數(shù)組進(jìn)行處理降允,正好與matlab一樣,因此艺糜,我們最終選擇scikit-image進(jìn)行數(shù)字圖像處理剧董。
一、需要的安裝包
因為scikit-image是基于scipy進(jìn)行運算的破停,因此安裝numpy和scipy是肯定的送滞。要進(jìn)行圖片的顯示,還需要安裝matplotlib包辱挥,綜合起來犁嗅,需要的包有:
Python >= 2.6
Numpy >= 1.6.1
Cython >= 0.21
Six >=1.4
SciPy >=0.9
Matplotlib >= 1.1.0
NetworkX >= 1.8
Pillow >= 1.7.8
dask[array] >= 0.5.0
比較,安裝起來非常費事晤碘,尤其是scipy褂微,在windows上基本安裝不上。但是不用怕园爷,我們選擇一款集成安裝環(huán)境就行了宠蚂,在此推薦Anaconda, 它把以上需要的包都集成在了一起,因此我們實際上從頭到尾只需要安裝Anaconda軟件就行了童社,其它什么都不用裝求厕。
二、安裝Anaconda
先到官網(wǎng)下載anaconda, 現(xiàn)在的版本有python2.7版本和python3.5版本扰楼,下載好對應(yīng)版本呀癣、對應(yīng)系統(tǒng)的anaconda,它實際上是一個sh腳本文件弦赖,大約300多M左右项栏。
這部分很簡單,按照官網(wǎng)上的就可以了蹬竖,安裝時需要指定一下安裝目錄沼沈,然后就是等待安裝完成了,記得將安裝路徑配置到環(huán)境變量當(dāng)中。
安裝完成后币厕,打開終端:
輸入conda list
就可以查詢現(xiàn)在安裝了哪些庫列另,常用的numpy, scipy名列其中。如果你還有什么包沒有安裝上旦装,可以運行
conda install abc
來進(jìn)行安裝页衙。(abc為需要的包的名稱)
如果某個包版本不是最新的,運行 conda update abc
就可以更新了同辣。
三拷姿、簡單測試
進(jìn)入Python交互界面惭载,輸入:
import skimage
如果沒有任何提示,即安裝成功响巢。
四描滔、skimage的子模塊介紹
skimage包的全稱是scikit-image SciKit (toolkit for SciPy) ,它對scipy.ndimage進(jìn)行了擴(kuò)展踪古,提供了更多的圖片處理功能含长。它是由python語言編寫的,由scipy 社區(qū)開發(fā)和維護(hù)伏穆。skimage包由許多的子模塊組成拘泞,各個子模塊提供不同的功能。主要子模塊如下:
- io:讀取枕扫、保存和顯示圖片或視頻
- data:提供一些測試圖片和樣本數(shù)據(jù)
- color:顏色空間變換
- filters:圖像增強(qiáng)陪腌、邊緣檢測、排序濾波器烟瞧、自動閾值等
- draw:操作于numpy數(shù)組上的基本圖形繪制诗鸭,包括線條、矩形参滴、圓和文本等
- transform:幾何變換或其它變換强岸,如旋轉(zhuǎn)、拉伸和拉東變換等
- morphology:形態(tài)學(xué)操作砾赔,如開閉運算蝌箍、骨架提取等
- exposure:圖片強(qiáng)度調(diào)整,如亮度調(diào)整暴心、直方圖均衡等
- feature:特征檢測與提取等
- measure:圖像屬性的測量妓盲,如相似性或等高線等
- segmentation:圖像分割
- restoration:圖像恢復(fù)
- util:通用函數(shù)
用到一些圖片處理的操作函數(shù)時,需要導(dǎo)入對應(yīng)的子模塊酷勺,如果需要導(dǎo)入多個子模塊本橙,則用逗號隔開,如:
from skimage import data, color, io