この関数の速度をどのように改善できますか?
def foo(mri_data, radius):
mask = mri_data.copy()
ny = len(mri_data[0,:])
nx = len(mri_data[:])
for y in xrange(0, ny):
for x in xrange(0, nx):
if (mri_data[x-radius:x+radius,y-radius:y+radius] != 1.0).all():
mask[x,y] = 0.0
return mask.copy()
numpy配列の形式で画像スライスを取り込みます。各ピクセルを反復処理し、そのピクセルの周囲のバウンディングボックスをテストします。ボックス内に1に等しい値がない場合は、0に設定してそのピクセルを破棄します。
使用できると言われましたがnumpy.convolve
、どういう関係があるのかわかりません。
編集:画像の値はバイナリ範囲にあるため、最小値は0.0、最大値は1.0です。例の間に値がある場合:0.767。