Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better handling of multi-frame with no FrameIncrementPointer #156

Open
dgobbi opened this issue Jul 13, 2018 · 1 comment
Open

Better handling of multi-frame with no FrameIncrementPointer #156

dgobbi opened this issue Jul 13, 2018 · 1 comment

Comments

@dgobbi
Copy link
Owner

dgobbi commented Jul 13, 2018

Every DICOM file that has NumberOfFrames should also have FrameIncrementPointer. That is how a DICOM reader can tell whether the frames are cine, slices, pages, etc.

However, I have seen NumberOfFrames used with SOP classes that do not permit multi-frame files (such as the legacy CT Storage and Secondary Capture Storage SOP classes). In such cases, the FrameIncrementPointer is missing.

Currently, when vtkDICOMReader encounters a file with NumberOfFrames but without FrameIncrementPointer (or with a FrameIncrementPointer that points to an unknown element), the frames are treated as a vector dimension and each frame becomes a voxel vector component. In order to better handle these malformed multi-frame files, vtkDICOMReader should instead read them as multi-slice, using the following heuristics:

  • If SpacingBetweenSlices is present, it should be used as the slice spacing
  • if SpacingBetweenSlices is absent, but SliceThickness is present, then SliceThickness should be used as the slice spacing
  • if both SpacingBetweenSlices and SliceThickness are absent, then the data should read as a temporal series

Also,

  • if ImageOrientationPatient is present, the slice orientation shall be as described in the NM Reconstruction Module
@dgobbi
Copy link
Owner Author

dgobbi commented Jul 13, 2018

For reference, FrameIncrementPointer can take these values:
SC http://dicom.nema.org/MEDICAL/dicom/current/output/chtml/part03/sect_C.8.6.4.html
NM http://dicom.nema.org/MEDICAL/dicom/current/output/chtml/part03/sect_C.8.4.8.html
Cine http://dicom.nema.org/MEDICAL/dicom/current/output/chtml/part03/sect_C.7.6.5.html

Or it can be (5200,9230) PerFrameFunctionGroupsSequence if that sequence is present.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant