我知道编辑这个网站吗?

2013-06-12 - ImageJ v2.0.0-beta-7

今天,ImageJDev 团队发布了 ImageJ2 的第七个测试版,版本 2.0.0-beta-7。此版本包含超过 96 bugfixes24 new high-level features 的内容。 2.0.0-beta-7 版本实现了该项目的两个关键长期目标:统一图像 I/O更好地支持非常大的图像数据

ImageJ 2.0.0-beta-7 是“beta”质量版本,这意味着代码尚未完成。在最终的 2.0.0 版本发布之前,该设计仍可能会发生变化。建议人们继续使用 ImageJ v1.x 进行关键工作。

ImageJ2 development releases 页面下载,该页面还有未来版本的时间表。

ImageJ2 用户界面尽可能模仿 ImageJ v1.x。然而,从本质上来说,ImageJ2 是对 ImageJ 的彻底重新设计。它通过捆绑最新的 v1.x 代码并在“传统”和“现代”图像结构之间进行转换,提供与旧版本 ImageJ 的向后兼容性。

新消息

此版本 ImageJ 的开发重点是更好地支持 N 维数据,特别是大型数据集。此版本增加了对“单元图像”的支持,它类似于 ImageJ 1.x 的“虚拟堆栈”,但功能更强大。 ImageJ2 架构也得到了进一步的加强和稳定,新的插件系统被推广到 ImageJ2 和 SCIFIO 都使用的 SciJava 通用库中。

统一打开和保存命令

/media/logos/scifio.png

SCIFIO: an extensible image I/O library

ImageJ 1.x 中常见的混乱来源之一是存在过多的导入数据的方法。使用“文件”菜单中的“打开…”命令可能会导致与调用特定命令(例如Bio-Formats Importer)不同的行为。 ImageJ2 的主要目标之一是improve and unify the behavior of I/O。使用 ImageJ2,通过“打开…”命令打开的任何图像现在都以相同的方式处理:自动选择适当的 ImageJ I/O 插件来处理文件。任何人都可以编写新的 I/O 插件来扩展 ImageJ2 的文件处理功能,而无需修改 ImageJ2 核心。类似地,HelpUpload Sample Image命令调用适当的I/O插件以适当和/或选择的格式保存数据,并且可以通过编写新的I/O插件使用额外的导出例程轻松扩展ImageJ2。

scifio-cell-img

A SCIFIO cell image in action. Here we see a “cell image” which loads image planes on demand via the SCIFIO library. Like ImageJ 1.x, the title bar shows a (V) to indicate the image is a “virtual” one. The total dataset size is 215MB, but ImageJ is using only 30MB of memory in total.

虽然我们仍处于 polishing some details 阶段,但可扩展 I/O 架构已基本就位,图像 I/O 由 SCIFIO 库驱动。 SCIFIO 是 Bio-Formats 的重构,为科学图像(不仅仅是生命科学)提供下一代图像 I/O。与 ImageJ 2.0.0-beta-7 一起发布的是 SCIFIO 0.2.0 测试版。在 SCIFIO 1.0.0 发布之前,该 API 仍可能发生更改,但 ImageJ2 现在已使用它。

SCIFIO 格式插件扩展了 ImageJ2 读写图像数据的能力。此外,这些 SCIFIO 插件不仅使 ImageJ 受益,而且使所有其他使用 SCIFIO 的程序受益,例如 Insight Toolkit (ITK),最近released version 4.4.0 与 SCIFIO 集成。 SCIFIO 格式插件机制基于我们今年早些时候从 ImageJ2 推广的 SciJava Common 库。 SciJava Common 框架提供了 ImageJ2 和 SCIFIO 通用的插件机制和应用程序容器,因此这两个项目本质上是相互兼容的。

虚拟堆栈

在 ImageJ 1.x 中,通过“虚拟堆栈”功能支持具有大量图像平面(超出可用内存容量)的大型数据集。 ImageJ2 的主要目标之一是provide better support for this kind of large data。随着 2.0.0-beta-7 版本的发布,我们在实现这一目标方面取得了一个重要的里程碑:由于使用了 SCIFIO 库(见上文),ImageJ2 现在可以在称为“单元图像”的虚拟数据结构中加载如此大的数据集。

对于 2.0.0-beta-7 版本,ImageJ 根据输入数据的大小和可用内存量自动决定是否使用细胞图像。在未来的版本中,这将更加可配置,在打开数据集时可以使用高级选项,即您将能够将“使用虚拟堆栈”等选项设置为“是”、“否”或“自动”(默认值)。

ij2-beta-7-threshold

ImageJ2 Threshold dialog. ImageJ2 treats thresholds like any other ROI. You can operate on pixels within the threshold, or perform processing using any ImgLib2-based code. Auto-thresholding methods are a type of ImageJ plugin, which makes them extensible without needing to modify the core ImageJ source code.

为了向后兼容,遗留层将这些单元图像作为虚拟堆栈传递给 ImageJ 1.x 命令,从而允许修改当前平面。此行为与 ImageJ 1.x 本身一致,它允许对虚拟图像平面进行瞬时修改,一旦活动图像平面发生更改,这些修改就会丢失。我们正在增强 ImageJ2 的单元图像以支持完整的读/写功能:在读/写模式下,从内存中刷新的图像平面将保存到磁盘上的临时缓存中,以便在读回这些平面时保留修改。此功能将使大型数据集的复杂图像处理变得更加可行,因为图像处理管道将不再需要关心输入数据是否是“虚拟”数据。

阈值

现在整个 ImageJ2 和遗留层都支持阈值处理。阈值是一种新型的感兴趣区域 (ROI),可以像任何其他覆盖一样在覆盖管理器中访问,并且可以像任何其他 ROI 一样进行操作。

阈值由“调整阈值”命令创建。该命令利用自动阈值方法模板的实现者。许多这样的方法是从 Gabriel Landini 的 autothreshold 插件移植的。

更好的更新站点

ImageJ 更新程序已得到增强,可支持“个人”更新站点,这些站点托管在 http://sites.imagej.net/ 上,位于与 ImageJ wiki(至少目前也是 Fiji wiki)上的帐户匹配的子目录中。通过这种方式,每个 ImageJ 用户都可以拥有自己的更新站点,通过 ImageJ 更新程序分发他们的插件,而无需创建网站或在 Web 服务器上查找托管空间。

