Introduction: MRI to 3D Printable File
These instructions will help walk you through how to convert MRI data into a 3D printable file.
NOTE 1: I have no medical background and am not an expert at analyzing MRI data
NOTE 2: A lot of artistic license was required for the demonstrated brain and I cannot guarantee that even with mastery of 3D Slicer, that artistic license will not be required for your models. Thus these instructions should not be considered capable of producing medical-quality models.
You can find the demonstrated final model on my Thingiverse account here:
https://www.thingiverse.com/thing:4583892
(2024 Note: I have since been employed at a company that 3D prints medical devices and anatomical models and found out that this is basically how professionals segment. There's a dab hand of personal experience/art in segmenting medical data.)
Step 1: Requirements
For this Instructable, you will need:
- MRI / DICOM data
- 3DSlicer - https://www.slicer.org/ (Windows / MacOS/ Linux) - Free!
Meshmixer - http://www.meshmixer.com/ (Windows / MacOS) - Free!
More details:
MRI Data: The instructions provided use a CD of MRI scan data. This CD was requested by the hospital where the patient received multiple scans over several years. Most MRI offices are happy to provide your patient scan data but you need to request it and it may take awhile for them to burn the CD. However, if you are fortunate enough to not have a family member who has undergone a MRI scan, there are freely available DICOM files provided on the internet.
3DSlicer: There are other MRI data manipulating programs out there. I chose 3DSlicer as it is a free program. I have been told that other (paid) programs are much better at making the conversion from 2D slice files into 3D model.
Meshmixer: I'm a HUGE fan of Autodesk's Meshmixer. It is my favorite surface modeler and it's free. But any surface modeler can be used for the clean-up and beautification portion of these instructions.
Step 2: Step 1: 3D Slicer - Welcome Screen and Load Files
When opening 3D Slicer, this is the main screen.
To load files, click "Load DICOM Data"
NOTE - Program Navigation: The screen can be navigated away from the welcome screen by using the drop-down medu at the top. In the image it's currently labeled "Welcome to Slicer"
Step 3: Step 2: 3D Slicer - Import MRI Data
- After clicking the "Load DICOM Data" button, the top left window will appear. Click "Import"
- Navigate to files (in this case they are on a CD) and Import.
Depending upon how many files and scan slices there are, this could take a few minutes to import. But upon completion, you'll see the bottom right screen showing you the breakdown of the files it imported. In this example there was one patient's data with 11 different MRI scan sessions and styles and 580 individual files/slices.
Step 4: Step 3: 3D Slicer - Finish Importing Files
- Select the session you wish to look at
- Click "load"
If there are more than one session/scan-style, this screen will let you choose which to import. If you are unfamiliar with what you want to work with, I recommend importing all of them. You can select multiple at one time to import together.
Step 5: Navigating 3D Slicer
Upon loading the data, this is the screen you will be presented with. On the left are the lists of sessions you've imported, on the right are windows showing the sessions. The windows can be configured how you like, but this image has them configured with the three separate views: Top, Side, and Front and the fourth window will show the 3D model once we have something to show.
If you click the Pin button (highlighted by the bottom red circle) you can display another menu set. Using this second menu set, you can chose a different session to display by using the drop-down menu highlighted in the top red circle.
Significantly more information about how to use 3DSlicer has been written up in "Segmentation for 3D Printing" by Csaba Pinter of Queen's University available as a PDF here:
Step 6: Step 4: 3D Slicer - Choose Session
- Look through the different sessions
- Choose the session that is most in-focus and contains the entirety of the object you wish to model.
Look through the different session and chose the one to convert into a 3D model. Do this by moving the sliders above the different views (highlighted by the bottom red circle) to walk through the scan. The top highlighted red circle shows that the three views are currently unlinked, meaning that you can have different sessions displayed in each view and any adjustments made to one view, will not impact the others. While deciding which session to chose, I recommend clicking this link button so that you know that all three views show the same session.
As you work through the different session you will notice that regularly, only one view is in focus with the other two slightly out of focus or quite obviously blurry. You may also have a session that doesn't fully capture the object you wish to model. For example, one of these sessions actually stop at the upper jaw. If I wished my model to be of the full human skull, I would not want to use this session.
Step 7: Step 5: 3D Slicer - Setup the Model With Segments
- Switch to the Segmentation menu via the menu drop-down (top highlighted red circle)
- Select the session you wish to work with (middle highlighted red circle)
- Add a segment for every object to be captured - include one for the area around the scan (bottom highlighted red circle)
In the Segmentation menu, you are to add a segment for every object you wish to create a model PLUS a segment for the negative space around said object. In this case, I found it easiest to create segments for all the identifiable anatomy: light grey brain, dark grey brain (negative space), edema, skull, black inside, and the black around the scan (negative space).
Step 8: 3D Slicer - Segments Cont.
You can change the segment color by clicking the color square (top highlighted red circle) and you can change the name of the segment by clicking the text (bottom highlighted red circle).
I HIGHLY recommend that you at least name your segments so that you can remember what they are capturing as it's easy to get them confused.
Step 9: Step 6: 3D Slicer - Paint the Model
- Select the segment you wish to identify (highlighted blue)
- Select the "Paint" tool under "Effects (left highlighted red circle)
- Mark on the three different views in several different slice spots the correct object.
- If you make a mistake, use the "Erase" tool under "Effects" (right highlighted red circle)
- NOTE: You can only erase marks associated with the selected segment
- If you need to adjust your tool size, under "Paint" is a "Diameter Size" change the % number to increase or decrease the size of the tool.
Programs like 3DSlicer work by merging the multiple 2D slices into 3D models but you have to train them as to which grey is which model. They also use identified surrounding greys to creating the bounding area of the desired model. The better and more consistent you can get at telling it which greys are desirable for your model and which greys surrounding it are not what you want, the more accurate the final model(s) will be. As you are training an algorithm, you do not need to identify every pixel of grey for it. Instead, I recommend that you bounce around the different slices in all three views and identify only a few sets of grey.
This process of identifying the greys is called "seeding"
NOTE: Save! It is highly recommended to save a separate file once you have finished this step. The next step doesn't allow any undo-ing and it's easier to correct issues from the step. When re-opening a file, you'll use the .MRML saved file and will need to also re-open the desired scan session at the same time.
Step 10: Step 7: 3DSlicer - Grow Your Seeds
You have now identified the greys and their separate models, it is now time to tell the program to extrapolate this data to the entire scan set.
- Click "Grow from Seeds" in the "Effects" menu (top highlighted red circle)
- Click "Initialize" (middle highlighted red circle) - the program will give you a preview of its interpretation (shown)
- Click "Show 3D" in order to get a 3D display of the model(s)
- Click "Apply" (bottom highlighted red circle) if you like the interpretation, if you don't, go back and paint or erase more segment markings
NOTE: You can see here I misidentified what I thought was bone. In actuality the light sections around the brain was tissue and what I'd marked as "black inside" is actually bone. You can also see that I didn't do a very good job defining where the "black inside" stopped and the "bone" began, otherwise I would have a better defined spine but I was after the brain so I didn't care.
Step 11: Step 8: 3DSlicer - Export .STL
- Use the drop-down menu (top highlighted red circle) to click "Export to files..." (middle highlighted red circle)
- In the newly opened window, select where you want to export the file and what you wish to call it.
- Click "Export" (bottom highlighted red circle) when ready
Once you have a set of segmented 3D models (or the ONE model you want) that you like, it's time to export it into a file that you can use to make it actually 3D printable. You will likely not want to print directly from this exported model as, even if you achieved a perfectly represented model without any errors you'd want to correct, it's still going to be full of internal voids that will require support or uncured 3DP material that can't be removed.
The model image shows the final two models I exported: brain and edema.
NOTE: A size scale of 1.00 is actual size. Using a number of 1.00 means that I can print the brain at actual size.
Step 12: Step 9: Meshmixer - Import File
- The image on the left shows the main screen when you open Meshmixer. Click "Import" (highlighted red circle)
- Select your main model for import.
It's time to clean-up, beautify, and make 3D printable the MRI model we've created. I use Meshmixer in these instructions but a similar process can be used for any other surface modeler. You must use a surface modeler as solid modelers don't work with .STLs or any other surface-defined files very well.
NOTE: If you have multiple models to import (like my brain AND edema), the second time you import a file into Meshmixer it will as you if you wish to append or replace. In this case we want to append so that all the files are in the same project to work with.
Step 13: Step 10: Meshmixer - Clean-up
- Clean up any islands of mesh and smooth out any stair-stepping and "beautify" - use artistic license to make it look more like what you'd expect your model to look like
- Remove internal voids by creating a rough "good" model like that shown in the top left. Move your "good" model inside your MRI model and use "Boolean Union" to merge the two
- Finish cleaning up
Clean up and beautify your model. You may find that there are a lot of islands of random mesh disconnected and undesirable that you want to remove, even if you have the best MRI model in the world.
Meshmixer has many great and very intuitive tools to help you do this. My initial model had a very stair-stepped look to it that required significant drawing and bubble smoothing to get it to look more like a brain.
Once you have the outside looking like what you want, you'll then need to fill in all the internal voids. The best way I've found to do this is to develop a good model that takes the rough shape of my model, move it inside my model and then merge the too using "Boolean Union". I find a lot of time Boolean Union works best if the models I'm working with has undone "make solid" first. After removing the internal voids, you'll need to finish smoothing out the interface as many deep valleys will have been abruptly cut off by the "good" model addition.
Step 14: Step 11: Meshmixer - Make Printable
- Make modifications to the model for ease of printing
- Print and enjoy!
A lot of you will need to make adjustments to the model so that it can be more easily printed. For my brain, I opted to split it down the hemispheres and print the edema separately. This allowed me to print with very little support required as well as use a different color for my edema model to really make it visible when installed in the model. I also designed in holes for pegs to help hold the halves together but still allow the model to be taken apart for a closer look at the full edema.