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模块介绍的更多相关文章

  1. Python图像处理库PIL的ImageSequence模块介绍

    ImageSequence模块包括了一个wrapper类,它能够让用户迭代訪问图形序列中每一帧图像. 一.ImageSequence模块的函数 1.  Iterator 定义:ImageSequenc ...

  2. python图像处理库PIL的基本概念介绍

    PIL中所涉及的基本概念有如下几个:通道(bands).模式(mode).尺寸(size).坐标系统(coordinate system).调色板(palette).信息(info)和滤波器(filt ...

  3. Python图像处理库PIL中图像格式转换(一)

    在数字图像处理中,针对不同的图像格式有其特定的处理算法. 所以,在做图像处理之前,我们须要考虑清楚自己要基于哪种格式的图像进行算法设计及事实上现.本文基于这个需求.使用python中的图像处理库PIL ...

  4. Python图像处理库PIL中图像格式转换

    o 在数字图像处理中,针对不同的图像格式有其特定的处理算法.所以,在做图像处理之前,我们需要考虑清楚自己要基于哪种格式的图像进行算法设计及其实现.本文基于这个需求,使用python中的图像处理库PIL ...

  5. Python图像处理库——PIL

    PIL全称Python Image Library,是python官方的图像处理库,包含各种图像处理模块.Pillow是PIL的一个派生分支,包含与PIL相同的功能,并且更灵活.python3.0之后 ...

  6. Python图像处理库(PIL)

    官方:(详细)http://pillow.readthedocs.io/en/3.1.x/reference/ImageDraw.html http://pillow.readthedocs.io/e ...

  7. Python图像处理库PIL从入门到精通

    https://blog.csdn.net/column/details/pythonpil.html 示例: from PIL import Image import pytesseract pyt ...

  8. Python图像处理库:PIL中Image,ImageDraw等基本模块介绍

    Python图像处理库:PIL中Image,ImageDraw等基本模块介绍 标签: 图像处理PILPYTHON 2016-08-19 10:58 461人阅读 评论(0) 收藏 举报  分类: 其他 ...

  9. Python图像处理库(1)

    转自:http://www.ituring.com.cn/tupubarticle/2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Py ...

随机推荐

  1. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...

  2. Tachyon在Spark中的作用(Tachyon: Reliable, Memory Speed Storage for Cluster Computing Frameworks 论文阅读翻译)

    摘要:         Tachyon是一种分布式文件系统,能够借助集群计算框架使得数据以内存的速度进行共享.当今的缓存技术优化了read过程,可是,write过程由于须要容错机制,就须要通过网络或者 ...

  3. ida动态调试so,在init_array和JNI_ONLOAD处下断点

    本文涉及到的apk.请在github下载https://github.com/jltxgcy/AliCrack/AliCrackme_2.apk. 0x00 怎样在JNI_ONLOAD下断点.參考安卓 ...

  4. CxImage学习

    官方下载地址是:http://www.xdp.it/cximage/ 打开工程后可以看到下例这些工程: - CxImage - CxImageCrtDll - CxImageMfcDll - dome ...

  5. 12.boost有向图无向图(矩阵法)

    #include <iostream> #include <boost/config.hpp> //图 #include <boost/graph/adjacency_m ...

  6. Android 去掉TabLayout下的阴影,AppBarLayout下的阴影

    开始还以为是TabLayout在高版本系统上的特殊表现呢,没有在意,UI提出说感觉不好看就查了一下,原来是在TabLayout放在AppBarLayout里面才有这样的效果,只需要对AppBarLay ...

  7. Android setImageResource与setImageBitmap的区别

    同样的布局文件,小分辨率手机: 1.使用setImageBitmap设置时,出现如下现象: 2.使用setImageResource时,图片显示正常 原因:setImageResource(id)会根 ...

  8. Android封装类似微信的顶部TitleBar弹出的PopupWindow代码

    Android仿微信顶部titlebar,点击加号弹出的PopupWindow,是封装好的PopupWindow,直接拿来用即可,先看效果图:  调用代码非常简单,这是MainActivity的代码: ...

  9. JavaScript学习——使用JS实现首页轮播图效果

    1.相关技术 获取元素 document.getElementById(“id 名称”) 事件(onload) 只能写一次并且放到body标签中 定时操作:setInterval(“changeImg ...

  10. CF 286(div 2) B Mr. Kitayuta's Colorful Graph【传递闭包】

    解题思路:给出n个点,m条边(即题目中所说的两点之间相连的颜色) 询问任意两点之间由多少种不同的颜色连接 最开始想的时候可以用传递闭包或者并查集来做,可是并查集现在还不会做,就说下用传递闭包来做的这种 ...