Search the Community
Showing results for tags '3dslicer'.
Found 4 results
So I have seen some questions here on embodi3D asking how to work with MRI data. I believe the main issue to be with attempting to segment the data using a threshold method. The democratiz3D feature of the website simplifies the segmentation process but as far as I can tell relies on thresholding which can work somewhat well for CT scans but for MRI is almost certain to fail. Using 3DSlicer I show the advantage of using a region growing method (FastGrowCut) vs threshold. The scan I am using is of a middle aged woman's foot available here The scan was optimized for segmenting bone and was performed on a 1.5T scanner. While a patient doesn't really have control of scan settings if you are a physician or researcher who does; picking the right settings is critical. Some of these different settings can be found on one of Dr. Mike's blog entries. For comparison purposes I first showed the kind of results achievable when segmenting an MRI using thresholds. With the goal of separating the bones out the result is obviously pretty worthless. To get the bones out of that resultant clump would take a ridiculous amount of effort in blender or similar software: If you read a previous blog entry of mine on using a region growing method I really don't like using thresholding for segmenting anatomy. So once again using a region growing method (FastGrowCut in this case) allows decent results even from an MRI scan. Now this was a relatively quick and rough segmentation of just the hindfoot but already it is much closer to having bones that could be printed. A further step of label map smoothing can further improve the rough results. The above shows just the calcaneous volume smoothed with its associated surface generated. Now I had done a more proper segmentation of this foot in the past where I spent more time to get the below result If the volume above is smoothed (in my case I used some of my matlab code) I can get the below result. Which looks much better. Segmenting a CT scan will still give better results for bone as the cortical bone doesn't show up well in MRI's (why the metatarsals and phalanges get a bit skinny), but CT scans are not always an option. So if you have been trying to segment an MRI scan and only get a messy clump I would encourage you to try a method a bit more modern than thresholding. However, keep in mind there are limits to what can be done with bad data. If the image is really noisy, has large voxels, or is optimized for the wrong type of anatomy there may be no way to get the results you want.
In this entry we look at registering one scan to another from the same subject pre and post op. There may come a time when you have multiple scans of the same subject which you want to compare to each other. This could be a CT and an MRI or a pre and post op scan as in this example. Since the scans were taken at different times and possibly different places they will not line up with each other when they are loaded. Registration is the process that can find the transformation that moves one volume to line up with the other. The first step after loading the data is to perform an initial alignment. If the two volumes are far apart the difference will likely be too much for the registration algorithm to properly work. The initial alignment is done using the 'transforms' menu within 3DSlicer. After creating a new transform pick which volume you will be moving as the other one (fixed image) will stay stationary through the whole process. Now adjust the 3 translation and 3 rotation sliders until you get a decent alignment by eye. It can help to center each volume first if they have a large origin offset. Also changing the way one of the volumes is colored can make visual alignment easier. With the two volumes roughly lined up find the BRAINS registration within the Registration group under the main menu. Before performing the registration set the: Fixed Image Moving Image Output Image Volume Initialization Transform Registration Phases, set to Rigid (6 Degrees Of Freedom). When you click 'Apply 'the registration will run until it finds the best match between the scans. Registration quality is typically measured in therms of 'Mutual Information' which is basically the union between the two volumes. Full volume rigid registration will not work for all situations such as two scans of a foot which are flexed in a different way. Rigid registration works best when the two scans are from the same person and the volume in question doesn't change shape (such as head scans). Other types of registration will allows the 'moving' volume to be distorted until it matches the 'fixed' volume. This can be simple affine (scaling) all the way to template matching (warping). Find the scans used at: PreOp PostOp And of course 3DSlicer - https://www.slicer.org/
In this tutorial I will cover some of the basics on working with dicom data with a focus on anatomizing, and reading into medical imaging software as well as how to potentially fix problematic scans. So first of all what is DICOM data? It is a standard file type for basically all medical imaging devices (CT, MRI, US, PET, X-ray, etc), DICOM stands for Digital Imaging and COmmunication in Medicine and along with the file format, and the tags, it is designed to be transferred and stored with PACS. The DICOM standard can be found at their homepage. The useful bits for the purpose of creating anatomical models and particularly values that define the volume geometry can be found in 'tags'. These are in each image/slice header file (metadata). They are two 4 digit hexadecimal values assigned to a particular type of value like: (0018, 0088) Spacing Between Slices To find the official library of these tags go to the standard on the dicom home page and go down to "Part 6: Data Dictionary". When opened scrolling down will reveal just how immense the dicom standard is. Now this library just gives you the tag and the name but not much information about that tag. To get a bit more of a description use Dicom Lookup and type in the tag or name to find more information. Before looking at data a mention on anatomizing data. The goal is to remove any information that can be traced back to the original person without removing other important information like modality, etc... To get an official type of list of these values go to HIPPA and find there de-identification guidance document. In general (pages 7 and 8) remove all names, dates, addresses, times, and other sensitive information like SSN. Now to actually look at the data I have for years used ImageJ which has been updated to Fiji. Open an image from the scan CD and click 'CNTR+I' to open the header file and see what is in there. Fiji (ImageJ) is a very simple and useful program for looking at data. It is mostly made for working in 2D so in that way is kind of outdated compared to modern medical imaging software like 3DSlicer but it still has its place. Fiji can save a stack of images as an nrrd file so if for some reason 3DSlicer doesn't want to load a scan correctly Fiji gives you another option. So as useful as Fiji is; for anonymising and changing the values of tags I would suggest Dicom Browser. I personally use some code in Matlab to automate the process but that is an expensive and cumbersome tool for the average user. Open the folder with the data in Dicom Browser and when the main folder is selected the values from each slice are stacked on top of each other. To anonymise the data select a value and set it to 'clear' Find all relevant information and clear it or change its value to something that can't be traced to the person (like patient A001). This is also where geometrical values like slice thickness can be changed if that is necessary to get a scan to load properly. Once all the values are changed save the new dicom files and open the new ones again in ImageJ just to check that it all worked and that no PID (Patient Identifier Data) was missed. As to fixing data the most common issue I have come across is an incorrect slice spacing which causes the scan to be shrunk or stretched. There are a few values that control this and different programs will use different values. 'SliceThickness' is sometimes used which is bad. The best is to use the 'ImagePositionPatient' which changes for each slice/image. 'SliceSpacing' is often used as well which is better than 'SliceThickness'. If you suspect your slice spacing value is wrong calculate the difference between two consecutive 'ImagePositionPatient' values and check it against the slice spacing if they are not equal something is amiss. Now you have anonymized and potentially fixed data that you can send to a friend, share here on embodi3D or load up in medical imaging software like my favorite 3DSlicer. When dicom data (anonymized or not) is loaded into 3DSlicer and saved to an nrrd file (see Dr. Mike's tutorial) you will have a single volume file which is inherently anonymized. Opening the *.nrrd file in a text editor like notepad++ there are a few lines at the top which are basically your new header file. It is very minimal and doesn't include a great deal of the information that was in the original dicom files like modality, scan type and settings. This is fine if all you want to do is create a model from it but it can be helpful to have other information then what you have in an nrrd file, so anonymized dicom will be better in some situations.
Getting from DICOM to 3D printable STL file in 3D Slicer is totally doable...but it is important to learn some fundamental skills in Slicer first if you are not familiar with the program. This tutorial introduces the user to some basic concepts in 3D Slicer and demonstrates how to crop DICOM data in anticipation of segmentation and 3D model creation. (Segmentation and STL file creation are explored in a companion tutorial ) This tutorial is downloadable as a PDF file, 3D Slicer Tutorial.pdf or can be looked through in image/slide format here in the blog 3D Slicer Tutorial.pdf