Hi everyone,
I am a medical student from Connecticut with a (relatively) recent change of heart regarding medicine. That being said, for the past 7 months I have been studying math (linear algebra, prob/stats, calculus), programming (Python and Matlab), machine learning, natural language processing, and the nature of digital imaging. I am working on a project involving knee MRIs. To keep things short, our team is trying to automate the interpretation of anterior cruciate ligament injury (ACL) in MR images, as well as automatically generate a text report from the viusal interpretation much like a radiologist would. I am working on the imaging side of this project, but since I am new to this and working in semi-isolation, I have a lot of questions that have been accumulating over the past few months. I stumbled onto Slicer via a recommendation last month and was amazed by the software. I believe it is an essential component for this project.
First, I want to outline the project very briefly. Like I said, our data is MR images/volumes of the knee. We have secured an IRB to gain access to ~15,000 studies (retrospective). The data is formatted according to DICOM standards. We plan on seperating the studies into “ACL torn” and “ACL intact”. Then using supervised methods (we are still looking into this but will be some variation of CNN/RNN), we plan on training an algorithm to classify the MR volumes accordingly. Along the way, I personally would like to come up with a way to automatically segment the ACL as well, a difficult task for those who know the MR images of the knee joint.
Here are my questions:
-
Data format: As a team we have been discussing the appropriate data format. It is between NIFTI and DICOM. I have spent some time reading up on DICOM, including some of the papers published by indiviudals involved with Slicer development (also I just started reading a book by O. Pianykh), and it seems to me that DICOM should be the choice. Assuming all of the studies truly follow DICOM standards, is there any advantage in using NIFTI over DICOM with Slicer?
-
MR images: Many of you probably know that MRI is a complicated imaging modality that allows you to choose several parameters (TR, TE, etc) that determine the image contrast (PD, T1, T2…), spatial resolution, etc. Thus, for a given study, you obtain several series. Each series is a distinct volume of the same object, however the image histograms are very different, and the dimensions of the volumes can be different. From my understanding, one thing that is important when using supervised machine learning methods is that the input vector (each voxel in the volume is feature) should be the same size for every training sample. Consequently, that should mean that any and all volumes we want to use for training have to be the same size and shape. I have a sample of 30 studies, with ~7-8 series in each study (PD FS in all 3 planes, T2 FS in coronal and sagittal, T1 in sagittal, STIR in coronal and sagittal). I know this is not a question directly related to Slicer, but if anybody could advise whether it is a good idea to use all of the series from each patient/study, or simply focus on one or two (see next question for more detail).
3.) Resampling and Registration: Given the nature of the differences within and among the different knees i.e. intra-patient and inter-patient, I think I will need to resample and register this sample dataset to a common volume. I did a bunch of reading and found the Elastix module, read (to the best of my ability) the manual and it seemed pretty good because it resamples for you! However…after some thought, I realized this may not work so well. I think there is too much variation in contrast and spatial resolution to produce anything worthwhile. Perhaps I need to pick a single series e.g. PD FS? In any case, I will probably end up using Elastix. Could someone explain or point me to how I can use python to script batch registration and. The sample data I have is organized into a directory tree on my drive, so I will probably need to loop through folders…or can I simply load the DICOM data into Slicer and loop that way? I vaguely (very vaguely) understand that Slicer represents things as “nodes” but not very clear about this.
- P.S. I was also wondering about the utility of super-resolution reconstruction i.e. since I have PD FS in all 3 planes I was wondering if there was any Slicer modules that supported this type of reconstruction. This would really benefit segmentation, image recognition, etc.
4.) Segmentation: All supervised methods rely on labeled data and so I know that we will have probably have to manually segment the ACL on many, many volumes. I found the knee atlas for surgical planning made by the folks in Boston, really amazing stuff. I’m trying to figure out the best workflow here as well. After the images are registered, is the Segment Editor the best tool for this task? Also, is it feasible to segment say, 100 ACLs, then use noise models (perhaps that’s not the right terminology), to generate novel volumes for use in our neural network. I know several authors have used this technique e.g. prostate to avoid having to label thousands of images. I am just not sure about how to go about doing this with Slicer (if it is possible).
I have more questions, but this is already too long of a post. I apologize for rambling. Also, I wasn’t sure if this was the right forum for this post, but I have been struggling trying to understand this stuff on my own and the community here seems very supportive.Thank you for any and all help!!!
Sincerely,
Dan