跳到主要内容

JAtlasView:用于浏览生物医学3D图像和地图集的Java地图集查看器

摘要

背景

生物医学研究中经常收集许多三维(3D)图像,并出版了一些带有相关解剖和其他信息的数字地图集。有许多工具可用于查看这些数据,从商业可视化软件包到免费可用的解决方案(通常取决于系统架构)。在这里,我们讨论了一个使用体系结构中立的Java编程语言实现的在任何工作站上运行的地图集查看器。

结果

我们报告了一个免费的基于Java的三维图像数据查看器的开发,描述了该查看器的结构和功能,以及如何开发自动化工具来管理Java Native Interface代码。该查看器允许任意重新分割数据并通过卷进行交互式浏览。通过适当格式的数据,例如为发育中人脑的电子地图集提供的数据,可以获得3D表面视图和解剖浏览。该界面是用Java开发的,Java3D提供了3D渲染。为了提高效率,图像数据使用Woolz图像处理库进行操作,该库作为每个机器架构的动态链接模块提供。

结论

我们的结论是,Java为这些工具的高效开发提供了一个合适的环境,现有的技术允许相对容易地集成计算效率高的图像处理库。

背景

三维(3D)图像现在在生物医学研究中很常见。直接捕获3D数据的技术非常广泛,新技术也正在出现[1,2]补充现有的剖切方法[],共焦和显微CT/MRI[4]. 此外,这些数据存储在可自由访问的数据库中(EADHB[5],电子地图[6]、生物图像[7]和MRIMA[8])而且还会有更多这样的地图集和生物信息学资源可用。有许多工具可用于浏览此类数据,但它们要么是商业性的,对用户来说成本很高(例如AVS/Express、VolRen、Amira、Analyse),要么是免费的,但与特定的体系结构相关。完全基于架构中立语言(如Java)(例如ImageJ)的系统[9])在处理大型3D体积图像时可能速度较慢,并且尚未开发3D地图集浏览应用程序。这项工作的目的是将Java的机器体系结构独立性与一个高度可移植、免费可用、快速高效的C代码图像处理库结合起来,以适应地图集浏览和数据分析任务的要求。Java Atlas-Viewer(JAtlasView)接口是作为一系列模块开发的,可以在其他应用程序中重新使用,以构建更复杂的接口。Java界面元素和图像处理库可以从EADHB和EMAP网站下载。3D图像是生物医学研究的一部分。在许多领域中,灰度或彩色体素图像最有用且经常使用的可视化是查看部分。这些是通过数字切割体积生成的2D图像,模拟了物理切片机切片的传统机制,以揭示详细结构。数字模型的优点是可以任意选择剖切平面、方向和位置以满足所需用途,并且可以交互扫描体积。

对于专业观众来说,数字重切面足以进行数据分析,但对于其他人来说,以非标准角度平移体积会导致迷失方向。此外,如果与图谱信息结合使用,其中组织学图像根据可识别组织进行分割,则组织/解剖组件的3D视图的构建是非常困难的,特别是在学习解剖结构时。通过使用底层组织的3D可视化以及体积内截面位置的交互式反馈,可以解决这个方向和结构可视化问题。

因此,JAtlasView的基本结构是3D反馈窗口与多个剖面视图的组合。每个剖面视图都是独立的,通过将剖面在三维体积中的位置显示为指示剖面平面的简单多边形或以适当的3D显示的完整灰度图像来提供反馈。此外,每个路段将显示与当前查看的所有其他路段的交点。

在这个简短的注释中,我们描述了软件的结构和界面的功能。此应用程序适用于EADHB和EMAP地图集的使用,并用于浏览3D灰度数据。首先,数据被格式化为Woolz图像结构[10],工具可用于数据转换,未来的版本将包括此作为标准。

实施

软件设计的开发满足了许多规范要求:

  • 可移植到所有主要体系结构–Unix/X11、Microsoft Windows和Macintosh,

  • 快速高效的图像处理,与现有格式和接口兼容,

  • 免费提供的代码和模块化设计,使显示元素和功能可以轻松包含在其他应用程序中

  • 用户界面应该可以映射到特定机器窗口系统的“外观”。

