如何在没有耗尽内存的情况下处理matlab中的大图像?

时间:2011-02-27 17:24:47

标签: memory matlab computer-vision

我正在使用sift描述符基于它们之间的区域匹配创建两个图像的马赛克。问题是当创建的马赛克的大小太大时,matlab会耗尽内存。 是否有某种方法拼接图像而不实际加载内存中的完整图像。 如果不是其他gigapixel图像生成技术如何工作或全景应用程序。

3 个答案:

答案 0 :(得分:2)

  1. 在拼接之前确定最终马赛克的大小(可以根据输入图像的大小和单应性进行计算)。
  2. 将空白马赛克写入文件(不是以任何特定格式,而是像内存中一样的字节序列)
  3. 我假设您正在将原始图像中的像素映射到马赛克。因此,当您尝试在马赛克中存储像素的强度时,只需写入文件。

答案 1 :(得分:1)

有几种方法可以节省内存:

  1. 您应该为数据使用整数数据类型,例如uint8
  2. 如果您正在拼接,则只能将感兴趣的区域保留在内存中,例如潜在的重叠区域。
  3. 如果没有其他工作,您可以使用imresample在空间上对图像进行缩减采样,并处理生成的较小图像。

答案 2 :(得分:0)

您可以在并行计算工具箱中使用distributed arrays