当我在scikit-image软件包中使用打开操作时,我收到内存错误(它使我的RAM饱和)。对于3-D结构元素发生该记忆错误,该结构元素是半径为16或更大的球/球。我正在尝试使用粒度来测量图像中对象的大小分布(3D数组),因此我需要构造增加半径的元素。内存需求也呈指数级增长,我无法找到解决方法。是否有一个简单的解决方案来解决这个问题,以便我可以使用更大半径的结构元素?图像尺寸为200X200X200。 TIA
Traceback (most recent call last):
File "R3.py", line 124, in <module>
output_image = skimage.morphology.binary_opening(image, ball)
File "/usr/lib/python2.7/dist-packages/skimage/morphology/binary.py", line 117, in binary_opening
eroded = binary_erosion(image, selem)
File "/usr/lib/python2.7/dist-packages/skimage/morphology/binary.py", line 41, in binary_erosion
ndimage.convolve(binary, selem, mode='constant', cval=1, output=conv)
File "/usr/lib/python2.7/dist-packages/scipy/ndimage/filters.py", line 696, in convolve
origin, True)
File "/usr/lib/python2.7/dist-packages/scipy/ndimage/filters.py", line 544, in _correlate_or_convolve
_nd_image.correlate(input, weights, output, mode, cval, origins)
MemoryError
答案 0 :(得分:0)
尺寸200x200x200的体积非常小。粒度测量由连续开口组成,因此您只需要2个体积进行计算:一个临时在侵蚀和膨胀之间,另一个用于最终结果。这意味着共有三卷。结构元素应该是一个坐标列表,所以不要太大。
因此,绝对没有理由不能在计算机上对这样的体积进行粒度测量。指数内存使用的唯一解释是中间结果不会被删除。