Pre-allocate memory for convolution and re-use for output, if no user-override specified.

This commit is contained in:
Stefan van der Walt
2013-10-14 12:58:27 +02:00
parent 6111831994
commit 89d703ca46
+6 -4
View File
@@ -37,10 +37,11 @@ def binary_erosion(image, selem, out=None):
else:
binary = (image > 0).astype(np.intp)
conv = ndimage.convolve(binary, selem, mode='constant', cval=1)
conv = np.empty_like(image, dtype=np.intp)
ndimage.convolve(binary, selem, mode='constant', cval=1, output=conv)
if out is None:
out = np.zeros_like(binary, dtype=bool)
out = conv
return np.equal(conv, selem_sum, out=out)
@@ -77,10 +78,11 @@ def binary_dilation(image, selem, out=None):
else:
binary = (image > 0).astype(np.intp)
conv = ndimage.convolve(binary, selem, mode='constant', cval=0)
conv = np.empty_like(image, dtype=np.intp)
ndimage.convolve(binary, selem, mode='constant', cval=0, output=conv)
if out is None:
out = np.zeros_like(binary, dtype=bool)
out = conv
return np.not_equal(conv, 0, out=out)