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

Bruker Enhanced MR DICOM - parametric maps #282

Closed
isolovey opened this issue Mar 20, 2019 · 4 comments
Closed

Bruker Enhanced MR DICOM - parametric maps #282

isolovey opened this issue Mar 20, 2019 · 4 comments

Comments

@isolovey
Copy link
Contributor

Another issue with a multi-frame (Enhanced MR) DICOM from a Bruker scanner, this time with a parametric map.

I've uploaded a T2 map DICOM file here.

The volumes in this series represent different contrasts/outputs and should end up in separate Nifti files. The uploaded series is a T2 fit, so the 5 volumes are relaxation time, signal intensity (parameters fitted), as well as their standard deviations and the standard deviation of the fit.

There are a few issues here:

  • v1.0.20181125 splits up the volumes into separate files as needed, but the latest development branch build combines them into a 4D Nifti.
  • In both v1.0.20181125 and development builds, the slice and volume ordering is swapped, similar to this. Swapping the last two dimensions using the linked snippet fixes the problem (but each volume of the corrected dataset should then be saved separately).
  • Ideally, the Nifti file names should include (0020,9453) Frame Label, if present. In our specific case, they are meaningful and useful. Not sure how generalisable that is.
@neurolabusc
Copy link
Collaborator

Feel free to submit pull requests to address this. I would suggest waiting for Bruker to update their DICOMs to resolve issue 265.

Once they have fixed their images it would be great to have a validation dataset that showcases unique features of Bruker images. We can use those images to regression test every commit. This would parallel the validation datasets for GE, Philips, Siemens and UIH. In the meantime, I would suggest exporting to their proprietary format (or use your code snippet for images like this one).

As you note, one could use FrameComments (0020,9158) or FrameLabel (0020,9453) for naming the different volumes.

For the record, here is how 2D slices in your sample enhanced DICOM image are saved.

        (0020,9057) UL 1                                        #   4, 1 InStackPositionNumber
        (0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
        (0020,9156) US 1                                        #   2, 1 FrameAcquisitionNumber
        (0020,9157) UL 1\1\1                                    #  12, 3 DimensionIndexValues
        (0020,9158) LT [signal intensity]                       #  16, 1 FrameComments
...
        (0020,9056) SH [1]                                      #   2, 1 StackID
        (0020,9057) UL 1                                        #   4, 1 InStackPositionNumber
        (0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
        (0020,9156) US 2                                        #   2, 1 FrameAcquisitionNumber
        (0020,9157) UL 1\1\2                                    #  12, 3 DimensionIndexValues
        (0020,9158) LT [std dev of signal intensity]            #  28, 1 FrameComments
...
        (0020,9057) UL 1                                        #   4, 1 InStackPositionNumber
        (0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
        (0020,9156) US 3                                        #   2, 1 FrameAcquisitionNumber
        (0020,9157) UL 1\1\3                                    #  12, 3 DimensionIndexValues
        (0020,9158) LT [T2 relaxation time]                     #  18, 1 FrameComments
...
        (0020,9057) UL 1                                        #   4, 1 InStackPositionNumber
        (0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
        (0020,9156) US 4                                        #   2, 1 FrameAcquisitionNumber
        (0020,9157) UL 1\1\4                                    #  12, 3 DimensionIndexValues
        (0020,9158) LT [std dev of T2 relaxation time]          #  30, 1 FrameComments
...
        (0020,9057) UL 1                                        #   4, 1 InStackPositionNumber
        (0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
        (0020,9156) US 5                                        #   2, 1 FrameAcquisitionNumber
        (0020,9157) UL 1\1\5                                    #  12, 3 DimensionIndexValues
        (0020,9158) LT [std dev of the fit]                     #  18, 1 FrameComments
...
        (0020,9057) UL 2                                        #   4, 1 InStackPositionNumber
        (0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
        (0020,9156) US 6                                        #   2, 1 FrameAcquisitionNumber
        (0020,9157) UL 1\2\1                                    #  12, 3 DimensionIndexValues
        (0020,9158) LT [signal intensity]                       #  16, 1 FrameComments

@isolovey
Copy link
Contributor Author

Thanks, we'll look into fixing this and submit a PR. Regarding #265, we are in the process of testing our new diffusion phantom and will have a good validation dataset shortly.

@neurolabusc
Copy link
Collaborator

Great. Be aware that a solution to #265 will require new software from Bruker that records the BVec into (0018,9089). Even if Bruker corrects their BMatrix (0018,9602..9607) it is insufficient to extract the bvec. To demonstrate this, consider the polar opposite BVecs [1 0 0] and [-1 0 0]: they both generate an identical BMatrix. Therefore, the BMatrix is insufficient to recover the BVec we need.

isolovey added a commit to isolovey/dcm2niix that referenced this issue May 15, 2019
Use Dimension Index Sequence (0020,9222) to identify elements of
Dimension Index Values (0020,9157) and re-order them such that In-Stack
Position Number (0020,9057) is always first, and hence slices are
correctly grouped together.

(rordenlab#282)
isolovey added a commit to isolovey/dcm2niix that referenced this issue May 15, 2019
Fix incorrect combining of parametric maps into one Nifti file (rordenlab#282)
isolovey added a commit to isolovey/dcm2niix that referenced this issue May 15, 2019
Use Dimension Index Sequence (0020,9222) to identify elements of
Dimension Index Values (0020,9157) and re-order them such that In-Stack
Position Number (0020,9057) is always first, and hence slices are
correctly grouped together.

(rordenlab#282)
isolovey added a commit to isolovey/dcm2niix that referenced this issue May 15, 2019
Use Dimension Index Sequence (0020,9222) to identify elements of
Dimension Index Values (0020,9157) and re-order them such that In-Stack
Position Number (0020,9057) is always first, and hence slices are
correctly grouped together.

(rordenlab#282)
isolovey added a commit to isolovey/dcm2niix that referenced this issue May 16, 2019
Use Dimension Index Sequence (0020,9222) to identify elements of
Dimension Index Values (0020,9157) and re-order them such that In-Stack
Position Number (0020,9057) is always first, and hence slices are
correctly grouped together.

(rordenlab#282)
@neurolabusc
Copy link
Collaborator

@isolovey-robarts am I correct that your pull request resolves this issue in the developmental branch? If so, I suggest we close this issue and generate a new stable release.

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

No branches or pull requests

2 participants