【问题标题】:Saving and accessing a lot of ROI polygons (IDL, ImageJ, Java?, XML?)保存和访问大量 ROI 多边形(IDL、ImageJ、Java?、XML?)
【发布时间】:2026-01-23 06:00:02
【问题描述】:

我需要在一堆图像上保存和重新加载数千个 ROI 多边形,实际上是一部 30 多分钟、每秒 30 帧的电影,因此至少需要 54,000 帧。堆栈中的单个图像(帧)上可以有多个 ROI,每个 ROI 的大小和顶点数不同。 ROI 多边形会随着时间的推移跟踪形状的边缘。

电影堆栈通常太大而无法一次保存在内存中。我对它进行后期处理,逐帧搅拌以跟踪我的形状。我可以一次将 ROI 对象保存为二进制文件一帧,但这会生成 54,000 多个文件以保存在一起。或者,如果我尝试分配一个容器对象来保存所有 54,000 多个 ROI 帧,然后将其保存到一个文件中,我很快就会耗尽资源。

我想将所有 ROI 保存到一个可以随机访问和修改的文件中。如果我想要第 100 帧上的第三个 ROI 多边形,我希望能够立即加载它。我还希望能够在保存的文件中插入和删除 ROI。

执行此操作的最佳文件格式是什么?是否有可接受的格式或应用程序? ImageJ 有一个原生的 ROI 格式,但我对它了解不多。我的应用程序现在在 IDL 中编程。 IDL 有自己的 ROI 类,但就像我说的,我不想将它们全部写到单独的文件中,而且我没有资源将它们全部合并到一个文件中。 XML?谢谢。

【问题讨论】:

    标签: java image-processing polygon imagej idl-programming-language


    【解决方案1】:

    ImageJ ROI 格式为documented here。我会考虑使用关系数据库进行存储和随机访问。 H2 Database 是我最喜欢的,但alternatives 很多。

    【讨论】:

      【解决方案2】:

      不久前我必须做一些非常相似的事情(多边形、IDL、快速访问)。我的决定是将我所有的 ROI 放入一个文件中,然后再创建一个包含每个多边形开始的偏移量的文件。

      基本上,文件 #1 将包含每个 ROI 的所有顶点的列表,文件 #2 包含指定多边形开始的字节偏移量的整数列表,即文件 #2 中的第 i 个整数是位置在polygon_i 所在的文件#1 中。

      我用它来快速访问近 500 万个多边形,总共约 40 亿个顶点。

      【讨论】: