@@ -68,7 +68,7 @@ void dcm2niix_fswrapper::setOpts(const char *dcmindir, const char *dcm2niixopts)
68
68
// set the options for freesurfer mgz orientation
69
69
tdcmOpts.isRotate3DAcq = false ;
70
70
tdcmOpts.isFlipY = false ;
71
- tdcmOpts.isIgnoreSeriesInstanceUID = true ;
71
+ tdcmOpts.isIgnoreSeriesInstanceUID = true ; // Advanced feature: '-m 2' ignores Series Instance UID
72
72
tdcmOpts.isCreateBIDS = false ;
73
73
tdcmOpts.isGz = false ;
74
74
tdcmOpts.isForceStackSameSeries = 1 ; // merge 2D slice '-m y', tdcmOpts.isForceStackSameSeries = 1
@@ -153,7 +153,11 @@ void dcm2niix_fswrapper::__setDcm2niixOpts(const char *dcm2niixopts) {
153
153
else if (*v == ' y' || *v == ' Y' || *v == ' 1' )
154
154
tdcmOpts.isForceStackSameSeries = 1 ;
155
155
else if (*v == ' 2' )
156
+ {
156
157
tdcmOpts.isForceStackSameSeries = 2 ;
158
+ tdcmOpts.isIgnoreSeriesInstanceUID = true ;
159
+ // printf("Advanced feature: '-m 2' ignores Series Instance UID.\n");
160
+ }
157
161
else if (*v == ' o' || *v == ' O' )
158
162
tdcmOpts.isForceStackDCE = false ;
159
163
} else if (strcmp (k, " v" ) == 0 ) {
@@ -194,7 +198,7 @@ bool dcm2niix_fswrapper::isDICOM(const char *file) {
194
198
* interface to nii_loadDirCore() to search all dicom files from the directory input file is in,
195
199
* and convert dicom files with the same series as given file.
196
200
*/
197
- int dcm2niix_fswrapper::dcm2NiiOneSeries (const char *dcmfile) {
201
+ int dcm2niix_fswrapper::dcm2NiiOneSeries (const char *dcmfile, bool convert ) {
198
202
// get seriesNo for given dicom file
199
203
struct TDICOMdata tdicomData = readDICOM ((char *)dcmfile);
200
204
@@ -206,19 +210,55 @@ int dcm2niix_fswrapper::dcm2NiiOneSeries(const char *dcmfile) {
206
210
tdcmOpts.seriesNumber [0 ] = seriesNo;
207
211
tdcmOpts.numSeries = 1 ;
208
212
213
+ if (!convert)
214
+ tdcmOpts.isDumpNotConvert = true ; // retrieve dicom info only
215
+
209
216
return nii_loadDirCore (tdcmOpts.indir , &tdcmOpts);
210
217
}
211
218
212
- // interface to nii_getMrifsStruct()
219
+ /*
220
+ * interface to singleDICOM() to to convert only the single image provided.
221
+ */
222
+ int dcm2niix_fswrapper::dcm2NiiSingleFile (const char * dcmfile)
223
+ {
224
+ // get seriesNo for given dicom file
225
+ struct TDICOMdata tdicomData = readDICOM ((char *)dcmfile);
226
+
227
+ double seriesNo = (double )tdicomData.seriesUidCrc ;
228
+ if (tdcmOpts.isIgnoreSeriesInstanceUID )
229
+ seriesNo = (double )tdicomData.seriesNum ;
230
+
231
+ // set TDCMopts to convert just one series
232
+ tdcmOpts.seriesNumber [0 ] = seriesNo;
233
+ tdcmOpts.numSeries = 1 ;
234
+
235
+ tdcmOpts.isOnlySingleFile = true ;
236
+
237
+ return singleDICOM (&tdcmOpts, (char *)dcmfile);
238
+ }
239
+
240
+ // interface to nii_dicom_batch.cpp::nii_getMrifsStruct()
213
241
MRIFSSTRUCT *dcm2niix_fswrapper::getMrifsStruct (void ) {
214
242
return nii_getMrifsStruct ();
215
243
}
216
244
217
- // interface to nii_getMrifsStructVector()
245
+ // interface to nii_dicom_batch.cpp:: nii_getMrifsStructVector()
218
246
std::vector<MRIFSSTRUCT> *dcm2niix_fswrapper::getMrifsStructVector (void ) {
219
247
return nii_getMrifsStructVector ();
220
248
}
221
249
250
+ // interface to nii_dicom_batch.cpp::nii_clrMrifsStruct()
251
+ void dcm2niix_fswrapper::clrMrifsStruct (void )
252
+ {
253
+ nii_clrMrifsStruct ();
254
+ }
255
+
256
+ // interface to nii_dicom_batch.cpp::nii_clrMrifsStructVector()
257
+ void dcm2niix_fswrapper::clrMrifsStructVector (void )
258
+ {
259
+ nii_clrMrifsStructVector ();
260
+ }
261
+
222
262
// return nifti header saved in MRIFSSTRUCT
223
263
nifti_1_header *dcm2niix_fswrapper::getNiiHeader (void ) {
224
264
MRIFSSTRUCT *mrifsStruct = getMrifsStruct ();
0 commit comments