Memory 如何在matlab中处理大型图像而不耗尽内存?

Memory 如何在matlab中处理大型图像而不耗尽内存?,memory,matlab,computer-vision,Memory,Matlab,Computer Vision,我正在使用sift描述符根据两幅图像之间的区域匹配创建马赛克。问题是当创建的马赛克的大小变得太大时,matlab会耗尽内存。 是否有某种方法可以在不将完整图像实际加载到内存中的情况下缝合图像。 如果没有,其他千兆像素图像生成技术或全景应用程序是如何工作的。有几种方法可以节省内存: 您应该为数据使用整数数据类型,例如uint8 如果要缝合,则只能在内存中保留感兴趣的区域,例如潜在的重叠区域 如果其他方法都不起作用,则可以使用imresample对图像进行空间下采样,然后处理生成的较小图像 在缝合之

我正在使用sift描述符根据两幅图像之间的区域匹配创建马赛克。问题是当创建的马赛克的大小变得太大时,matlab会耗尽内存。 是否有某种方法可以在不将完整图像实际加载到内存中的情况下缝合图像。
如果没有,其他千兆像素图像生成技术或全景应用程序是如何工作的。

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

  • 您应该为数据使用整数数据类型,例如
    uint8
  • 如果要缝合,则只能在内存中保留感兴趣的区域,例如潜在的重叠区域
  • 如果其他方法都不起作用,则可以使用
    imresample
    对图像进行空间下采样,然后处理生成的较小图像
  • 在缝合之前确定最终马赛克的大小(使用输入图像的大小和单应性很容易计算)
  • 将空白马赛克写入文件(不是以任何特定格式,而是像在内存中一样的字节序列)
  • 我假设你将原始图像中的像素反向映射到马赛克。所以,当您试图在马赛克中存储像素的强度时,只需写入文件即可
  • 您可以在并行计算工具箱中使用