Skip to content

Commit aa2bb8f

Browse files
committed
Philips 11.1 DWI DICOM kludge (#809)
1 parent e314887 commit aa2bb8f

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

console/nii_dicom.cpp

+11-1
Original file line numberDiff line numberDiff line change
@@ -4739,6 +4739,7 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
47394739
float patientPosition2[kMaxSlice2D];
47404740
float patientPosition3[kMaxSlice2D];
47414741
bool isKludgeIssue533 = false;
4742+
bool isKludgeIssue809 = false;
47424743
uint32_t dimensionIndexPointer[MAX_NUMBER_OF_DIMENSIONS];
47434744
size_t dimensionIndexPointerCounter = 0;
47444745
int maxInStackPositionNumber = 0;
@@ -4933,7 +4934,6 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
49334934
// printf("slice %d---> 0020,9157 = %d %d %d\n", inStackPositionNumber, d.dimensionIndexValues[0], d.dimensionIndexValues[1], d.dimensionIndexValues[2]);
49344935
// d.aslFlags = kASL_FLAG_PHILIPS_LABEL; kASL_FLAG_PHILIPS_LABEL
49354936
if ((nDimIndxVal > 1) && (volumeNumber > 0) && (inStackPositionNumber > 0) && ((d.aslFlags == kASL_FLAG_PHILIPS_LABEL) || (d.aslFlags == kASL_FLAG_PHILIPS_CONTROL))) {
4936-
49374937
isKludgeIssue533 = true;
49384938
for (int i = 0; i < nDimIndxVal; i++)
49394939
d.dimensionIndexValues[i] = 0;
@@ -4946,6 +4946,14 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
49464946
d.dimensionIndexValues[3] = volumeNumber; // dim[6] Repeat changes slowest
49474947
nDimIndxVal = 4; // slice < phase < control/label < volume
49484948
// printf("slice %d phase %d control/label %d repeat %d\n", inStackPositionNumber, d.phaseNumber, d.aslFlags == kASL_FLAG_PHILIPS_LABEL, volumeNumber);
4949+
} else if ((d.manufacturer == kMANUFACTURER_PHILIPS) && (nDimIndxVal > 1) && (volumeNumber > 0) && (B0Philips >= 0) && (inStackPositionNumber > 0) && (philMRImageDiffBValueNumber > 0)) {
4950+
isKludgeIssue809 = true;
4951+
for (int i = 0; i < nDimIndxVal; i++)
4952+
d.dimensionIndexValues[i] = 0;
4953+
d.dimensionIndexValues[0] = gradientOrientationNumberPhilips;
4954+
d.dimensionIndexValues[1] = floor(B0Philips);
4955+
d.dimensionIndexValues[2] = inStackPositionNumber;
4956+
nDimIndxVal = 3;
49494957
}
49504958
if ((volumeNumber == 1) && (acquisitionTimePhilips >= 0.0) && (inStackPositionNumber > 0)) {
49514959
d.CSA.sliceTiming[inStackPositionNumber - 1] = acquisitionTimePhilips;
@@ -8136,6 +8144,8 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
81368144
}*/
81378145
if ((isKludgeIssue533) && (numDimensionIndexValues > 1))
81388146
printWarning("Guessing temporal order for Philips enhanced DICOM ASL (issue 532).\n");
8147+
if ((isKludgeIssue809) && (numDimensionIndexValues > 1))
8148+
printWarning("Guessing temporal order for Philips enhanced DICOM DWI (issue 809).\n");
81398149
// sort dimensions
81408150
if (stackPositionItem < maxVariableItem)
81418151
qsort(dcmDim, numberOfFrames, sizeof(struct TDCMdim), compareTDCMdim);

console/nii_dicom.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extern "C" {
5050
#define kCPUsuf " " // unknown CPU
5151
#endif
5252

53-
#define kDCMdate "v1.0.20250227"
53+
#define kDCMdate "v1.0.20250303"
5454
#define kDCMvers kDCMdate " " kJP2suf kLSsuf kCCsuf kCPUsuf
5555

5656
static const int kMaxEPI3D = 1024; // maximum number of EPI images in Siemens Mosaic

0 commit comments

Comments
 (0)