縦H×横Wの真っ黒な1チャンネル画像中の点(gazex,gazey)の画素値を255にします。(gazex,gazey)から離れるにつれてガウス分布にしたがって、暗くなっていく画像をpythonで作りたいです。
python
1from PIL import Image 2import numpy as np 3import math 4 5def gaussian2d(x,y,gazepoint_x,gazepoint_y,sigma=12): 6 Ans = 255*math.exp(-(x-gazepoint_x)**2/(2.0*sigma**2))*math.exp(-(y-gazepoint_y)**2/(2.0*sigma**2)) 7 return Ans 8 9if __name__ == "__main__": 10 11 gazex,gazey = getgazepoint() 12 13 H = 224 14 W = 224 15 16 X = np.zeros((H,W),dtype="uint8") 17 18 for i in range(0,len(gazex)): 19 for y in range(0,H): 20 for x in range(0,W): 21 X[y,x] = int(gaussian2d(x,y,gazex[i],gazey[i])) 22 Image.fromarray(X).save("%s.jpg" % str(i).zfill(6)) 23 print(i)
gussian2d()は2次元のガウス分布を返します。
gatgazepoint()は(gazex,gazey)を返します。gazexとgazeyはlen(gazex)=len(gazey)を満たすリストです。
※len(gazex)枚、jpg形式で出力したい。
画像サイズが224×224程度だと上のアルゴリズムで高速に画像を出力できるのですが、1280×980ぐらいになると非常に遅くなります。このアルゴリズムの速度をあげるとしたらどうしたらよいでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。