Image MATLAB-如何在不加载内存的情况下读取大尺寸多波段TIFF

Image MATLAB-如何在不加载内存的情况下读取大尺寸多波段TIFF,image,matlab,memory,load,tiff,Image,Matlab,Memory,Load,Tiff,我有一个1675x965x365 TIFF图像(>2GB),它太大了,无法在MATLAB中导入,而不会让我的计算机大幅减速(到目前为止,我也无法打开它!)。有没有一种有效的方法来读取我的图像而不必将其加载到内存中(我想这就是问题所在)?无论如何,我的最终目标是将每个波段的值与其他波段的值相加,即具有尺寸为1675x965的2D图像,其中[1,1]中有(例如)像素,即位置[1,1]中365个波段的所有像素之和。我希望能把我的问题解释清楚。提前谢谢 使用imread()的索引功能可以避免在任何时候加

我有一个1675x965x365 TIFF图像(>2GB),它太大了,无法在MATLAB中导入,而不会让我的计算机大幅减速(到目前为止,我也无法打开它!)。有没有一种有效的方法来读取我的图像而不必将其加载到内存中(我想这就是问题所在)?无论如何,我的最终目标是将每个波段的值与其他波段的值相加,即具有尺寸为1675x965的2D图像,其中[1,1]中有(例如)像素,即位置[1,1]中365个波段的所有像素之和。我希望能把我的问题解释清楚。提前谢谢

使用
imread()
的索引功能可以避免在任何时候加载的数据量超过两个平面:

ImgInfo = imfinfo('imgFile.tif');

BaseImg = zeros(ImgInfo(1).Width, ImgInfo(1).Height);

for k = 1:length(ImgInfo)

    BaseImg = BaseImg + double(imread('imgFile.tif', k, 'Info', ImgInfo));

end

BaseImg = BaseImg/length(ImgInfo);

我已经为TIFF图像的延迟加载编写了一个matlab类;数据保留在磁盘上,仅在访问时加载。这会解决你的记忆问题。看看它是否对你有帮助