Image 在MATLAB中保存非常大的图像

Image 在MATLAB中保存非常大的图像,image,matlab,save,Image,Matlab,Save,我知道以前有人问过这个问题。但是,我找不到一个明确的答案。我有一个非常高分辨率彩色图像的数据,大小为50000 x 60000,数据类型为unit8。我无法使用imwrite保存整个图像。我得到的错误是: “图像包含的数据必须少于2^32-1字节” 有没有办法在MATLAB中保存整个图像? 现在,我必须将数据分成更小的片段(子图像),然后使用imwrite将每个片段写入png文件。文件的输出格式并不重要。您的图像占用8*50000*60000*3=7.2000e+10字节的数据,是MATLAB图

我知道以前有人问过这个问题。但是,我找不到一个明确的答案。我有一个非常高分辨率彩色图像的数据,大小为50000 x 60000,数据类型为unit8。我无法使用imwrite保存整个图像。我得到的错误是:

“图像包含的数据必须少于2^32-1字节”

有没有办法在MATLAB中保存整个图像?
现在,我必须将数据分成更小的片段(子图像),然后使用imwrite将每个片段写入png文件。文件的输出格式并不重要。

您的图像占用8*50000*60000*3=7.2000e+10字节的数据,是MATLAB图像大小限制的16.7638倍。为什么不将其拆分为20个部分,保存它们,然后手动合并它们?如果您将图像分割为6个8x50000x3000x3的片段,它们都将符合2^32的限制

我相信OP有足够的能力来做这件事,但我还是会解释一下这个过程。将图像转换为50000x60000x3阵列,然后执行以下操作:

x = 0:3000:60000;
for i = 1:length(x)-1
   imwrite(A(:,x(i)+1:x(i+1),:),strcat('image',num2str(i),'.png'),'png');
end

这将为您创建20个名为“image1.png”、“image2.png”等的图像。然后,您可以使用手动合并这些图像。也许有更奇特的方法可以做到这一点,但我认为这是最简单的方法。

有一个对我有用的答案:如果你的图像存储为双矩阵,用
im2uint8(img)
转换为uint8,然后保存。

这就是我现在正在做的方法。我在adobe photoshop中合并子图像。我想可能有一种方法,我不必使用任何其他软件来合并图像。我不确定OpenCV是否能解决这个问题。