使用Java作为用户界面级别的语言和环境,可以满足可移植性和用户界面行为要求。对于图像处理,我们采用了ANSI标准C图像处理库Woolz。这已经包括通过3D体素图像计算和操作剖视图所需的功能,并且是开源软件。

Java的一个潜在问题是,对于繁重的数字工作(例如图像处理),它可能效率很低,并且将现有库(例如Woolz是185K行代码)移植到Java所需的工作量太大。为了解决这个问题,我们使用Java中的工具来访问“本机”代码,以便在C中进行计算工作。接口的管理和编码可能很耗时,并且容易出错,因为C代码中的任何微小更改都需要补充修改本机接口代码。我们通过实现一种自动化方法来解决这个问题,该方法将直接从C库头文件构建接口。通过采用标准的函数原型约定,可以使用解析器生成器javacc[11]构建一个java程序,该程序可以分析C-header并自动生成java类文件和匹配java本机接口(JNI)所需的C-library文件。这使得生成接口成为可能,因为它是一个自动过程,对主要代码开发人员来说是隐藏的,事实上,如果没有这种开发,系统将很难管理。

在代码结构的设计中还做出了另外两个关键选择。首先,3D可视化和反馈应该在一个独立于底层硬件的环境中开发,该环境允许对3D视图进行高度抽象。核心java环境的java3D扩展提供了这样一个模型,我们将其作为标准。Java 3D适用于所有Java 2平台。

第二个关键选择是使用Java Webstart交付软件[12]. 这是一个免费的应用程序,可以通过互联网下载代码,并检查系统、版本和补充模块要求。此外,它将启动应用程序并维护本地缓存版本。如果本地缓存与源中当前可用的版本相同,或者如果机器脱机,则将使用本地缓存进行快速启动。源代码由维护并行版本系统[13]用于版本管理和跟踪以及GNUgmake公司用于编译。这些接口是使用Borland JBuilder开发的[14]或标准编辑器(vi),并使用Javadoc/Doxygen进行记录[15].

帮助有两种方式,第一种是鼠标上的简单弹出“气球”帮助,以及使用JavaHelp排列的一系列帮助文件[16]它提供了索引、搜索和上下文帮助功能。帮助html文件是使用DreamWeaver生成的[17]并保存在CVS储存库中。

Java现在被广泛使用,是需要跨机器体系结构可移植性的新应用程序的首选。它是一种严格的面向对象语言,接口遵循模型-视图控制器(MVC)设计模式[18]. Java还定义了一个名为爪哇人组件应该满足这一要求,以保证MVC行为,并使用CASE工具在其他应用程序中易于重用。我们在JAtlasViewer应用程序中采用了这个标准,以便在其他代码中可以简单方便地使用各个界面元素,例如剖面面板,甚至是滑块的扩展视图。

结果

用户界面,如图所示1具有一个主窗口,用于显示3D视图和顶级菜单选项,以及多个截面视图,用于可视化穿过数据的虚拟截面。查看器的基本功能是允许交互式数字切割3D灰度或体素图像。此查看器的特殊功能是可以显示任意数量的剖视图,每个剖视图都具有独立和任意的方向和位置。为了帮助在卷中导航,提供了3D反馈窗口。这将显示3D体积的边界框和透明表面,例如胚胎模型。此外,在许多可选选项中提供了当前截面位置的反馈:平面与边界框的相交多边形、用纯色填充的平面的显示以及在3D视图中映射到平面上的截面图像的显示。

使用适当的数据,JAtlasViewer将导入映射的“解剖”。这分为两部分,一个术语层次结构和一组链接到层次结构中特定术语的“域”。域是识别与该术语相关联的灰度级图像内的空间区域或体素集合的3D二进制图像。然后,解剖将用于在剖面视图中提供反馈。下面讨论这些解剖选项、剖面视图控件和主窗口选项。

图1
图1

JAtlasViewer接口。JAtlasViewer界面的屏幕截图。左上:带有3D可视化和解剖树的主窗口;RHS:通过数据的三个截面视图和一些高亮解剖;左下:导入解剖的当前列表。

主对话框

