2025年【计算视觉】Python图像处理库PIL的ImageStat模块介绍

【计算视觉】Python图像处理库PIL的ImageStat模块介绍ImageStat 模块用于计算整个图像或者图像的一个区域的统计数据 一 ImageStat 模块的函数 1 Stat 定义 1 ImageStat Stat image Stat instance ImageStat Stat image mask Stat instance 含义 1 计算给定图像的统计值

大家好,我是讯享网,很高兴认识大家。

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   [.0, .0,.0]   >>> stat.count   [, , ]   >>> stat_r =ImageStat.Stat(im01,r)   >>> stat_r.sum   [.0, .0,.0]   >>> stat_r.count   [, , ]   >>> stat_g =ImageStat.Stat(im01,g)   >>> stat_g.sum   [.0, .0,.0]   >>> stat_g.count   [, , ]   >>> stat_b =ImageStat.Stat(im01,b)   >>> stat_b.sum   [.0, .0,.0]   >>> stat_b.count   [, , ]

讯享网

定义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   [, ,]

图像im02的模式为“RGB”,其尺寸为1024x768,像素点个数为。所以属性count统计的结果为三个通道均为。

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   [.0,.0, .0]

图像im02的三个通道的像素值累加和分别为.0, .0, .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   [.0,.0, .0]   >>>stat.sum2   [.0,.0, .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   [.0,.0, .0]   >>>stat.count   [, ,]   >>>stat.mean   [115.192,96., 75.033]

从实例中可以看出,属性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后开平方的结果,即均方根的结果。其计算公式为:

                             

例子:

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

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.8,6345.7, 5990.7]

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.306,79.358, 77.863]

通过实例可知,图像im02中,红色通道的像素值最接近平均值。
--------------------- 
作者:icamera0 
原文:https://blog.csdn.net/icamera0/article/details/ 

小讯
上一篇 2025-03-30 11:43
下一篇 2025-04-02 12:47

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/14862.html