Use the Leadtools.Medical3D assembly to render and view a series of two-dimensional medical images in a three-dimensional space. The LEADTOOLS Medical 3D SDK simplifies the reconstruction techniques that create 3D visual representations. The class library offers various mathematical algorithms to generate volumetric (3D) data using a stack of image slices. Support is provided for generating many different alternate views of the original data using various 3D reconstruction techniques (e.g. MPR, VRT, MIP, MinIP, SSD etc.). The toolkit allows rendering different volume types with options including planes, clipping, slab, scaling, zooming, full camera control, thresholding and image processing. It also supports Curved MPR, Panorama generation and display of Paraxial Cuts.
The Medical3DContainer class is the base class which holds the 3D objects (cameras, engines, planes, etc.) and renders them using the Render method. LEADTOOLS includes an easy-to-use Medical 3D Control with built-in action tools that can easily integrate with the LEADTOOLS Medical Viewer to transform the viewer into a feature-rich, advanced 3D viewer with support for different layouts, tools and functionalities that are comparable to a high-end radiology work station. The toolkit ships with a Medical Workstation Viewer application and a Medical Web Viewer solution, which are complete applications with source code that you can customize.
The Medical 3D control is ideal for rapid development because of its ease of use. The Medical 3D Container can be used where more programming control is desired or there is a need to add advance visualization to an existing application. For more information on how to use the Medical 3D Control, please refer to Working with the Medical 3D Control.
In order to use the Medical 3D capabilities, you must unlock the 3D capabilities. For more information on unlocking the Medical 3D capabilities, refer to Unlocking Special LEAD Features.
To work with the LEADTOOLS Medical 3D SDK, you must first create an instance of the Medical3DContainer. The next step is to add a Medical3DObject to the container, and then populate the 3D object with 2D images (stacks) using one of the following methods:
To render the 3D object, you must provide a rendering surface (e.g. control) for the Medical3DContainer using the following steps:
Please note that in order to generate 3D volume, you must first add a stack of 2D slices in the appropriate order. The cross sectional planes must be parallel to each other in order to generate a meaningful 3D volume. The LEADTOOLS Medical Viewer provides the MedicalViewerSeriesManager helper class for identifying and separating volumetric stacks and for applying different sorting using information retrieved from DICOM tags.
The Medical3DEngine class contains properties and methods for checking the target system's 3D capabilities. You can use this class to determine:
In order to get the correct measurements and scaling of the 3D volume and generated slices, the 3D pixel volume (voxel) must be defined appropriately. The following can be used to define the 3D pixel volume:
The information for these properties can be retrieved (as 3 values in a double array) from the Image Position (Patient) (0020, 0032) DICOM tag in an axial slice and then converted to Point3D using the FromDoubleArray method.
To appropriately orient the 3D Volume and for proper patient orientation labels on the generated images use the Medical3DObject.ImageOrientation property to set the patient's orientation on the image slice. The image orientation information is normally stored in the Image Orientation (Patient) (0020, 0037) DICOM tag in the axial CT and MR DICOM file.
Once a stack of cross-sectional images has been added to the Medical3DContainer and after the voxel and patient orientation has been defined, you can create the following types of 3D volumes for rendering using the Medical3DContainer.VolumeType property:
The generated 3D volume can be manipulated in camera space (view space) or in the 3D object space. You can use the Medical3DCamera to zoom, pan and rotate in 3D space. Set the projection method of the camera to Orthogonal or Perspective and set the far and near clipping planes to remove the unwanted or obstructive anatomy from the view. For more information refer to Programming with the Medical 3D Camera.
Using the 3D object-level manipulation properties, you also have control over the object scaling, rotation angle, pan settings, ISO thresholding, transparency (i.e. opacity of voxel) and cropping of the volume (i.e. slab). For more information on using the Medical3DObject, please refer to Manipulating 3D Objects.
The combination of camera control and 3D object manipulations such as cropping (slab creation) and object rotation can create many different views. One such example is to fly-around an object of interest in 3D space. For more information on the slab feature, please refer to Programming with 3D Volume Slabs.
The Medical3DContainer's Medical3DWindowLevelProperties class allows easy volume data classification by selection of an intensity range of interest using window center and window width. The change in width (data range) affects the slope which in turn affects the contrast. Changes in the Center value alters which data is included (i.e. sliding the window between hypo-dense and hyper-dense structures). In addition, this class also allows you to transfer table values using linear, exponential, logarithmic and sigmoid mapping for better visual representation of anatomy.
In addition, the LEADTOOLS 3D SDK supports saving and loading of the 3D volume data, the 3D volume state and the mesh used in SSD. This can be used for faster loading and rendering of the 3D volume to its original state. The following methods support loading and saving of the 3D data:
The Medical3DContainer also supports custom handling of mouse and paint events. For more information please refer to the Medical3DContainer Class Members.