当调用应用程序时,将向用户显示一个顶级对话框。在显示任何内容之前,用户必须选择灰度级3D图像。目前,这必须格式化为Woolz图像,但EMAP网站上提供了许多3D格式的转换器。读入后,3D体素图像的边界框将与数据的曲面表示一起显示在主窗口中(如果可用)。可以使用光标以交互方式操纵此三维视图,以从任意方向和位置提供视图。

主窗口的菜单选项包括:

文件

用于打开图像数据、保存视图、保存和恢复设置、最近文件列表和退出的命令。

查看节

通过体素模型选择剖面视图。如果图像模型正确对齐,一个新窗口将显示一个预设的截面,即横向、正面和矢状面。可以将每个视图设置为在三维体图像中以任意方向和位置显示视图。

解剖

如果体素模型数据配置了一组解剖区域,则可以从菜单中选择这些区域并在剖面视图中显示。对于EADHB和EMAP地图集,菜单层次结构对应于HUMAT和EMAP解剖本体。

三维视图

在主窗口中控制3D可视化的选项,切换3D表面、边界框和相交线的可见性,显示焦点部分和选定的解剖。

方向

预设3D方向以提供标准查看方向。

帮助

在线帮助菜单。

三维视图窗口显示打开体积的边界框和胚胎曲面的透明视图。此曲面是预先确定的,并存储在可视化工具包(VTK)中[19])格式。3D渲染是在Java 3D中编程的,3D视图窗口中的对象(曲面和边界框)可以通过旋转、平移和缩放控件(使用按钮拖动)自由交互操作(向查看器平移)。

如果提供了解剖层次结构和相关数据文件,则可以通过一个附加窗口浏览本体,并选择要在剖视图和3D视图窗口中显示的组件。对于胚胎表面,表面模型预先计算并以VTK格式存储。JAtlasViewer识别的数据布局在EMAP网站上有详细描述。

横断面图

每个剖面视图都显示在其自己的剖面查看器中,可以显示在主窗口(Microsoft Windows样式)内,也可以显示在独立的外部窗口中。Section Viewer是可以轻松导入到其他应用程序中的Java组件。主要的观察控制是将视图平面平行移动通过图像体积,作为“数字切片机”的一种形式,其截面厚度由3D图像的基本分辨率决定,即,将切片机移动一步将移动到堆栈中的下一个体素。假设一旦确定了截面方向,典型的用途将是以这种方式探索体积。截面位置由“distance”参数确定,该参数是距固定点的体素距离(默认情况下位于边界框的中心)。通过设置多个视图角度来选择截面方向。这些控件控制垂直于视图平面的视图方向。我们使用以下定义的标准视角[20]与欧拉旋转角有关[21]. 其中两个角度决定了视图的方向,第三个角度是围绕该方向旋转。这些角度可以用航海/航空术语理解为俯仰,偏航分别是。默认情况下,这些查看控件是隐藏的。

除了主视图方向控件之外,还有一些选项可以帮助导航。这些是查看模式:根据俯仰和偏航值自动确定横滚的选项。

固定点:选择用作旋转中心的固定点。设置此选项的效果是,在“距离”为零的情况下,使该体素在所有视图方向上都保持可见。

固定直线:设置第二个固定点并约束视图,使两个固定点都保留在剖面中。这样做的效果是将自由度减少为围绕两点之间的线旋转的单个参数。

每个剖视图的其余控件用于设置反馈选项,包括剖视图之间、剖视图和三维视图之间,并允许保存视图及其设置(视图参数)。视图内和视图间反馈选项由“Show”(显示)菜单提供。这提供了切换控件以启用:

  • 光标在参考图像坐标空间中的位置和要显示的图像灰度值,

  • 与剖视图的相交线。如果两个视图相交,则相交线以适当的颜色显示,

  • 解剖反馈–显示当前光标位置下解剖组件的域和名称,

  • 可见固定点,

  • 可见固定线。

三维视图可以根据三维体积提供所查看截面的反馈。对于大多数用户来说,这些是理解所查看部分的位置和方向的重要帮助。大多数出版物都遵循显示截面图像的惯例,使用此界面可以在任何方向和方向查看截面数据,即根据视图方向,截面可能显示为“反向”,因此位置和方向反馈至关重要。位置反馈以多种形式提供,但都指示所观察的平面与参考图像的边界框的相交。信息量最大的选择是使用纹理映射将截面的灰度图像渲染到3D视图中。这在计算上很昂贵,因此提供了另外两个选项。它们使用截面平面和边界框之间的相交多边形(as-is或用纯色填充)。方向反馈是可选的,由3D视图中显示的箭头提供。

解剖经理

JAtlasViewer的主要目的是为3D提供集成查看器地图集这些包括灰度(或潜在颜色)参考图像和一组与文本层次结构中的术语相关联的域或区域。对于地理地图集,这些将对应于自然地理和与各个国家相关的区域。然后,等级制度将列出国家名称,可能是在各大洲之下,并划分为各县。对于EADHB和EMAP,参考图像是胚胎的体素重建,域是描绘的解剖组件。术语的层次结构是相应的解剖学本体[22,23]. 用户可以从本体中选择解剖术语,以便在剖面图和3D视图中显示。选择后,组件由解剖经理(参见图2)它控制显示属性可见性和颜色。解剖管理器显示完整的组件名称、可见性控制开关、颜色选择器和删除按钮。之所以采用这种风格,是因为可能的组件选择数量很大(15–500取决于阶段),因此用户需要详细控制。此外,尽管只有解剖层次结构中的选定术语定义了相应的域,但域的组合是“动态”生成的,因此也可以可视化更大的结构。

图2
图2

解剖管理器界面。解剖键界面,用于控制2D和3D视图中显示的颜色、解剖组件名称和可见性。

这个颜色选择器按钮允许用户使用标准颜色选择器对话框更改解剖组件的颜色。更改将立即反映在所有打开的横断面图和三维反馈窗口中。。

这个文本字段显示解剖组件的全名。解剖组件分为两大层次,从胚胎胚外成分。中间的高层结构用“/”(斜杠)隔开,名称的最后部分大写。名称后面的星号表示这是一个原子组件,在解剖菜单中称为(领域). 使用鼠标左键单击从解剖菜单中选择解剖组件。还可以使用鼠标右键单击或组合转移键和(左)鼠标单击。通过在文本框内左右拖动鼠标,可以滚动解剖名称。

可见性切换用于选择零部件是否显示在剖视图和三维反馈窗口中。这种精细的控制有助于分析过程,并允许用户建立显示全部或部分解剖结构的可视化。这个删除是一个切换控件,用于从表中删除解剖组件。

结论

3D图像在医学和生物研究中得到了广泛的应用,查看这些数据有很多选项,但其中许多选项都是商业化的,价格昂贵,并且依赖于体系结构和操作系统。最近,生物医学领域的地图集和空间地图数据库已经开发出来,虽然这些软件包可以提供浏览这些数据的解决方案,但我们相信,一个简单、免费、开源和架构中性的解决方案为生物研究和教学提供了一个有用的工具。JAtlasViewer旨在满足这一要求。查看器提供浏览功能,通过同时显示三维数据来定位和显示任意截面。JAtlasVIewer还可以读取和显示完整的解剖图谱。

JAtlasViewer是用Java编程的。3D编程技术是Java3D,它是OpenGL或DirectX库的包装器。Java和Java3D运行时环境可从Sun Microsystems网站免费获得,在大多数系统中,Java是预先安装的。这些技术最大限度地减少了编码工作和开发时间。JAtlasViewer的文件大小小于1.5 MB。Java WebStart通过简单单击html页面链接或WebStart应用程序中的图标来管理部署、安装、升级和启动。它可移植到任何移植了Java的操作系统,目前可用于Windows、Linux、Solaris和Mac OS。

JAtlasViewer设计是可重用和可扩展的组件。在查看器的基础上,开发了一个用于捕获3D到3D对应关系的3D连接点收集器,以及一个还可以导入基因表达数据的地图集查看器。

可用性和要求

