我知道编辑这个网站吗?

2016-06-23 - ImgLib2 黑客马拉松

/media/news/janelia-2016-hackathon.jpg

ImgLib2黑客,从左到右:Stephan SaalfeldChristian Birkhold (Dietz)Curtis RuedenTobias Pietzsch

从 2016 年 6 月 19 日星期日到 2016 年 6 月 28 日星期二,Stephan Saalfeld 在弗吉尼亚州阿什本的 HHMI Janelia 举办了 Tobias PietzschCurtis RuedenChristian Birkhold (Dietz)hackathon 会议,以改进核心 ImageJ2 数据模型。

时间轴

下图说明了每个人都在场的情况:

/media/news/imglib2-hackathon-timeline.png <!– The image above was rendered by MediaWiki. Original data, as converted, follows.

Preset = TimeHorizontal\_AutoPlaceBars\_UnitYear 图像大小=宽度:550 颜色= id:c01 值:蓝色 id:c02 值:红色 id:c03 值:绿色 id:c04 值:黑色 id:c05 值:洋红色 id:gridLine 值:gray(0.5) id:gridCanvas 值:gray(0.8) 背景颜色=画布:gridCanvas 期间 = 从:19 到:28 ScaleMajor = 单位:年增量:1 开始:19 网格:白色 线数据 = at:19 颜色:gridLine 图层:背面宽度:0.5 at:20 颜色:gridLine 图层:背面宽度:0.5 at:21 颜色:gridLine 图层:背面宽度:0.5 at:22 颜色:gridLine 图层:背面宽度:0.5 at:23 颜色:gridLine 图层:背面宽度:0.5 at:24 颜色:gridLine 图层:背面宽度:0.5 at:25 颜色:gridLine 图层:背面宽度:0.5 at:26 颜色:gridLine 图层:背面宽度:0.5 at:27 颜色:gridLine 图层:背面宽度:0.5 at:28 颜色:gridLine 图层:背面宽度:0.5 条形数据= 酒吧:黑客 绘图数据= 宽度:15 字体大小:M 文字颜色:白色 对齐:左 锚:来自 班次:(4,-4) 颜色:黑色 酒吧集:黑客 颜色:c01 从:19 到:28 文本:“Stephan Saalfeld (Janelia)” 颜色:c02 从:20 到:28 文本:“Tobias Pietzsch (MPI-CBG)” 颜色:c03 从:20 到:27 文本:“Christian Dietz (UniKN)” 颜色:c04 从:19 到:24 文本:“Curtis Rueden (UniWisc)”

–>

Kyle Harrington 23 号下午过来讨论了一些问题。

讨论和进展

我们花了最初几天的时间讨论核心ImageJ2元数据丰富的图像结构的用例和要求。

我们考虑的一些所需功能:

  • ImageJ 1.x样式校准
  • 时空剪切
  • 显示转换
  • 显示颜色转换
  • 显示强度转换
  • 存储有关原始数据的预处理信息(例如:最小值、最大值、直方图、特征……)
  • 预测
  • 非线性轴变换(例如:对数)
  • 其他任意变换(例如:极坐标到笛卡尔坐标)
  • 一些信息字符串(元数据)

我们用作我们想法的试金石的中心用例:

  • 在图像的不同维度上进行不同的插值(例如:使用 Lanczos 将 XYZ 视为连续,但使用 nearest neighbor1D linear 将时间视为离散。
  • 将 2D 图块注册到更大的 2D 图像中,如 TrakEM2 所示。
  • 随着时间的推移注册 2D 平面(例如:纠正晃动的凸轮)。
  • 样本上的时间偏差:每个平面/扫描线/像素可以有一个物理时间戳,可以以某种方式考虑到这一点,尽管在实践中这样做非常罕见。

我们花了相当多的时间考虑如何创建一个统一的数据结构(SpaceTree?:-),它将多个图像分组为某种树形或图形结构,并附加transforms,以处理上述所有用例等的方式。

最终,我们得出的结论是,在真空中设计这样的数据结构太困难了,因此我们选择开始使用ImgLib2对各个用例进行编码。我们提出了一种设计,它提供:A) 元数据丰富的图像的容器,其中各个元数据元素对 Views 操作敏感; B) 根据用例将这些元数据丰富的图像“整理”为越来越有用的数据结构的方案。

元数据丰富的容器

我们发明了 MetaViews,一个类似于 Views 的类,但用于元数据元素。然后,这些元素被聚合到 MetaSpace 中,它提供了用于处理该空间的修改器和访问器。例如,您可以将物理校准附加到空间轴,或将自定义可变宽度时间戳附加到时间轴上的每个点。

除此之外,我们正在积极开发一种(暂定名为)RichImage结构,由图像像素(例如RandomAccessible)和描述它的MetaSpace组成。 SCIFIO 库将更新为生成 Dataset,即 RichImage 元素的集合,其中直接使用源数据格式中的元素进行填充。

图像丰富器

对于上述各种用例(例如,在更大的空间中注册图块),我们将有一个调用ImageInspector插件的管道,该插件检查RichImages并决定是否可以使用可用的ImageEnricher插件来改进它们。 (再次强调:这些只是工作名称。)例如,Dataset 图像集合可能由一袋具有相关仿射变换的 2D 图块组成;然后,MosaicEnricher 可以虚拟地应用这些变换,以提供更大的 2D 马赛克图像,作为 RandomAccessible,它返回每个样本的图块值列表。 FusionEnricher可以对任何返回列表的RandomAccessible进行操作,使用给定的Converter混合该列表的值。 (实际上,丰富器很可能比这些示例更通用,但希望它们在这里能够说明一些可能性。)

源代码

这些数据结构的当前工作可以在以下位置查看:

还有一个黑客马拉松的实验存储库,位于: