【发布时间】: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
【问题讨论】: