今天,ImageJDev 团队发布了 ImageJ2 的第四个测试版,版本 2.0.0-beta4。
ImageJ 2.0.0-beta4 是“beta”质量版本,这意味着代码尚未完成。该设计比以前更加稳定,但在最终的 2.0.0 版本发布之前仍可能发生变化。建议人们继续使用 ImageJ 1.x 进行关键工作。
从ImageJ2 development releases页面下载。
ImageJ2 用户界面尽可能模仿 ImageJ v1.x。然而,从本质上来说,ImageJ2 是对 ImageJ 的彻底重新设计。它通过捆绑最新的 v1.x 代码并在“传统”和“现代”图像结构之间进行转换,提供与旧版本 ImageJ 的向后兼容性。
新消息

The improved Duplicate command
此版本 ImageJ 的开发主要集中在插件架构和各种插件实现上。还进行了大量架构更改,使 ImageJ 更加灵活、强大且向后兼容。为了适应这一点,对插件类层次结构、用户界面类、遗留层、更新程序、启动程序和许多其他区域进行了更改。
应用程序级别更改
- 添加了“选择视图”、“选择叠加”和“取消选择叠加”命令,以替换 ImageJ 1.x 中的“全选”和“全不选”命令。
- 捕获屏幕和捕获图像命令已实现。
- 复制命令可以沿任何轴对图像进行二次采样。
- 类型更改插件Image › Color › Channels Tool遵循当前显示器的颜色模式(灰度、彩色、复合),可通过Image › Type › …命令进行配置。
- Salt and Pepper 插件现在可以更好地处理 8 位以外的数据。盐值和胡椒值均可指定。
- Edit › Selection › Make Inverse语言已得到增强,更加强大。完整功能记录在第 ImageJ2/Documentation/Process/Math/Equation 页面上。
- 现在支持复合叠加(即现在可以使用:Process › Math › Equation)。
架构变化
- 我们对插件层次结构进行了许多更改和改进。现在它更加完整和一致。我们重新命名了插件层次结构的几个部分,以改进和澄清代码库。特别是,可运行的插件现在称为命令。 “命令”一词对于 ImageJ 1.x 的用户来说并不陌生,唯一的区别是在 ImageJ 1.x 中,一个“插件”可以实现多个“命令”;然而,在 ImageJ2 中,每个命令都已表示为单独的类,因此已放弃了区别。 -“插件”一词现在是一个更通用的术语,指的是添加到 ImageJ 的任何新功能:代码库中的每个扩展点现在都是 ImageJPlugin 的子类型。这意味着您可能想要添加到 ImageJ 之上的每种类型的功能都是作为特定类型的插件完成的。 ImageJ 插件有多种形式,但所有这些插件都会在运行时以相同的方式自动发现,并通过插件服务进行访问。
- 多种工具利用 JHotDraw 库进行渲染和用户交互。然而,它们被编码为非插件扩展点。我们已经解决了这个问题,因此添加额外的 JHotDraw 特定功能现在只需编写一个 JHotDrawAdapter 插件即可。现在还有一个 JHotDraw 服务用于管理这些适配器,而不是临时嵌入逻辑。
- 在以前的版本中,有固定数量的受支持输入小部件,用于收集有关命令输入值的用户输入。我们已经消除了这一限制,因此现在可以为命令的任何输入类型创建小部件插件,超出核心提供的输入类型(数字、字符串和字符、布尔值、文件、颜色和多选对象选择器)。例如,您可以创建一个输入小部件,其中包含用于最小/最大值范围的双头滑块、三元切换框、颜色查找表编辑器或用于打击垃圾邮件提交的验证码挑战。
- 改进了对多个 UI 的支持。 UI 服务现在拥有更好的 API,用于管理 UI、启动多个 UI 等。并且小部件和显示框架也得到了改进,即使有多个 UI 可用,输入对话框、小部件和显示也将出现在正确的 UI 范例中。
- 现在有一个直接的 API,用于以类型安全的方式以编程方式调用命令。
- 上传器机制现在封装得更好,并且可以非常轻松地添加处理 ssh 和 sftp 之外的协议的组件。
- ImageJ2 公开可重用服务中的功能。本周期添加了新服务,包括 ConsoleService、RenderingService、SamplerService 和 ScreenCaptureService。
- 添加了对具有 16 位调色板的图像的支持。其中包括 Olympus .oif 和 Leica .lif 格式的显微镜图像,可能具有 16 位灰度或色带调色板。显示时,16 位颜色被截断为每个通道 8 位。

