python - 如何使用 Python 高效地将大型 CZI 图像(+50GB)转换为 JP2?
问题描述
我必须将大约 +50GB 大小的大型 CZI 显微镜图像转换为压缩 JP2 图像以进行后期分析。JP2 图像需要压缩以节省磁盘空间并使用软件进行后期分析。我当前的设置只有 8 GB 的可用内存,所以我需要能够使用我的内存有限的工作站来处理这些大图像。
我设法编写了将大约 5 GB 的较小 CZI 图像转换为 JP2 的脚本。我通过将图像的压缩表示读入内存来做到这一点。但是,当我尝试对 50 GB 的图像执行相同的操作时,一切都崩溃了。
以下是我的工作流程的表示:
- 将 CZI 图像读入内存并将其存储在一个 numpy 数组中
- 使用 . 将 numpy 数组保存为 jp2 格式
glymur
。为了能够将glymur
整个图像写入 JP2 格式的图像,需要将其加载到内存中。在处理大图像时,这显然是一个巨大的限制。
我想读取一大块 CZI 图像,然后将其写入 JP2 图像。应重复此过程,直到 CZI 图像已完全转换为其 JP2 表示。如果有人可以向我展示如何将 JP2 图像分块写入就足以让球滚动起来,因为我已经看到有关将 CZI 图像块读入内存的文档。
我感谢任何帮助或建议。提前感谢您的宝贵时间。
解决方案
推荐阅读
- powershell - 递归替换win10文件夹和文件中的非标准字符
- php - 如何在 PHP 中使用依赖注入?
- reactjs - 我不明白为什么这个扬声器组件需要 React.memo 来防止额外的渲染
- python - 如何使用正则表达式找到具有可变长度前缀的重叠匹配?
- visual-studio-code - Visual Studio Code 删除自动完成
- jquery - 将方法存储在将在“if”条件下使用的变量中是不好的做法还是不正确?
- android - 菜单项可见性不会部分改变
- fat-free-framework - Fatfree 框架嵌套模板
- multithreading - 为什么通过 std::thread_local 使用时 reqwest::blocking::Client 在我的程序结束时出现恐慌
- xslt - xslt 按函数分组或附加到数组