Multiple series in a single CT series

Hi all,
Maybe someone here would know-
I came across a CT series, that include 2 series, saved as a single one.
When you scroll in axial slices, you see shoulder s to pelvis and then agin shoulders to pelvis in a later contrast.
Does anyone know if there is a tag in the DICOM header that can seperate them?
ITK-SNAP doesn’t recognize they are seperate, and also from viewing the header I could’nt find anything.

Suggestions?
Thanks!

If you are using itk.GDCMSeriesFileNames, you can try to use SetUseSeriesDetails(True) (link to doxygen documentation)

You can also try loading it in Slicer, to see if they are separated/loaded properly. Slicer uses ITK for image loading, with extra logic for better handling of DICOMs.

Thank you!
SimpleITK (which I use in python ) seems to not have SetUseSeriesDetails function…

@blowekamp: Do you have any idea why the flag mentioned in the discussion seems to not be exposed in SimpleITK? Any idea how to access it?

Thank you!
this is the error I got in Slicer:

Imported a DICOM directory, checking for extensions
Imported a DICOM directory, checking for extensions
Geometric issues were found with 1 of the series. Please use caution.
Warning in DICOM plugin Scalar Volume when examining loadable 2: Unnamed Series: Images are not equally spaced (a difference of -0.5 vs 1 in spacings was detected). If loaded image appears distorted, enable ‘Acquisition geometry regularization’ in Application settins / DICOM / DICOMScalarVolumePlugin. Please use caution.
Loading with imageIOName: GDCM
Window/level found in DICOM tags (center=40.0, width=350.0) has been applied to volume 2: Unnamed Series
Irregular volume geometry detected (maximum error of 218 mm is above tolerance threshold of 0.001 mm). Regularization transform is not added, as the option is disabled.

You may want to post this error message on the Slicer discourse here. They should be able to tell you if they use the flag I mentioned above or something similar.

Thanks! I will.

In SimpleITK the ImageSeriesReader_GetGDCMSeriesFileNames static member function has a useSeriesDetails argument which can be set to true.

You can find an example of the usage of the function here:
https://simpleitk.readthedocs.io/en/master/Examples/DicomSeriesReader/Documentation.html

Oh! it’s an argument Thanks!
Unfortunatly, it didn’t work.

I tried to run this code, but it generate an image with all slices, from 2 series:

(my dir= directory to the CT DICOM images)

reader = sitk.ImageSeriesReader()
dicom_names=sitk.ImageSeriesReader_GetGDCMSeriesFileNames(rmydir) ,useSeriesDetails=True)
reader.SetFileNames(dicom_names)
image = reader.Execute()
size = image.GetSize()

If anyone has another suggestions, it would be great.

@bsmarine maybe you could advise?

What is returned from ImageSeriesReader_GetGDCMSeriesIDs(rmydir)?

The GetCDCMSeriesFileNames method can also take a seriesID argument which may help separate the two.

This would be the standard way of getting access to a specific series when multiple series are in a directory. However, given that Slicer did not automatically detect this it likely will have some type of problem. You likely need to your data provenance such as how it has been created and modified as it may not be “valid DICOM”. Inspecting the DICOM tags to “hack” a split of the slices may work.

I would look at the variety of standalone converters that already exist, some of them are summarized here: NA-MIC Project Weeks | Website for NA-MIC Project Weeks.

Personally, I would recommend dcm2niix as the first tool to check out.

Another tool that I found very useful is https://github.com/pieper/dicomsort, you can use it to separate the content of your directly based on the values of defined tags.

Thanks! I will look into it

For now I only found that the only thing that might separate the 2 series is acquisition time and location in space.

I have had a similar problem with a series with 4 different acquistions. Separating by acquistion time seems to be the only way to split the series. I have done this using pydicom and dicom2nifti. Using this, I have separated the 4 different series which I can view independently on 3D slicer.

Also quite helpful is the new series_uid argument to itk.imread available in itk-5.4rc01.