【问题标题】:problem computing chunk size of dask array after dask_image.imread在 dask_image.imread 之后计算 dask 数组的块大小的问题
【发布时间】:2022-10-12 22:18:45
【问题描述】:

我正在尝试使用 dask_image.imread.imread() 将大量图像加载到 dask 数组中

from dask_image.imread import imread as dask_read
from pathlib import Path
file_path = Path('/path/to/folder/')
region_name = 'R0000'
ch_name = 'C01'
channel_array = dask_read(file_path /  f'*{region_name}*{ch_name}*.tif')
channel_array

这里我们有一个包含 12 个时间点的数组。在每个时间点,我们都有 2048x2048 像素正方形和 192 像素深的体积。组装阵列后,我想创建第一帧的最大投影

import dask.array as da
m = da.max(channel_array[0], axis=0)
m

到目前为止,一切都很好。接下来,我想将投影保存为 .tif 文件:

from tifffile import imwrite
imwrite('/path/to/save/Max.tif', m)

这导致ValueError: Array chunk size or shape is unknown. Possible solution with x.compute_chunk_sizes()

多玩了几下,发现保存图片不一定是问题,但是以任何方式操作数组都会产生同样的错误。例如,arr = np.asarray(m)m.compute_chunk_sizes() 都会产生相同的错误。

这个错误可以不是通过从头开始创建一个随机值的 dask 数组并执行相同的步骤来复制,因此,它似乎是特定于 imread 功能的东西。图像本身看起来不错,我可以直接打开、查看和保存它们,没有问题。

我之前在 github 上看到过一些关于 dask imread 功能的讨论,但无法关注更大的对话。是否有应该使用的特定版本?我的环境有:

# Name                    Version                   Build  Channel
dask                      2022.9.0           pyhd8ed1ab_0    conda-forge
dask-core                 2022.9.0           pyhd8ed1ab_0    conda-forge
dask-image                2021.12.0          pyhd8ed1ab_0    conda-forge

【问题讨论】:

    标签: python image dask tiff


    【解决方案1】:

    滚动浏览 GitHub 上的 dask-image issues 后,我发现这个问题有 been reported previously。使用以下包创建一个新环境解决了这个问题:

    # Name                    Version                   Build  Channel
    dask                      2021.4.1           pyhd8ed1ab_0    conda-forge
    dask-core                 2021.4.1           pyhd8ed1ab_0    conda-forge
    dask-image                0.5.0              pyhd8ed1ab_1    conda-forge
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多