工具书类

  1. Sharpe J、Ahlgren U、Perry P、Hill B、Ross A、Heckesher-Sörensen J、Baldock R、Davidson D:光学投影层析成像作为3D显微镜和基因表达研究的工具。科学类2002, 296(5567):541–545. 10.1126/科学.1068206

    第条 中国科学院 公共医学 谷歌学者 

  2. Weninger WJ,Mohun T:转基因胚胎表型分析:基于表面荧光图像捕获的快速三维筛选方法。自然遗传学2002, 30: 59–65. 10.1038/ng785

    第条 中国科学院 公共医学 谷歌学者 

  3. Streicher J、Donat MA、Strauss B、Spörle R、Müller GB:基于计算机的发育基因表达三维可视化。自然遗传学2000, 25(2):147–52. 10.1038/75989

    第条 中国科学院 公共医学 谷歌学者 

  4. Jacobs R,Fraser S:胚胎细胞谱系和运动的磁共振显微镜。科学类1994, 263: 681–4.

    第条 中国科学院 公共医学 谷歌学者 

  5. 发育中人脑电子图谱[http://www.ncl.ac.uk/ihg/EADHB/]

  6. 爱丁堡老鼠地图集项目[http://genex.hgu.mrc.ac.uk]

  7. 生物图像数据库[http://www.bioimage.org]

  8. μ小鼠发育MRI图谱[http://mouseatlas.caltech.edu/index.html]

  9. 图像J[http://rsb.info.nih.gov/ij/]

  10. Piper J,Rutovitz D:C语言和Unix环境下的图像处理数据结构。模式识别字母1985, 3: 119–129. 10.1016/0167-8655(85)90018-2

    第条 谷歌学者 

  11. javacc(javacc)[https://javacc.dev.java.net网站]

  12. Java Webstart[http://java.sun.com/products/javawebstart/]

  13. CVS公司[http://www.cvshome.org]

  14. J建筑商[http://www.borland.com/jbuilder]

  15. 多西根[网址:http://www.doxygen.org]

  16. Java帮助[http://java.sun.com/products/javahelp]

  17. DreamWeaver公司[http://www.macromedia.com/software/dreamweaver]

  18. Gamma E、Helm R、Johnson R、Vlissides J:设计模式 .艾迪森·卫斯理;1995

    谷歌学者 

  19. VTK公司[http://public.kitware.com/VTK/index.php]

  20. Baldock RA、Dubreuil C、Hill B、Davidson D:爱丁堡老鼠地图集:基本结构和信息学。生物信息学数据库和系统.编辑:列沃茨基·S·克鲁沃学术出版社;1999:102–115.

    谷歌学者 

  21. 戈尔茨坦H:经典力学 .艾迪森·卫斯理;1972

    谷歌学者 

  22. Bard JBL,Baldock RA,Davidson DR:一个基于系统命名的可上网的小鼠发育解剖学数据库。发展机制1998, 74: 111–120. 10.1016/S0925-4773(98)00069-0

    第条 中国科学院 公共医学 谷歌学者 

  23. Hunter A、Kaufman MH、McKay A、Baldock R、Simmen MW、Bard JBL:人类发育解剖学的本体论。解剖学杂志2003, 203: 347–355. 10.1046/j.1469-7580.2003.00224.x

    第条 公共医学中心 公共医学 谷歌学者 

下载参考资料

致谢

这项工作得到了美国国家卫生研究院人类大脑项目(NIMH和NICHD)的支持,赠款编号HD39928-02。胚胎图谱数据来自泰恩河畔纽卡斯尔IHG的MRC-Wellcome联合人类发育生物学资源提供的材料。

作者信息

作者和附属机构

作者

通讯作者

与的通信理查德·巴尔多克.

其他信息

作者的贡献

作者GF和NB负责Java的主要开发和实现,BH和RB负责开发和维护Woolz图像处理库,BH实现了JNI的自动生成。DD、JK、MS和SL都参与了接口的设计和测试,并编制了用于该工具的Atlas数据。

作者提交的图像原始文件

下面是作者提交的原始图像文件的链接。

图1的作者原始文件

图2的作者原始文件

权利和权限

转载和许可

关于本文

引用这篇文章

冯,G.,伯顿,N.,希尔,B。等。JAtlasView:用于浏览生物医学3D图像和地图集的Java地图集查看器。BMC生物信息学 6, 47 (2005). https://doi.org/10.1186/1471-2105-6-47

下载引文

  • 收到:

  • 认可的:

  • 出版:

  • 内政部:https://doi.org/10.1186/1471-2105-6-47

关键词