Can you put bones in a blender?
In my previous post I mentioned that a team at IT4Innovations developed an interesting Plugin for Blender which is useful for processing Computed Tomography (CT) images. In this post, I will briefly discuss how this tool makes it extremely easy to generate 3D models of bones from CT data. The same tool can also be used to generate models of various organs and calculate the volume of various tissues in the human body.
Blender plugins are Python scripts that the user interacts with using the Blender GUI. The actual image processing algorithms are implemented in C++ with OpenMP, with PyObject interfaces so that they can be called from Python. In brief, the plugin developed by IT4I allows somebody with little knowledge of programming to use a high performance cluster for DICOM image processing.
At the click of a button, the user can load in a series of ordered DICOM images, view the loaded images by using a slider to move through them and select various orientations to view the data. Furthermore, the user can apply various denoising filters to view the data in greater clarity, or to improve the effectiveness of later image processing.
While only one 2D slice of the data is shown above, the image processing operations are applied to all selected slices of the 3D image data. Once the data has been segmented, it is only necessary to select a segment to be converted into a structural 3D model called a “mesh model”.
The level of detail of the mesh model generated by the tool can be controlled by various parameters. Below is a higher detail model generated from the same images as the previous model.
The appropriate detail of a model produced using this tool will vary, depending on what it is to be used for. Highly detailed models will be computationally expensive to render, and as such, may not be suitable for games or interactive tools that require the model to be rendered in real time. However for generating pre-rendered animations, a highly detailed model may be more impressive, and worth the computational resources required for production.
In my next post I will discuss pre-processing techniques that can be used to improve the results of the K-means segmentation.