如何提高此功能的速度?嵌套循环为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