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.
The Leadtools.Medical3D.Medical3DContainer class is the base class which holds the 3D objects (cameras, engines, planes, etc.) and renders them using the Leadtools.Medical3D.Medical3DContainer.Render(System.Windows.Forms.Control) 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.
Use of 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 Leadtools.Medical3D.Medical3DContainer. The next step is to add a Leadtools.Medical3D.Medical3DObject to the container, and then populate the 3D object with 2D images (stacks) using one of the following methods:
- the Medical3DObject.SetImage method
- the Medical3DObject.Image property
- the Memory Efficient load methods (see Creating 3D Object) - use these for effective resource and memory management when working with 3D object.
To render the 3D object, you must provide a rendering surface (e.g. control) for the Leadtools.Medical3D.Medical3DContainer using the following steps:
- Choose or create a Control or Form that will act as a rendering surface.
- Register the Paint event of the chosen control or form.
- In the Paint event, call the Medical3DContainer.Render method and assign the control.
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 Leadtools.MedicalViewer.MedicalViewerSeriesManager helper class for identifying and separating volumetric stacks and for applying different sorting using information retrieved from DICOM tags.
The Leadtools.Medical3D.Medical3DEngine class contains properties and methods for checking the target system's 3D capabilities. You can use this class to determine:
- Whether the target system meets the minimum requirements for LEADTOOLS 3D.
- The amount of 3D-related memory and resources that are available for your application.
- Whether support for various 3D-related features are available on the target system's graphics hardware / driver.
- The current version of DirectX on the target system.
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 Leadtools.MedicalViewer.Point3D structure
- The Leadtools.MedicalViewer.MedicalViewerImageData.ImagePosition
- The Leadtools.Medical3D.Medical3DObject.PixelSpacing
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 Leadtools.MedicalViewer.Point3D.FromDoubleArray(System.Double[]) 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:
- MPR (Multi Planer Reformatting): MPR is a two-dimensional reformatted image that is reconstructed secondarily in arbitrary planes from the stack of axial image data. In LEADTOOLS, this will be rendered as three different orthogonal plane views of the 3D volume. For more information, refer to Programming with MPR Slices.
- VRT (Volume Rendering Technique): VRT generates a 3D volume from images of a 3D volumetric data set without explicitly extracting geometric surfaces from the data. With VRT, the optical model is used to map the data values using opacity and color. The advantage of VRT over the Shaded Surface Display (SSD) technique is that VRT uses the volumetric data as a whole and none of the information is discarded. The mapping of the data to opacity values acts as a classification of the data of interest which allows visualization of the interior of the volume data. LEADTOOLS also uses different 3D rendering technique to improve the appearance of the 3D volume.
- MIP (Maximum Intensity project): With MIP, each voxel along a line view through the volume of data is evaluated, and the maximum voxel value with maximum intensity (i.e. dense structures) is selected for rendering. This provides a better view of hyperdense structures.
- MinIP (Minimum Intensity Projection): MinIP is similar MIP but only the minimum intensity along the line of view of the 3D volume data is selected for rendering. This provides a better visualization of hypodence or low-density structures with respect to surrounding tissues in a volume. For example, MinIP can be used for visualizing the bronchial tree since bronchi, the least dense structures of the thorax, are normally air-filled.
- SSD (Shaded Surface Display): SSD is a technique which displays a surface model of the 3D object specified by the ISO threshold. Please note that the interior structure or anatomy is not visible in this mode of rendering. For more information, please refer to Programming with SSD and 3D Mesh.
The generated 3D volume can be manipulated in camera space (view space) or in the 3D object space. You can use the Leadtools.Medical3D.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 Leadtools.Medical3D.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 Leadtools.Medical3D.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 hypodense and hyperdense 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:
- Medical3DObject.LoadObjectFromFile
- Medical3DObject.SaveObjectToFile
- Medical3DObject.SaveState
- Medical3DObject.LoadState
- Medical3DSSD.SaveMesh
- Medical3DSSD.LoadMesh
The Leadtools.Medical3D.Medical3DContainer also supports custom handling of mouse and paint events. For more information please refer to the Medical3DContainer Class Members.
Programming with LEADTOOLS Medical 3D Topics