User Driven Classification
Evaluating a classification technique for volumetric datasets requires interactive tools, that let the user experiment with all available parameters. Besides the tools that are custom made for the occlusion it is crucial to offer basic tools in order to enable a direct comparison.
The editor application is written in standard ANSI C++. The preview rendering is based on the OpenSceneGraph API. It is used for transferring data to GPU memory and for establishing the required OpenGL context. The GUI portion of it is based on the wxWidgets Toolkit.
The current version is implemented for Windows only, but there are no serious reasons why the application could not be ported to other platforms. However this includes only operating systems. Because the parallel algorithm is implemented in CUDA, the application requires Nvidia hardware, because CUDA is not vendor-independent.
To allow for the editor to be run on non-Nvidia hardware, the project is split into two libraries. The editor itself is independent of the CUDA requirements and can thus be used on other hardware and operating systems. The CUDA implementation that is maintained as a separate project however must be executed on Nvidia devices. In such a scenario a connection could be established via a webservice for example.
Within the editor all relevant functions are integrated into one interface. This includes all data handling functions such as volume import and export, interactive definition of mapping functions, occlusion generation based on a parallel CUDA implementation as well as preview rendering.
The renderer is based on a volume raycaster with a front-to-back traversal order. It features local illumination with on-the-fly gradient estimation based on a central differences scheme, iso-surface rendering and early ray termination. It has a custom 2D transfer function editor for selecting different color tables as well as interactive editing of the opacity function.
To concentrate the view to a specific part of the volume, binary clipping is integrated that completely removes certain parts of the volume from the rendering. In addition to the actual volume rendering, cutting planes are available that represent two-dimensional cross sections through a volume. The spatial orientation of these slices can be either as inline, crossline or timeline (axial, coronal, sagittal).