【发布时间】:2013-01-23 09:30:26
【问题描述】:
如何提高此功能的速度?
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。介于 ex 之间的值:0.767。
【问题讨论】:
-
小心边缘。如果你有例如
radius=3和mri_data = np.arange(8)那么你的第一个窗口是mri_data[-3:3]它返回一个空数组...
标签: python numpy convolution