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 "<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模块的属性
以下的属性对于图像的每一个通道。拥有一个相应的仅含一个元素的序列。
这些属性都是仅仅有在调用的时候才会去计算。否则不会做计算。
定义: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。
定义: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。
定义: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。
定义: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后开平方的结果,即均方根的结果。其计算公式为:
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模块介绍的更多相关文章
- Python图像处理库PIL的ImageSequence模块介绍
ImageSequence模块包括了一个wrapper类,它能够让用户迭代訪问图形序列中每一帧图像. 一.ImageSequence模块的函数 1. Iterator 定义:ImageSequenc ...
- python图像处理库PIL的基本概念介绍
PIL中所涉及的基本概念有如下几个:通道(bands).模式(mode).尺寸(size).坐标系统(coordinate system).调色板(palette).信息(info)和滤波器(filt ...
- Python图像处理库PIL中图像格式转换(一)
在数字图像处理中,针对不同的图像格式有其特定的处理算法. 所以,在做图像处理之前,我们须要考虑清楚自己要基于哪种格式的图像进行算法设计及事实上现.本文基于这个需求.使用python中的图像处理库PIL ...
- Python图像处理库PIL中图像格式转换
o 在数字图像处理中,针对不同的图像格式有其特定的处理算法.所以,在做图像处理之前,我们需要考虑清楚自己要基于哪种格式的图像进行算法设计及其实现.本文基于这个需求,使用python中的图像处理库PIL ...
- Python图像处理库——PIL
PIL全称Python Image Library,是python官方的图像处理库,包含各种图像处理模块.Pillow是PIL的一个派生分支,包含与PIL相同的功能,并且更灵活.python3.0之后 ...
- Python图像处理库(PIL)
官方:(详细)http://pillow.readthedocs.io/en/3.1.x/reference/ImageDraw.html http://pillow.readthedocs.io/e ...
- Python图像处理库PIL从入门到精通
https://blog.csdn.net/column/details/pythonpil.html 示例: from PIL import Image import pytesseract pyt ...
- Python图像处理库:PIL中Image,ImageDraw等基本模块介绍
Python图像处理库:PIL中Image,ImageDraw等基本模块介绍 标签: 图像处理PILPYTHON 2016-08-19 10:58 461人阅读 评论(0) 收藏 举报 分类: 其他 ...
- Python图像处理库(1)
转自:http://www.ituring.com.cn/tupubarticle/2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Py ...
随机推荐
- 创业笔记-Node.js入门之基于事件驱动的回调
基于事件驱动的回调 这个问题可不好回答(至少对我来说),不过这是Node.js原生的工作方式.它是事件驱动的,这也是它为什么这么快的原因. 你也许会想花点时间读一下Felix Geisendörfer ...
- jQuery fadeOut无效
$(this).fadeOut("fast"), var nowele = $(this); nowele.fadeOut("fast")
- 怎样更好的深入学习andorid
把主要的控件 基本布局 基本组件 数据存储都熟悉一边,在看网络的时候,有点不知道怎么搞了.由于一直用c开发,但接触socket也不多,这两天把java的socket编程熟悉了下.找了非常多书,可是 ...
- leetcode第一刷_Subsets II
要求子集,有很现成的方法.N个数.子集的个数是2^N.每一个元素都有在集合中和不在集合中两种状态,这些状态用[0,pow(2,N)]中每一个数来穷举,假设这个数中的第i位为1,说明当前集合中包括源数组 ...
- 开源ETL工具kettle--数据迁移
背景 因为项目的需求,须要将数据从Oracle迁移到MSSQL,不是简单的数据复制,而是表结构和字段名都不一样.甚至须要处理编码规范不一致的情况,例如以下图所看到的 watermark/2/text/ ...
- 为powerpc交叉编译nginx
HOST: MINT NGINX VERSION: nginx-1.8.0(nginx-1.8.0.tar.gz) ZLIB VERSION: zlib-1.2.8 PCRE VERSION: pcr ...
- Checkmarx VisualStudio plugin installation process.
1- Configuration of plugin VSTudio Prerequisite: -Your visual studio MUST be up to date with th ...
- codeblocks开源的c、c++编译器,小巧方便
1.下载带gun的版本 2.设置编译的位置 3.创建项目 4.执行项目 有意思的开源的c编译器 ~~~
- php 设计模式之观察者模式(订阅者模式)
php 设计模式之观察者模式 实例 没用设计模式的代码,这样的代码要是把最上面那部分也要符合要求加进来,就要修改代码,不符合宁增不改的原则 介绍 观察者模式定义对象的一对多依赖,这样一来,当一个对象改 ...
- Codeforces 677D Vanya and Treasure 暴力+BFS
链接 Codeforces 677D Vanya and Treasure 题意 n*m中有p个type,经过了任意一个 type=i 的各自才能打开 type=i+1 的钥匙,最初有type=1的钥 ...