Python影像處理庫PIL的ImageStat模組介紹

來源:互聯網
上載者:User

標籤:layer   它的   ast   編輯器   資料   定義   含義   lis   ima   

ImageStat模組用於計算整個映像或者映像的一個地區的統計資料。

一、ImageStat模組的函數

1、  Stat

定義1:ImageStat.Stat(image)? Stat instance

  ImageStat.Stat(image, mask)? Stat instance

含義1:計算給定映像的統計值。

假設變數mask被賦值,將僅僅針對變數mask所定義的地區進行統計。

範例1:

>>> from PIL importImage, ImageStat>>> im01 =Image.open("D:\\Code\\Python\\test\\img\\test01.jpg")>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>> r,g,b =im02.split()>>> stat =ImageStat.Stat(im01)>>> stat.sum[120170597.0, 151378139.0,151481196.0]>>> stat.count[786432, 786432, 786432]>>> stat_r =ImageStat.Stat(im01,r)>>> stat_r.sum[120170597.0, 151378139.0,151481196.0]>>> stat_r.count[786432, 786432, 786432]>>> stat_g =ImageStat.Stat(im01,g)>>> stat_g.sum[116891840.0, 146593055.0,145616479.0]>>> stat_g.count[760083, 760083, 760083]>>> stat_b =ImageStat.Stat(im01,b)>>> stat_b.sum[111057281.0, 140047475.0,139208738.0]>>> stat_b.count[729161, 729161, 729161]


定義2:ImageStat.Stat(list)? Stat instance

含義2:與定義1一樣。可是它僅僅計算前一個長條圖的統計值。

範例2:

>>> from PIL importImage, ImageStat>>> im01 =Image.open("D:\\Code\\Python\\test\\img\\test01.jpg")>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>> stat = ImageStat.Stat(im01)>>> stat_l =ImageStat.Stat([0,0,100,100])>>> stat_l.count[200]>>> stat_l.sum Traceback (most recent calllast):  File "<pyshell#65>", line 1,in <module>    stat_l.sum  File"C:\Python27\lib\site-packages\PIL\ImageStat.py", line 48, in__getattr__    v = getattr(self, "_get" + id)()  File"C:\Python27\lib\site-packages\PIL\ImageStat.py", line 84, in _getsum    layerSum += j * self.h[i + j]IndexError: list index out ofrange>>> stat_l.mean[]>>> stat_l.bands[]>>> stat_l.h[0, 0, 100, 100]


從python編輯器的提示看,對象stat_l僅僅有四個屬性,分別為count,h。mean和bands,其並沒有sum屬性。

二、ImageStat模組的屬性

以下的屬性對於映像的每一個通道。擁有一個相應的僅含一個元素的序列。

這些屬性都是僅僅有在調用的時候才會去計算。否則不會做計算。

1、 Extrema

定義:stat.extrema

含義:擷取映像中每一個通道的最大值和最小值。

範例:

>>> from PIL importImage, ImageStat>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>> stat =ImageStat.Stat(im02)>>> stat.extrema[(2, 255), (0, 255), (0, 255)]

映像im02中,紅色通道的最小值為2,最大值為255;綠色和藍色通道的最小值均為0,最大值均為255。

2、 Count

定義:stat.count

含義:擷取映像中每一個通道的像素個數。

範例:

>>> from PIL importImage, ImageStat>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>> im02.mode'RGB'>>> im02.size(1024, 768)>>> stat =ImageStat.Stat(im02)>>>stat.count[786432, 786432,786432]

映像im02的模式為“RGB”,其尺寸為1024x768。像素點個數為786432。

所以屬性count統計的結果為三個通道均為786432。

3、 Sum

定義:stat.sum

含義:擷取映像中每一個通道的像素值之和。

範例:

>>> from PIL import Image, ImageStat>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>> stat = ImageStat.Stat(im02)>>> stat.sum[90912466.0,75765120.0, 59027727.0]

映像im02的三個通道的像素值累加和分別為90912466.0, 75765120.0, 59027727.0。

4、 Sum2

定義:stat.sum2

含義:擷取映像中每一個通道的像素值平方之和。

範例:

>>>from PIL import Image, ImageStat>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>>stat = ImageStat.Stat(im02)>>>stat.sum[90912466.0,75765120.0, 59027727.0]>>>stat.sum2[14449895138.0,12289898764.0, 9141884969.0]

屬性sum2統計的是各個通道的像素值平方之和,並不是和的平方。

5、  Mean

定義:stat.mean

含義:擷取映像中每一個通道的像素值的平均值。

範例:

>>>from PIL import Image, ImageStat>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>>stat = ImageStat.Stat(im02)>>>stat.sum[90912466.0,75765120.0, 59027727.0]>>>stat.count[786432, 786432,786432]>>>stat.mean[115.60117848714192,96.34033203125, 75.05763626098633]

從執行個體中能夠看出,屬性mean為每一個通道的像素值之和除以像素個數。精確到小數點後14位。

6、 Median

定義:stat.mean

含義:擷取映像中每一個通道的像素值的中值。

範例:

>>> from PIL import Image, ImageStat>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>> stat = ImageStat.Stat(im02)>>> stat.extrema[(2, 255), (0,255), (0, 255)]>>>stat.median[119, 80, 40]

屬性median擷取了每一個通道像素值得中值。

7、  Rms

定義:stat.rms

含義:擷取映像中每一個通道的像素值的均方根值。均方根值。也稱方均根值或有效值。它的計算方法是先平方、再平均、然後開方。即:將N個項的平方和除以N後開平方的結果,即均方根的結果。其計算公式為:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">                             

範例:

>>>from PIL import Image, ImageStat>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>>stat = ImageStat.Stat(im02)>>>stat.rms[135.55069835243268,125.00965724006934, 107.81701101697355]

8、  Var

定義:stat.var

含義:擷取映像中每一個通道的像素值的方差值。方差(variance)是在機率論和統計方差衡量隨機變數或一組資料時離散程度的度量。機率論中方差用來度量隨機變數和其數學期望(即均值)之間的偏離程度。統計中的方差(樣本方差)是各個資料分別與其平均數之差的平方的和的平均數。

範例:

>>>from PIL import Image, ImageStat>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>>stat = ImageStat.Stat(im02)>>>stat.var[5010.359356216148,6345.954827388127, 5990.859103547667]

9、  Stddev

定義:stat.stddev

含義:擷取映像中每一個通道的像素值的標準差值。

標準差也被稱為標準差。標準差(Standard Deviation)描寫敘述各資料偏離平均數的距離(離均差)的平均數。它是方差平方和平均後的方根,用σ表示。

標準差是方差的算術平方根。

標準差能反映一個資料集的離散程度。標準差越小。這些值偏離平均值就越少。反之亦然。標準差的大小可通過標準差與平均值的倍率關係來衡量。

標準差的公式例如以下:

 

範例:

>>>from PIL import Image, ImageStat>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")>>>stat = ImageStat.Stat(im02)>>>stat.stddev[70.78389192617306,79.66150153862358, 77.40064020114863]

通過執行個體可知。映像im02中,紅色通道的像素值最接近平均值。

Python影像處理庫PIL的ImageStat模組介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.