现在的位置: 主页 > 商讯 > 文章列表

Python图像处理库PIL的ImageStat模块统计数据介绍

作者:程力专用汽车股份有限公司 来源:www.chLiw.com 发布时间:2017-09-08 21:57:41
Python图像处理库PIL的ImageStat模块统计数据介绍

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 "", line 1,in 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位。

定义: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后开平方的结果,即均方根的结果。其计算公式为:

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:天门网站建设 http://tianmen.45qun.com

上一篇:关于做网站(仿站)的一些看法 下一篇:最后一页