[計算ビジョン] Python画像処理ライブラリPILのImageStatモジュールの概要



Introduction Imagestat Module Python Image Processing Library Pil

ImageStatモジュールは、画像全体または画像の領域の統計を計算するために使用されます。

まず、ImageStatモジュールの機能



1、統計

定義1:ImageStat.Stat(image)⇒Statインスタンス



ImageStat.Stat(image、mask)⇒Statインスタンス

意味1:特定の画像の統計値を計算します。変数マスクが割り当てられている場合、変数マスクによって定義された領域のみがカウントされます。

例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インスタンス

意味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:Python27libsite-packagesPILImageStat.py', line 48, in__getattr__ v = getattr(self, '_get' + id)() File'C:Python27libsite-packagesPILImageStat.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の4つの属性しかなく、sum属性はありません。

次に、ImageStatモジュールのプロパティ

次の属性には、画像の各チャネルに1つの要素のみの対応するシーケンスがあります。これらのプロパティは、呼び出されたときにのみ計算されます。それ以外の場合は計算されません。

1、エクストリーム

定義: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、カウント

定義: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です。したがって、属性カウント統計は786432の3つのチャネルになります。

3、合計

定義: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の3つのチャネルのピクセル値は累積され、それぞれ90912466.0、75765120.0、59027727.0です。

4、Sum2

定義:stat.sum2

意味:画像内の各チャネルのピクセル値の2乗の合計を取得します。

例:

>>>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は、合計の2乗ではなく、それぞれのチャネルのピクセル値の2乗の合計をカウントします。

5、平均

定義: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]

例からわかるように、属性の平均は、各チャネルのピクセル値の合計をピクセル数で割ったもので、小数点以下14桁まで正確です。

6、中央値

定義: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

意味:画像内の各チャネルのピクセル値のrms値を取得します。二乗平均平方根値または実効値とも呼ばれる二乗平均平方根値は、二乗、再平均化、および二乗によって計算されます。つまり、N項の2乗をNの2乗で除算し、次に平方根で除算した結果です。その計算式は次のとおりです。

例:

>>>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

意味:画像内の各チャネルのピクセル値の分散値を取得します。分散は、確率論と統計的分散が確率変数またはデータのセットを測定するときの分散の程度の尺度です。確率論の分散は、確率変数とその数学的期待値(平均)との間の偏差の程度を測定するために使用されます。統計の分散(サンプル分散)は、それぞれのデータとそれらの平均の間の差の2乗の合計の平均です。

例:

>>>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

意味:画像の各チャネルのピクセル値の標準偏差を取得します。標準偏差は、標準偏差とも呼ばれます。標準偏差(標準偏差)は、平均からの各データの距離(平均差)の平均を表します。これは分散の二乗の平方根であり、σで表されます。標準偏差は、分散の算術平方根です。標準偏差は、データセットの分散の程度を反映しています。標準偏差が小さいほど、これらの値の平均からの偏差は小さくなり、その逆も同様です。標準偏差の大きさは、平均値に対する標準偏差の比率で測定できます。標準偏差の式は次のとおりです。

例:

>>>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では、赤チャンネルのピクセル値が平均値に最も近い。
---------------------
OF:icamera0
オリジナル:https://blog.csdn.net/icamera0/article/details/50811855