【问题标题】:LabVIEW - Store very large 3D array (array of images)LabVIEW - 存储非常大的 3D 数组(图像数组)
【发布时间】:2021-11-08 16:45:35
【问题描述】:

我正在处理一个 LabVIEW 项目,我必须在该项目上处理一些视频(例如 5000 张 640*480 像素的图像,因此需要处理大量数据)。使用 for 循环我当时正在处理一个图像,所以在这一边一切都很好。但另一方面,我必须存储结果以可视化处理后所需图像的结果。到目前为止,我一直使用数组,但 LabVIEW 没有足够的内存来完成这项工作(这很正常)。

有没有最好的方法来改变我处理数据的方式,使用其他解决方案,例如集群,将图像保存在本地磁盘上等?

对于信息,处理时间很长(仅一张图像需要几分钟),我不必在用户要求之前保存结果,所以我预计会处理所有视频而不保存结果的情况.

提前谢谢你。

【问题讨论】:

    标签: memory-management large-data labview


    【解决方案1】:

    你有多少内存?假设每个像素 4 个字节,5000 个 640 x 480 图像大约需要 6 GB,所以如果你有 16 GB 或更多的 RAM,那么只要你使用 64 位 LabVIEW 并且你可以在 RAM 中处理这些数据'注意内存的分配方式 - 从帮助中阅读VI Memory Usage,作为开始。

    或者,您可以考虑以可以访问文件中任意块的格式将数据存储在磁盘上。我自己并没有使用太多,但 HDF5 似乎是显而易见的选择 - 如果你在 Windows 上,你可以从 VI 包管理器安装the LiveHDF5 library

    【讨论】:

    • 运气不好,我有 32 位版本,所以我限制为 4 Gb。最后我减少了很多处理时间,所以现在我将结果保存在一个文件中,因为我没有时间找到另一个解决方案
    【解决方案2】:

    您是否考虑将图像作为文件存储在系统临时目录中,然后将其删除?由于处理每个图像需要很长时间,因此应该很容易将 5 个图像的“图像队列”始终加载到内存中(以避免由于在处理之前从文件加载而导致性能下降),其余的将位于磁盘。

    【讨论】:

    • 在这个过程之后,用户将可视化结果的任何图像,所以我必须将结果保存在某个地方。如果我将它存储在本地磁盘上,它至少需要与输入视频相同的大小来存储所有结果。但这始终是一个“简单”的解决方案。
    猜你喜欢
    • 2014-06-11
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多