0

当我在scikit-image软件包中使用打开操作时出现内存错误。对于半径为16或更大的球/球的三维结构元素会发生此内存错误。我正在尝试使用粒度测量来测量图像中物体的尺寸分布(3D阵列),所以我需要增加半径的结构元素。内存需求也呈指数增长,我无法找到解决方法。有没有简单的解决这个问题,以便我可以使用更大半径的结构元素?图像尺寸是200X200X200。 TIA在Sci-Kit中使用二进制打开操作时发生内存错误使用scikit-image软件包中的打开操作(它使我的RAM饱和)时出现内存错误

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

尺寸200x200x200的体积是非常小的。颗粒测量由连续的开口组成,因此您只需要2个体积的计算量:一个是侵蚀和扩张之间的暂时,另一个是最终结果。这意味着总共三卷。结构元素应该是坐标列表,所以没有太大的意义。

因此,绝对没有理由不能在您的计算机上为这种尺寸的卷执行粒度测量。使用指数内存的唯一解释是中间结果不会被擦除。

相关问题