-
Notifications
You must be signed in to change notification settings - Fork 228
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
dcm2niix does not support data from United Imaging Healthcare(UIH), China #225
Comments
I have uploaded a new patch that adds experimental support for some UIH features. I would suggest the engineers at UIH make a fork of dcm2niix and fill out support for the non-DICOM aspects of their format. Once complete, a pull request can be made that can insert the UIH-specific code into the main branch. At the moment, the format seems underspecified, and the engineers can resolve this with their patches. A few initial comments:
|
I have ported Xiangrui Li's modifications for UIH support. This provides experimental support for de-interlacing grids, slice timing, diffusion gradient directions, and phase polarity. As I do not have access to UIH hardware, I encourage users to test this carefully. |
@neurolabusc ,For your comments, • Is 0065,102F ScaleFactor identical to 0028,1053? Which gets priority if they differ. • Is 0065,1025 identical to the difference between 0018,0050 and 0018,0088? Which gets priority if they differ. • How is phase encoding polarity stored (e.g. A->P vs P->A)? this is important for tools like TOPUP. • How is the slice timing for 2D slices of a 3D EPI image stored - e.g. how does one determine ascending, descending, interleaved. How does one determine if a temporal gap is inserted between the last slice of one volume and the first slice of the next 3D volume (e.g. sparse imaging, dynamic correction, etc)? • The Grid layout is in theory similar to the deprecated Siemens Mosaic and has the same benefits and weaknesses. I strongly suggest UIH consider moving to the enhanced DICOM as illustrated by the Siemens XA images. Neither the grid or mosaic formats are truly DICOM conformant, and provide incorrect coordinates with valid DICOM viewing software. In addition, the Grid/Mosaic formats impose a performance penalty for de-interlacing Another 3 questions:
|
@xiangruili, for your comments in the email, I also want to give our comments as below. Thanks very much for all your comments. @neurolabusc @xiangruili
|
@chunshan thanks for the clarifications. Would it be possible for your team to acquire a reference dataset that demonstrates these features. Ideally, it would be great to have an open source dataset that I (and any other developer) could use like the Siemens dcm_qa where every commit is validated against this dataset using Travis/AppVeyor. An ideal dataset would have the following features:
Thanks for your efforts and clarifications. This should allow dcm2niix, dicm2nii and others to provide robust support for these images. |
@chunshan |
@xiangruili @neurolabusc |
@chunshan if you agree, I would like to create a new repository named dcm_qa_uih that would provide a reference dataset. Like the current dcm_qa (Siemens) and dcm_qa_nih (GE), these would be automatically used to detect regressions in new dcm2niix commits, and will be openly available for other developers. One more feature request for a sample dataset:
|
@chunshan First, since both standard and private tags are used for this parameter, the private one should have a different name, otherwise the later tag will overwrite earlier one. I am now calling the private one AcquisitionDurationUIH. Second, the meaning of the parameter is unclear to me. For the example of BOLD_resting scan, it is 34 or 33 (AcquisitionDurationUIH='0.03'). I guess it is in ms (DICOM definition is a mess for the unit of this). For BOLD_resting sequence, TR=2000, nSlice=33. My understanding is that AcquisitionDuration should be close to 2000/33=60.6ms for a slice. This can be verified by AcquisitionTime (~60ms difference). What does 34 or 33 for AcquisitionDuration mean here? Last, AcquisitionDuration is supposed to be the same for all slices, so it seems to me it does not belong to MRVFrameSequence. |
@xiangruili , For the questions you mentioned, 2, Acquisition duration in UIH MR is the acquisition time window from the first line in k-space to the last line while the time of RF, gradient and others is not included. So you could notice that the acquisition duration is shorter than the time TR/nSlice. Which value is used in your correction? 3, Theoretically, acquisition duration is the same for all slices. But if we examine the value recorded in the dicom file, there is minor difference between slices (about 1~2ms). |
@neurolabusc Data acquired for qa has been uploaded. The gradient tables are also provided. Please help to check it and create a repository. |
Thanks for the example images. In general these are very clear, and you have provided a nice, compact dataset. Unfortunately, these seem to report phase-encoding axis but not phase-encoding polarity. Specifically, consider series 6 ( |
Thank you for the reply. Your understanding is correct about the phase- encoding direction tag of UIH. Currently, (0065,1005) only reports the phased-encoding axis without the polarity information. |
@chunshan |
FYI @chunshan |
@chunshan You stated: I don't know how to intemperate the first statement. From the second statement, it seems AcquisitionDuration / dimAtPhaseDirection is "Effective EPI echo spacing" we wanted for distortion correction. Could @chunshan and @neurolabusc confirm or correct me? |
@neurolabusc The bvec from dicm2nii.m is different from Grad_PA_rot.csv, and neither gives correct result. |
|
Thank @neurolabusc . RE: Effective echo spacing RE: bvec with rotation @chunshan It seems the bvec provided in csv files has some sign problem. This is not an issue since our converters will save bvec files based on dicom info. The sign depends on how nifti image is saved (e.g. left-handed or not), so in theory, a standalone bvec table for nifti is not meaningful. |
While the value of EffectiveEchoSpacing may not be critical to getting the unwarping correct in the context of 'topup' applied using blip up/down scans, I would caution against including it if you aren't confident that the value is an accurate representation of the actual scan. My perspective is that users should be able to assume that actual field maps (e.g., in Hz) derived from blip up/down scans are accurate, and that is only true if EffectiveEchoSpacing is accurately specified. |
|
@neurolabusc @xiangruili RE:Acquisition Duration RE: Phase Encoding Polarity I am pleased to colse this issue and to make the tags more reasonable. |
@neurolabusc I just updated dicm2nii for this in case you want to compare. In my opinion, PCS reference is deterministic, while the image reference may cause confusion for signs for the cases with different phase encoding direction, non-axial slices, and reversed slice order in mosaic etc. |
|
@neurolabusc |
FYI, applicable to GRID format DICOM files: Private SQ items with private data elements are missing private creator inside 0054,0081 (Number of Slices) is available, but MR Image Module, IMHO, can not contain "Number of Slices" Image Plane Module missing Image Position (Patient) 0020,0032 (there are multiple positions in private SQ) Patient Age 0010,1010 - VR AS has invalid character (*) BTW, there is e.g. Enhanced MR Image IOD with MR Diffusion Functional Group Macro, might be it were an option? Here is the above link again for simplicity, s. folder epi_dti_tra_dir64_SaveBySlc Regards |
(0065,100d) SH [F:2S] |
@neurolabusc |
* tag 'v1.0.20181114': (70 commits) New stable release: update documentation (v1.0.20181114) Avoid using GDCM's internal OpenJPEG library. Discriminate trace from raw GE DWI scans (rordenlab#245) Restore Philips enhanced (rordenlab@3c31d18) Clean up readme, interpolation errors less verbose, add date-of-birth to BIDS (requires '-ba n') Not all GE DWI with b>0 bvec=0 are trace (rordenlab#245) calculate Zmm for enhanced DICOM w/o 0018,0088 (rordenlab#241) Kludge for Siemens MoCo slice timing interfered with CMRR fix (CMRR-C2P/MB#29) Bruker enhanced 4D data (rordenlab#241) XA10A tag substitutes (rordenlab#240) Huffman tables repeated for RGB planes for jpg_0XC3 (rordenlab#244) change MoCo naming and derived detection (rordenlab#243) Update dcm_qa_nih submodule. Update dcm_qa_nih submodule. Update dcm_qa submodule. experimental dcm4che enhanced support (rordenlab#241) Vida partial Fourier update (rordenlab#240) XA10A Vida dwell time (rordenlab#240) More XA10A Vida header info (rordenlab#240) UIH bvecs (rordenlab#225 (comment)) ...
UIH is a noted MR manufacturer from China which is currently exploring the worldwide markets. By now many institutes over the world have been using UIH MRscanners to acquire DWI/DTI and fMRI data. The users also want to convert their dicom data to NIfTI format using dcm2niix which is very popular in the brain and neurology research community. But the dcm2niix currently does not recognize the UIH data format correctly. As an example, We tried to convert the fMRI data using dcm2niix and got the following result of improper format conversion.
UIH supports two ways of archiving the DWI/DTI and fMRI data. One way is one dicom file per slice and the other is one dicom file per volume (We call it GRID format). The private tags used in the images are shown in the following table.
The example data can be downloaded from https://1drv.ms/f/s!Avf7THyflzj1gnO37GL2I8Hk-0MV . The gradient table for the DTI data is also provided.
If any questions, please give me a reply or contact me via email chunshan.yang@united-imaging.com
The text was updated successfully, but these errors were encountered: