/IRCADb

deal with image and mask in dicom format

Primary LanguagePython

3D-IRCADb 01 Data Set

This project is to do some segmentation works on the 3D-IRCADb 01 data set.
This data set contains the original CT scans of 20 patients. Meanwhile, corresponding mask for each organ is also provided.

Liver Segmentation

1. Original Data & 3D Reconstruction of Liver.


Above two images are the 3D reconstruction results of the ground truth.


2. Model prediction on training set.(Patient 1) -- DenseUnet

Above image shows the prediction result on the training set(Patient 1). Prediction result is given by the DenseUnet.

  • When training the DenseUnet model. I crop the slices by batches. For each batch, I choose the slice which has the largest area of liver to draw a box, and apply the size of this box to other slices in the batch, making sure the cropped image contains all the information (liver here) needed to feed into the model. When calculate the inference, I just feed the original slice into the model and there are many noises in the output.

3. Model prediction on training set with a very simple post processing -- crop.(Patient 1) -- DenseUnet

Above image shows the prediction result of one slice on the training set(Patient 1) in the ITK-SNAP. Prediction result is given by the DenseUnet with post processing.

  • The method to do post processing on the prediction result is very simple, just crop the output slice by a box which has a coordinate of a approximately location of the liver in the original slice. So the result is not good as well.

4. Model prediction on training set. (Patient 1) -- Mask-rcnn

NOTE: Implemention of Mask-rcnn is based on https://github.com/matterport/Mask_RCNN. Modified code to train on the 3DIRCADb data set are in the folder named mrcnn_seg

Above image shows the prediction result of one slice in the ITK-SNAP.


Above image shows the prediction result on the training set(Patient 1). Prediction result is given by the Mask-rcnn.

  • Comparing to the result given by DenseUet, the segmentation effect is much better.The dice coefficient is around 0.97.

5. Model prediction on validation set. (Patient 20) -- Mask-rcnn


Above image shows the prediction result on the test set(Patient 20). Prediction result is given by the Mask-rcnn.

  • The segmentation effect on test set is good as well.
    Do not consider those slices without liver but predicted to have liver(noises),the dice coefficient is around 0.94.

Can do furthur post processing works to eliminate noises.

eg: Connected domain algorithm

Above image is the output of MRCNN model.

Above image is the output after morphology processing. "skimage.morphology.closing()"

Above image is the post processing result. After "skimage.morphology.closing() ", only reserve the largest connected domain.


In this case, just reserve the maximum connected domain can get the best result.