高级模式中的“管理更新站点”对话框也进行了重大修改:它现在显示预定义更新站点的列表(从list of update sites中读取) )以方便激活,并允许方便地初始化个人更新站点(http://sites.imagej.net/)。

请参阅下面的更新程序改进的完整列表。

开发者示例

我们继续为开发人员充实示例代码。现在有nine tutorials。最值得注意的是,我们有一个 InteractiveCommand 的例子。这对于利用仅 ImageJ2 的功能(例如更强大的结果表)非常有用。

SLIM 插件

SLIM 插件正在针对 ImageJ2 进行重构,但尚未可用。同时,LOCI update site中提供的版本可用于斐济的终身安装。有关详细信息,请参阅第 SLIM Curve 页。

兼容性

有许多兼容性改进和错误修复。自 beta6 以来,团队closed 18 compatibility-related issues 并在更多方面取得了进展。例如,修复了“生成二进制”和“创建掩码”命令,并改进了旧命令的运行时性能。详情请参阅第full list of 2.0.0-beta-7 changes

better-update-sites

Better update sites. The ImageJ updater now enables toggling of third-party update sites with the click of a button. The “Add my site” button automatically initializes your own personal update site based on your ImageJ wiki account.

路线图和未来方向

我们完成了巨大的工作来记录我们正在做的工作以及需要做的事情,以通过提供强大且功能齐全的ImageJ2。所有任务均由我们的Trac问题跟踪系统跟踪,您可以多种方式查看:

  • Roadmap - 未来版本的硬件概述,包括每个版本的进展
  • Open Features - 每个未来版本的高级功能列表
  • All Open Tickets - 已知错误的完整列表
  • 如果您对开发的特定部分感兴趣,您还可以执行自定义查询以进一步细化结果。

相关未来版本的时间表,请参见ImageJ2 development releases页面。

谢谢

感谢您对 ImageJ2 的兴趣!请give it a try,并随时report any bugs you find

综合总结

以下是此版本的更详细更改列表:

###核心

  • ImageJ 的核心插件框架已推广到一个通用库:SciJava Commoncd85c92b
  • 图像 I/O 现在基于 SCIFIOscifio-cells
  • 旧版插件现在通过IJ.runPlugIn("org.scijava.Context", null);获取当前应用程序上下文,并通过IJ.runPlugIn("imagej.legacy.LegacyService", null);获取相应的LegacyService -一类命令来自how to call ImageJ2 classes from an ImageJ 1.x plugin。交互式命令是无模式的。它监听输入的变化并相应地更新其UI。TableLoader就是这样的命令之一。
  • 命令现在支持按钮小部件和单选按钮小部件。[radio-buttons]
  • 现在,颜色查找表(LUT)会从类路径上的JAR中的.lut文件和/或驻留在luts目录文件夹中的任何查找表自动填充。现在支持查找表菜单中的分层组织。
  • 简化了事件层次结构和事件调度。 [event-cleanup]
  • 拖放支持已得到改进,拖放操作现在可扩展为新型 ImageJ 插件。 [drag-and-drop]
  • 直方图 API 被统一到 ImgLib2 中的单个包中。 [histogram-stuff]
  • 新的Brightness/Contrast将格式化文本数据加载至LUTService中。
  • 单元测试现在也由 Jenkinsdedicated Windows computer 上运行,以确保与该网络的兼容性。
  • 有许多新服务,包括:
    • ResultsTable: loads lookup tables from Files, URLs, etc.
    • ThresholdService: discovers CalculatorOp plugins making ImageCalculator extensible.
    • CalculatorService: extensible support for autothresholding methods.
    • InputService: supports an extensible means of calculating a display range for a data source.
    • AutoscaleService: tracks input from keyboard and mouse (a combination of the previous KeyboardService and MouseService).
    • IOService: works with various text file formats.
    • TextService: loads image data.
  • 管理特定类型插件的服务的常见模式已被隔离到新的抽象服务层中。详情请参阅:SingletonServicePTServiceHandlerServiceTypedServiceNew Image command
  • ImageJ 构建系统已得到极大简化,有利于可重复构建。我们不再使用任何 SNAPSHOT 依赖连接,这将极大地促进 ImageJ2 的更快发布。 [d01fb827]

命令

1-bit-histogram

A 1-bit histogram plot. ImageJ2 now supports histogram plots for any pixel type, including 1-bit, as well as floating point types.

  • WrapperService已变得更加实用。现在可以轻松创建多维图像。
  • 直方图命令现在适用于所有数据类型(见右图)。它还可以单独显示每个通道的直方图。
  • ported to ImageJ2已移植到ImageJ2。
  • 斐济的第FileSave命令已成为第List Shortcuts command
  • 新的和改进的 Command Finder 完整移植到 ImageJ 1.x。

更新节目

  • 更新程序GUI现在可以对行进行排序(通过选择列)。
  • 更新程序现在允许恢复以前标记为过时的文件。
  • 从Windows Vista开始,Windows的§§0§§§安全模型与更新程序的更新机制不兼容,因此强烈建议不要使用该位置,而是建议桌面上的文件夹。
  • 更新程序的 SSH 上传程序现在使用与 Fiji 相同的 JSch 版本。
  • 更新程序与斐济的错误提交程序可以更好地配合。
  • 用户名和密码字段已成为焦点默认。
  • 上传器现在可与 WebDAV 配合使用。
  • 现在Jenkins服务器每晚都会使用WebDAV、SSH和SFTP进行上传。
  • 更新程序的命令行版本现在了解更多功能:删除更新站点、上传完成站点(允许轻松维护从一组项目构建的更新站点)。
  • 命令行更新程序现在可以通过upload子命令将已删除的文件标记为已过时。
  • 为更新程序添加单元测试被大大简化。
  • 更新者了解了隐藏更新站点的概念(即更新站点覆盖上传到其他更新站点的文件)。
  • 更新程序中的所有资源泄漏(已打开但从未关闭的文件)均已修复。
  • 更新程序现在可以自动安装上传程序,而不仅仅是 SSH 协议。
  • 许多解决方法可以让更新程序在Windows上更好地工作。
  • 更新程序的 Swing UI 现在更好地遵循 Swing 线程模型。
  • 关于需要安装新的依赖项的消息现在更好了。
  • 询问代理密码的正确性对话框(实际上用户输入了错误的密码)现在更清楚地说明了用户的要求。
  • 更新程序中的其他一些GUI问题也得到了修复。
  • 更新程序不再询问是否允许其手机更新,而是直接执行更新。
  • SSH 上传器现在甚至可以在 OS X 服务器上运行。
  • 更新程序现在可以轻松地处理微管理器MMJ_.jarMMCore.jar之间的循环依赖关系。
  • 更新程序对DropBox支持的更新站点进行特殊处理。
  • 高级模式中的“管理更新站点”对话框进行了重大修改:现在显示预定义更新站点的列表(从list of update sites中读取) )以方便激活,并允许方便地初始化个人更新站点(http://sites.imagej.net/)。

迷你Maven

  • MiniMaven 的输出现在有了更多帮助了。
  • MiniMaven 学习了新的子命令:dependency-tree、jar 和 install。
  • MiniMaven 遵循现在 imagej.app.directory 属性:将工件和依赖项复制到该目录结构中。
  • MiniMaven 生成的 JAR 文件的清单现在包含 Class-Path 边界(这意味着您不需要显着式分级类路径中的依赖 JAR 文件,只要它们位于相同的目录中即可)。
  • MiniMaven 可以在更多场景中拾取javac
  • MiniMaven 正确扩展了 imagej.app.directory 属性中的 ${rootdir}

启动器

  • ImageJ launcher现在也是ImageJ 1.x的默认启动器。
  • 修复了 OS X 上的一个严重错误,当在属性中选中“强制 32 位模式”时,该错误会阻止启动器以 32 位模式启动。
  • 在Windows上,启动器中嵌入的图标可以由启动器本身更改。
  • Windows 版本的启动器嵌入默认 ImageJ2 的图标。
  • 在Linux上,启动器可以读取.desktop文件(将图标附加到启动器)。
  • 启动器允许Ubuntu的Unity窗口管理器将图标保留在扩展坞中。
  • 启动器现在专门找到ImageJ.app/mm/中的微管理器驱动程序。
  • 将启动器重命名为debug(或 Windows 上的debug.exe)时,其输出将变得更详细,并且会打开 ImageJ 的调试模式(1.x 和 2)。
  • ImageJ启动器现在可以在更多情况下检测Java运行时的位置。
  • 启动器现在可以使用 --mini-maven 选项调用 MiniMaven。
  • 启动器被分为own repository,以反映它已经退出测试版很长一段时间的事实,而且它也是 ImageJ 1.x 和 Fiji 启动器!