LabVIEW - 存储非常大的 3D 数组(图像数组)
LabVIEW - Store very large 3D array (array of images)
我正在处理一个 LabVIEW 项目,我必须在其中处理一些视频(例如 5000 张 640*480 像素的图像,因此需要处理大量数据)。使用 for 循环我一次处理一个图像,所以在这一边一切都很好。但另一方面,我必须存储结果,以便在处理后可视化所需图像的结果。直到现在我一直使用数组,但这里 LabVIEW 没有足够的内存来完成这项工作(这很正常)。
有没有最好的方法来改变我处理数据的方式,使用其他解决方案,例如集群,将图像保存在本地磁盘上等?
供参考,处理时间很长(仅一张图像需要几分钟),而且我不必在用户要求之前保存结果,所以我预计会出现所有视频都在不保存的情况下进行处理的情况结果。
提前致谢。
您是否考虑过将图片作为文件存储在系统临时目录中,然后再删除?由于处理每张图像需要很长时间,因此应该很容易将 5 张图像的“图像队列”始终加载到内存中(以避免由于在处理之前从文件加载而导致的性能下降),其余的将放在磁盘.
你有多少内存?假设每像素 4 个字节,5000 张 640 x 480 图像将占用大约 6 GB,因此如果您有 16 GB RAM 或更多,那么只要您使用 64 位 LabVIEW 并且您可以在 RAM 中处理这些数据请注意内存的分配方式 - 首先从帮助中通读 VI Memory Usage。
或者,您可以考虑以一种您可以从文件访问任意块的格式将数据存储在磁盘上。我自己用得不多,但 HDF5 似乎是显而易见的选择 - 如果你使用 Windows,你可以从 VI 包管理器安装 the LiveHDF5 library。
我正在处理一个 LabVIEW 项目,我必须在其中处理一些视频(例如 5000 张 640*480 像素的图像,因此需要处理大量数据)。使用 for 循环我一次处理一个图像,所以在这一边一切都很好。但另一方面,我必须存储结果,以便在处理后可视化所需图像的结果。直到现在我一直使用数组,但这里 LabVIEW 没有足够的内存来完成这项工作(这很正常)。
有没有最好的方法来改变我处理数据的方式,使用其他解决方案,例如集群,将图像保存在本地磁盘上等?
供参考,处理时间很长(仅一张图像需要几分钟),而且我不必在用户要求之前保存结果,所以我预计会出现所有视频都在不保存的情况下进行处理的情况结果。
提前致谢。
您是否考虑过将图片作为文件存储在系统临时目录中,然后再删除?由于处理每张图像需要很长时间,因此应该很容易将 5 张图像的“图像队列”始终加载到内存中(以避免由于在处理之前从文件加载而导致的性能下降),其余的将放在磁盘.
你有多少内存?假设每像素 4 个字节,5000 张 640 x 480 图像将占用大约 6 GB,因此如果您有 16 GB RAM 或更多,那么只要您使用 64 位 LabVIEW 并且您可以在 RAM 中处理这些数据请注意内存的分配方式 - 首先从帮助中通读 VI Memory Usage。
或者,您可以考虑以一种您可以从文件访问任意块的格式将数据存储在磁盘上。我自己用得不多,但 HDF5 似乎是显而易见的选择 - 如果你使用 Windows,你可以从 VI 包管理器安装 the LiveHDF5 library。