如何提高此功能的速度?嵌套循環爲numpy convolve
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之間。
小心邊緣。如果你有例如'radius = 3'和'mri_data = np.arange(8)'那麼你的第一個窗口是'mri_data [-3:3]',它返回一個空數組... – Jaime