Multiple simultaneous UIs
启动器和更新程序更改
- Fiji Updater 已完全移至 ImageJ。 Fiji Updater 现在只是一个小组件,它依赖 ImageJ 的 Updater 来修改当前安装。
- 针对版本化文件名的处理进行了许多错误修复。更新程序现在了解到 ij.jar 和 ij-1.47b.jar 实际上只是同一组件的两个不同版本。
- 多个更新站点的许多错误已得到修复。值得注意的是,修复了一个相当严重的错误,该错误阻止将文件从一个更新站点移动到另一个更新站点。
- 进行了许多内部更改,使持续维护和自动回归测试变得更加容易。
- 更新程序更新自身的过程现在包括所有相关文件(包括前端,而不仅仅是核心)。
SLIM 插件
SLIM 插件仍然仅适用于 ImageJ 1.x,但现在具有可用的测试版质量。它将迁移到 ImageJ2 以实现最终的 ImageJ 2.0.0 版本。详情请参阅第SLIM Plugin website。
开发者教程
我们已经开始为开发人员提供一些编程示例。这些教程可在 GitHub 上的 imagej/tutorials 存储库中找到。

A dataset with a 16-bit LUT
兼容性
有许多兼容性改进和错误修复。自 beta3 以来,团队已经完成了 closed over 115 issues 并在更多方面取得了进展。其中一些包括:
- 改进了对许多命令的支持:3D 项目、清除、清除外部、图像箱、图像属性、图像旋转、选区剪切、选区放大、堆叠合并、堆叠插入和堆叠到图像。
- 旧兼容层中的数据转换准确性得到提高。
- 图像显示创建/销毁更接近地反映 ImageJ 1.x 行为。
- 调用旧插件时改进了颜色支持。
- 现在有一组兼容性选项(在Edit › Options › Compatibility对话框中设置)。某些命令具有 ImageJ 1.x 兼容模式设置。有关此设置的信息可以在 ImageJ2/Documentation/Edit/Options/Compatibility 页面上找到。
- 现在支持产生复合投资回报率的旧插件。
有关 2.0.0-beta4 版本已完成的功能的高级列表,请参阅this report。
已知错误
许多旧版 ImageJ 插件和宏都可以使用;许多其他人则不然。还有很多错误。特别是,有一些关于 2.0.0-beta4 的问题:
- 工具栏上有一个虚假的灰色多边形工具,位于真实多边形工具[see #1470]旁边。
- 如果您非常快地执行许多遗留插件,可能会出现与计时问题相关的错误[see #1471]。
- 由于更新程序中的错误(现已修复),无法从 beta3 安装进行更新。请下载 2.0.0-beta4 分发包。
之前的测试版中仍然存在以下错误:
- 数据坐标系偏离一个像素,导致像素探针和绘图工具坐标稍微未对齐[see #716和#1190]。
- 图像窗口有时会为不存在的滑块留出空间[see #1060]。
- 图像窗口并不总是以最佳比例加载[see #1472]。
- 其他一些小的缩放问题[see #1326]。
- 具有预览功能的 IJ1 命令功能不完整。总的来说,他们的最终结果是正确的。今后,将通过将预览功能移植到 IJ2 的 GUI 模型 [see #981] 来恢复预览功能。
- 最后请注意,在 Windows 和 Linux 上仍然需要安装 Java; ImageJ2 不与 Java 捆绑在一起,也不会为您下载。
请参阅 Open Features 的列表,了解计划功能和错误修复的高级列表。
路线图和未来方向
我们付出了巨大的努力来记录我们正在做的工作以及需要做什么,以提供强大且功能齐全的 ImageJ2。所有任务均由我们的 Trac 问题跟踪系统跟踪,您可以通过多种方式查看:
- Roadmap - 未来版本的顶层概述,包括每个版本的进展
- Open Features - 每个未来版本的高级功能列表
- All Open Tickets - 已知错误的完整列表
如果您对开发的特定部分感兴趣,您还可以执行自定义查询以进一步细化结果。
谢谢
感谢您对 ImageJ2 的兴趣!请give it a try,并随时report any bugs you find!