私はグレースケールの画像がほとんどなく、画像全体の平均ピクセル値を計算することを考えました。その結果、個々の画像を単一の値で表すことができます。PIL Numpyを使ってPythonでグレースケール画像の平均ピクセル値を取得するには?
5
A
答えて
8
あなたはこのようなものをしたい場合は、代わりに生PILや枕のscikit-image
を使用して検討すべきです。 SciKit Imageはnumpy配列を画像に使用するため、すべてのnumpyメソッドが機能します。
from skimage import io
import numpy as np
image = io.imread('http://i.stack.imgur.com/Y8UeF.jpg')
print(np.mean(image))
あなたが0
と1
betwenn値を取得するためにフロートするすべての画像を変換することがあります:
from skimage import io, img_as_float
import numpy as np
image = io.imread('http://i.stack.imgur.com/Y8UeF.jpg')
image = img_as_float(image)
print(np.mean(image))
2
これは、ピクセルをループ全ての画素値を蓄積して分割することによりPILを使用して行うことができますピクセル数(つまり幅*高さ)で表します。
from PIL import Image
im = Image.open('theimagefile.jpg')
im_grey = im.convert('LA') # convert to grayscale
width,height = im.size
total=0
for i in range(0,width):
for j in range(0,height):
total += img.getpixel((i,j))[0]
mean = total/(width * height)
1
解決策はコメントと回答で提供されているものよりはるかに簡単です。タプル上での計算と、セル値を反復するネストされたループの必要はありません。
具体的には、あなたは、グレースケール画像を持っている場合、あなたはアレイセルは対照的に0から1
にスカラー値で充填された2次元配列を有する、カラー画像における2次元numpyのアレイであります各セルにはrgbタプルが置かれています。
は、別の言い方を:グレースケール画像のnumpyの配列表現は、その細胞が浮動小数点値を有する0(黒)から1(白)
の間にこれを与えられた2次元配列であり、あなたが計算することができ(配列の各軸のために1回、2回の平均を計算する - コードのこの一行は、あなたがやりたいだろう
>>> import numpy as NP
>>> img = NP.random.rand(100, 100)
>>> img[:5, :5]
array([[ 0.824, 0.864, 0.731, 0.57 , 0.127],
[ 0.307, 0.524, 0.637, 0.134, 0.877],
[ 0.343, 0.789, 0.758, 0.059, 0.374],
[ 0.693, 0.991, 0.458, 0.374, 0.738],
[ 0.237, 0.226, 0.869, 0.952, 0.948]])
:そうのように、画像アレイの両方の軸に沿って平均値を算出することで、画素値の平均2番目の呼び出しの軸を指定する必要はありません平均最初の呼び出しからの戻り値は、配列値が一様分布からサンプリングされた値を返すNP.random.randを呼び出すことによって生成されたので、0.5の値が正しいと思われるだけの1Dアレイ
>>> img.mean(axis=0).mean()
0.50000646872609511
あるため半開区間[0、1)
>>> import matplotlib.pyplot as MPL
>>> MPL.imshow(img, cmap=MPL.cm.gray, interpolation='nearest')
>>> MPL.show()
関連する問題
- 1. PythonでPILを使用してピクセルをグレースケールに変更する
- 2. Python/opencv:画像のピクセルを最も近い4ピクセルの平均にする
- 3. ワンド内の画像の平均rgb値を取得
- 4. オブジェクトを検出して平均ピクセル値(BGR)を取得する
- 5. YUV画像を使ってグレースケール画像を得る方法Pygame
- 6. グレースケール画像で特定のピクセル値をマークする
- 7. numpy配列の平均ピクセル減算
- 8. imgmsg_to_cv2でROSのグレースケール画像を取得する[python]
- 9. OpenCVのグレースケール画像のピクセル値にアクセスする
- 10. Python PIL - 白黒ピクセルのRGBピクセル値
- 11. numpyを使って複数のファイルに平均をつける
- 12. テーブルの平均の平均値を取得する - Qlikview
- 13. グレースケール値の2次元ナプシー配列をPIL画像に変換する
- 14. tkinterキャンバスとPIL画像(Python)でのピクセル座標の調整
- 15. Pythonの平均ベースのしきい値を上回るピクセル値を取得する方法
- 16. ドームの平均値を取得する
- 17. 白黒画像のピクセル値を取得する方法は?
- 18. MATLABを使用して平均画像を平均画像に保存する方法
- 19. Javaで白黒画像のピクセル値を取得する方法
- 20. グレースケール画像からノイズを除去するPIL
- 21. Python 3 - PILを使って2枚の画像を合成する方法は?
- 22. numpy配列の複数軸の平均を取得する
- 23. 画像のRGB色の平均値
- 24. PILで画像のフォーマットを取得する方法は?
- 25. 画像の概要python/PILを使用
- 26. PIL/Pillowで画像内の赤いピクセルをフィルタリングする
- 27. 画像のピクセル値を読み取る
- 28. PILを使用してピクセルのRGBを取得
- 29. 平均画像(タイプエラー)
- 30. numpy配列の画像の平均色を計算する方法は?
あなたは画像の大きさ、すべてのピクセルを超えるループは、それらの値を合計取得し、分割...しかし、私はなぜ知りませんあなたはそのような問題に直面する必要がありますe値 "となり、2つの画像が同じ平均値をとった場合、あなたはただの運命にあります。あなたはあなたの問題のいくつかの文脈を与えることができますか?おそらくもっと良い方法があります。 – gil
ええ、gillはそれを言う。平均値に256の値があると仮定すると、少なくとも2つの平均値が同じであるため、256以上の画像で問題が発生します。そして、あなたはすでにずっと少ない画像のために衝突を期待することができます.... –