The user interface, shown in figure 1, has a primary window for the 3D view and top-level menu options, and a number of section-views for visualising the virtual sections cut through the data. The basic functionality of the viewer is to allow interactive digital resectioning of a 3D grey-level or voxel image. The special feature of this viewer is that any number of section views, each with an independent and arbitrary orientation and position can be displayed. To aid navigation through the volume a 3D feedback window is provided. This displays the bounding box of the 3D volume and a transparent surface, of e.g. the embryo model. In addition feedback of the current section position is provided in a number of selectable options: an intersecting polygon of the plane with the bounding box, display of the plane filled with a solid colour and display of the image of the section mapped onto the plane in the 3D view.
With appropriate data, the JAtlasViewer will import a mapped "anatomy". This is in two parts, a hierarchy of terms and a set of "domains" linked to specific terms in the hierarchy. The domains are 3D binary images which identify the region of space or set of voxels within the grey-level image associated with that term. The anatomy will then be used to provide feedback within the section views. These anatomy options, the controls for the section views and the main window options are discussed below.
Main dialog
When the application is invoked a top-level dialog is presented to the user. Before anything can be displayed the user must select a grey-level 3D image. Currently this must be formatted as a Woolz image, but converters for many 3D formats are available from the EMAP web site. Once read in, the bounding box of the 3D voxel image will be displayed in the main window along with a surface representation of the data if available. This 3D view can be manipulated interactively using the cursor to provide views from arbitrary orientations and positions.
The menu options of the primary window are:
File
Commands to open image data, save views, save and restore settings, recent file-list and quit.
View Section
Select a section view through the voxel model. A new window will display one of the pre-set sections which are transverse, frontal and sagittal planes if the image model is appropriately aligned. Each of these can be set to display views at arbitrary orientations and locations within the 3D volume image.
Anatomy
If the voxel model data is configured with a set of anatomical regions, these can be selected from the menu and displayed in the section views. For the EADHB and EMAP atlases the menu hierarchy corresponds to the HUMAT and EMAP anatomy ontologies.
3D View
Options to control the 3D visualisation in the main window, toggle the visibility of 3D surface, bounding box and intersection lines, display the focus section and selected anatomy.
Orientation
Preset 3D orientations to provide standard viewing directions.
Help
On-line help menu.
The 3D view window displays the bounding box of the opened volume and a transparent view of the embryo surface. This surface is pre-determined and stored in the visualization toolkit (VTK[19]) format. The 3D rendering is programmed in Java 3D, the objects (surface and bounding box) inside the 3D view window can be freely interactively manipulated with controls (using button drag) for rotation, translations and zoom (translation towards the viewer).
If an anatomy hierarchy and associated data files are provided then an additional window will allow browsing through the ontology and selection of components for display both in the section views and the 3D view window. As for the embryo surface, the surface models are pre-calculated and stored in VTK format. The data layout recognized by the JAtlasViewer is described in detail on the EMAP web-site.
Section views
Each Section View is displayed in its own Section Viewer, either inside the main window (Microsoft Windows style) or in an independent external window. Section Viewers are Java components that can be easily imported into other applications. The primary viewing control is to move the view plane-parallel through the image volume as a form of "digital microtome" with section thickness determined by the underlying resolution of the 3D image, i.e. moving the microtome by a single step will move to the next voxel in the stack. The assumption is that once the section orientation has been determined the typical use will be to explore the volume in this fashion. The section position is determined by the "distance" parameter which is the voxel distance from the fixed point (by default in the centre of the bounding-box). Section orientation is selected by setting a number of view-angles. These control the view-direction which is perpendicular to the view-plane. We use the standard viewing angles defined by [20] which are related to the Euler angles of rotation [21]. Two of the angles determine the view-direction and the third is rotation around that direction. These angles can be understood in nautical/aeronautical terms as pitch, yaw and roll respectively. These viewing controls are hidden by default.
In addition to the primary view-direction controls there are options to assist navigation. These are View-mode: options for automatic roll determination in terms of the pitch and yaw values.
Fixed-point: select the fixed point used as the centre of rotation. The effect of setting this is to keep that voxel in view for all view-directions provided the "distance" is zero.
Fixed-line: set a second fixed-point and constrain the view so that both fixed points remain in the section. The effect of this is to reduce the degrees of freedom to a single parameter of rotation around the line between the two points.
The remaining controls for each section view are to set the feedback options including between section views, between the section view and the 3D view and to allow saving of the view and its settings (view parameters). The within view and between views feedback options are provided by the "Show" menu. This provides toggle controls to enable:
-
cursor position in the reference image coordinate space and image grey-value to be displayed,
-
line of intersection with section views. If two views intersect then the line of intersection is displayed in the appropriate colour,
-
anatomy feedback – shows the domain and name of the anatomical component under the current cursor position,
-
visible fixed point,
-
visible fixed line.
The 3D view can provide feedback of the viewed sections in terms of the 3D volume. For most users these are important aids to understanding the position and direction of the viewed section. Most publications adhere to a convention for displaying section images, with this interface it is possible to view section data at any orientation and direction, i.e. depending on the view-direction the section may appear "reversed", so positional and directional feedback is critical. The positional feedback is provided in a number of forms but all indicate the intersection of the viewed plane with the bounding-box of the reference image. The most informative choice is to use texture mapping to render the grey-level image of the section into the 3D view. This is computationally expensive and so two other options are provided. These use the intersection polygon between the section plane and bounding box, either as-is, or filled with solid colour. The directional feedback is optional and provided by an arrow displayed in the 3D view.
Anatomy manager
The primary purpose of the JAtlasViewer is to provide an integrated viewer for 3D atlases. These comprise a grey-level (or potentially colour) reference image and a set of domains or regions which are associated with terms in a text hierarchy. For a geographic atlas these would correspond to the physical geography and the areas associated with individual countries. The hierarchy would then list the country names, perhaps under continents and split into counties. For EADHB and EMAP the reference image is the voxel reconstruction of the embryo and the domains are delineated anatomical components. The hierarchy of terms are the corresponding anatomy ontologies [22, 23]. The user can select anatomical terms from the ontology for display in the section and 3D views. Once selected the component is handled by the Anatomy Manager (see fig 2) which controls the display properties visibility and colour. The anatomy-manager displays the full component name, visibility control toggles, colour chooser and a delete button. This style has been adopted because the number of possible component selections is large (15–500 depending on stage) and thus the user requires detailed control. In addition, although only selected terms in the anatomical hiearchy have corresponding domains defined, combinations of domains are generated "on-the-fly" so that larger scale structures can also be visualized.
The colour chooser button allows the user to change the colour of an anatomy component using a standard color chooser dialogue. The change is reflected immediately in all open Section Views and and the 3D feedback window..
The text field displays the full name of the anatomy component. Anatomy components fall into 2 broad hierarchies starting either at embryo or extra-embryonic component. The intervening higher level structures are separated with "/" (slash) and the final part of the name is capitalised. An asterisk following a name indicates that this is an atomic component, referred to in the anatomy menu as a (domain). Anatomical components are selected from the anatomy menu using a left mouse click. Higher level components or structures may also be selected from the anatomy menu using a right mouse click or a combination of the shift key and (left) mouse click. The anatomy name may be scrolled by dragging the mouse left or right inside the text box.
The visibility toggles select whether a component is displayed in the section views and in the 3D feedback window. This fine control helps the process of analysis and allows the user to build up a visualization showing all or parts of the anatomy. The delete is a toggle control which removes an anatomy component from the table.