我知道编辑这个网站吗?
the ImageJ2 platform本页介绍与 the ImageJ2 platform 相关的内容。点击徽标查看详情。

ImageJ 遗留桥

流畅兼容是 ImageJ2 最重要的目标。新版本的 ImageJ 必须仍然可以使用现有的插件和宏之一。

ImageJ 遗产

ImageJ2项目是一个完整的重新设计,不依赖于原始的ImageJ。然而,为了促进兼容,有一个 ImageJ Legacy 组件提供(来源ij1-patcher),它提供了 ImageJ2 和 ImageJ 的扩展以协调运行。

ImageJ继承层提供以下扩展:

  • 它使 ImageJ ** 可以从命令行使用 headless**。
  • ImageJ UI 包装为SciJava用户界面
  • 根据需要在ImageJ和ImageJ2数据结构之间进行转换

ImageJ2 目前默认使用 ImageJ 用户界面,因为许多用户需要保留对 ImageJ 插件的访问权限。

ImageJ用户界面

ImageJ2 继承层通过 UserInterface 类实现 LegacyUI 接口,将 ImageJ 用户界面 (UI) 转换为 SciJava 兼容的 UI。

然而,由于原始 ImageJ 的设计对这些要求的考虑,事情因此变得复杂。继承层使用名为Javassist的字节码操作库在运行时重写 ImageJ 的部分内容,以促进和集成扩展。有关详细信息,请参阅on GitHub项目。

数据结构的翻译

每个§§4§§§都有一个链接的ImageDisplay,由ImagePlus保持同步。每当需要时,继承层就会同步链接的数据对象。为了保持合理的性能,我们会利用一切,通过就且仅有偶然机会(延迟地,使用磁盘)进行数据更改转换避免数据。中间层在时导入时通过平面存储引用重用数据——特别是当平面存储在基元数据库中时——但在某些情况下必须复制(例如,对于ROI)。

目前,自动同步已被禁用,因为它会对性能产生负面影响。性能问题的解决方案是imagej-ops,而不是依赖于先前的逐像素转换。

同时,可以通过设置 imagej.legacy.sync system property 来强制完全同步。这可以在正在运行的 ImageJ 实例中完成,例如通过运行以下命令作为 BeanShell script

System.setProperty("imagej.legacy.sync", "true");

将 ImageJ 命令更新为新示例

最终目标是将所有核心 ImageJ 插件迁移到 ImageJ2 范例。许多 ImageJ 插件已经以这种方式更新;特别参见 implement a wrapping layerimagej-plugins-commands 存储库。

另请参阅

  • ImageJ 2010 会议的ImageJDev talk,从历史角度了解这种兼容性如何随着时间的转变而转变。