【发布时间】:2020-03-15 10:35:03
【问题描述】:
我正在尝试读取 czi 格式的图像,但是因为它们需要大量内存,所以我尝试在 memmap 文件中读取它们。
这是我使用的代码>
import czifile as czi
fileName = "Zimt3.czi"
# read file to binary
file = czi.CziFile(fileName)
imageArr = file.asarray(out="/media/my drive/Temp/temp.bin")
现在 imageArr 是 memmap 中维度为 (9,3,29584,68084,1) 的变量。这些是来自 Carl Zeiss 设备的高分辨率显微图像。
我认为这意味着 imageArr 包含 9 张图片,尺寸为 (29584,68084,3) 但我无法提取这种 numpy 数组来可视化为图像。 你能帮我把memmap中的(9,3,29584,68084,1)转换成(29584,68084,3)图像吗?
【问题讨论】:
-
当您使用不同的图像格式时,有时当您读取图像文件时,文件的尺寸大于 RBG 矩阵。在这些情况下,您可以在其他附加维度上进行平均。我在实验中做到了,发现效果很好。
-
使用常规数组我会
arr.squeeze().transpose(0,2,3,4)- 即删除尺寸 1 尺寸,并将尺寸 3 尺寸移动到末尾。但这会产生一个新数组;最初是一个视图,但几乎任何用途都需要一个副本。我不确定memmap位置如何改变事物。您可以将此更改分别应用于 9 张图片。
标签: python numpy numpy-memmap