【问题标题】:Out of core resampling核心外重采样
【发布时间】:2015-10-10 09:33:31
【问题描述】:

我有一个不适合我的 ram 的大图像文件(单波段)。 我想将它读取为 numpy 数组(数据)并使用 matplotlib 绘制它,可能使用imshow(data)。我知道如何为小尺寸图像做这件事。但是我该如何处理大文件呢?当然,在绘图之前重新采样(可能是 scipy 缩放)是可以的。但是如何在读取为 numpy 数组之前对其进行重新采样,因为无法将大文件读入内存。

【问题讨论】:

  • 您的图像是什么格式...是灰度值的 CSV,每 csv 行一个图像行?
  • @maxymoo 这是 geotiff
  • @Borys 根据您加载图像的方式,您可以尝试使用内存映射文件:docs.python.org/2/library/mmap.html(或 numpy 等效文件:docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html
  • @kazemakase 听起来很有趣!我正在使用imread 读取图像文件。但是无法想象如何应用memmap?你能显示一些代码吗?
  • @Borys 我自己没有在 Python 中使用过内存映射文件。我只是认为它可能对您有用 :) 文档说 mmap 的行为类似于文件对象,而 imread 帮助说您可以将文件对象传递给它。我想有可能用你的文件名构造一个 mmap 对象,并将这个对象传递给 imread。无法帮助您超出这一点,对不起...

标签: image-processing numpy matplotlib scipy bigdata


【解决方案1】:

也许用外部查看器 https://superuser.com/questions/254677/what-software-works-well-for-viewing-massive-tiff-images-on-windows-7 显示 tiff 会更好。

否则,您可以尝试先将 tiff 转换为 HDF5 文件 (ftp://ftp.hdfgroup.org/HDF/contrib/salem/tiffutils.c),然后仅加载要显示的矩阵的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    相关资源
    最近更新 更多