グレースケールイメージに変換したいRGBイメージがあるので、各ピクセルに1つの数値(0から1の間)を設定できます。これにより、画像のピクセルと同じ次元の行列が得られます。次に、このマトリックスに対していくつかの操作を行い、この操作されたマトリックスから新しいグレースケールイメージを生成します。これどうやってするの?
私は頻繁に画像をNumPy配列として扱います-私はそのようにします:
import numpy as np
from PIL import Image
x=Image.open('im1.jpg','r')
x=x.convert('L') #makes it greyscale
y=np.asarray(x.getdata(),dtype=np.float64).reshape((x.size[1],x.size[0]))
<manipulate matrix y...>
y=np.asarray(y,dtype=np.uint8) #if values still in range 0-255!
w=Image.fromarray(y,mode='L')
w.save('out.jpg')
操作後に配列値yが0〜255の範囲になくなった場合は、16ビットTIFFにステップアップするか、単純に再スケーリングできます。
-アルド