Home > vbmeg > functions > tool_box > load_NIFTI > convert_dicom > convert_dicom_nifti_cmd.m

convert_dicom_nifti_cmd

PURPOSE ^

Convert DICOM to NIFTI by using dcm2niix

SYNOPSIS ^

function [status, nifti_filename] = convert_dicom_nifti_cmd(fname,outdir,prog_path,opt)

DESCRIPTION ^

 Convert DICOM to NIFTI by using dcm2niix
  status = convert_dicom_nifti_cmd(fname,outdir,prog_path,opt)
 --- Input
 fname : one of DICOM file 
         All the files in DICOM image should be saved in the same directory
 --- Output
         status : execute status (=0:success)
 nifti_filename : output nifti filename(without path)
 --- Optional Input
 outdir : Directory for output file 
          if this is not specified, output file is saved in the same directory
 opt    : option string (See the following option rule)

 prog_path : path for 'dcm2niix' program 

 ---- Output file name convention
  Options :
   -1..-9 : gz compression level (1=fastest..9=smallest, default 6)
   -a : adjacent DICOMs (images from same series always in same folder) for faster conversion (n/y, default n)
   -b : BIDS sidecar (y/n/o [o=only: no NIfTI], default y)
    -ba : anonymize BIDS (y/n, default y)
   -c : comment stored in NIfTI aux_file (provide up to 24 characters e.g. '-c first_visit')
   -d : directory search depth. Convert DICOMs in sub-folders of in_folder? (0..9, default 5)
   -e : export as NRRD (y) or MGH (o) instead of NIfTI (y/n/o, default n)
   -f : filename (%a=antenna (coil) name, %b=basename, %c=comments, %d=description, %e=echo number, %f=folder name, %g=accession number, %i=ID of patient, %j=seriesInstanceUID, %k=studyInstanceUID, %m=manufacturer, %n=name of patient, %o=mediaObjectInstanceUID, %p=protocol, %r=instance number, %s=series number, %t=time, %u=acquisition number, %v=vendor, %x=study ID; %z=sequence name; default '%f_%p_%t_%s')
   -g : generate defaults file (y/n/o/i [o=only: reset and write defaults; i=ignore: reset defaults], default n)
   -h : show help
   -i : ignore derived, localizer and 2D images (y/n, default n)
   -l : losslessly scale 16-bit integers to use dynamic range (y/n/o [yes=scale, no=no, but uint16->int16, o=original], default o)
   -m : merge 2D slices from same series regardless of echo, exposure, etc. (n/y or 0/1/2, default 2) [no, yes, auto]
   -n : only convert this series CRC number - can be used up to 16 times (default convert all)
   -o : output directory (omit to save to input folder)
   -p : Philips precise float (not display) scaling (y/n, default y)
   -r : rename instead of convert DICOMs (y/n, default n)
   -s : single file mode, do not convert other images in folder (y/n, default n)
   -u : up-to-date check
   -v : verbose (n/y or 0/1/2, default 0) [no, yes, logorrheic]
   -w : write behavior for name conflicts (0,1,2, default 2: 0=skip duplicates, 1=overwrite, 2=add suffix)
   -x : crop 3D acquisitions (y/n/i, default n, use 'i'gnore to neither crop nor rotate 3D acquistions)
   -z : gz compress images (y/o/i/n/3, default n) [y=pigz, o=optimal pigz, i=internal:zlib, n=no, 3=no,3D]
   --big-endian : byte order (y/n/o, default o) [y=big-end, n=little-end, o=optimal/native]
   --progress : Slicer format progress information (y/n, default n)
   --ignore_trigger_times : disregard values in 0018,1060 and 0020,9153
   --terse : omit filename post-fixes (can cause overwrites)
   --version : report version
   --xml : Slicer format features
  Defaults file : /home/cbi/rhayashi/.dcm2nii.ini
  Examples :
   dcm2niix /Users/chris/dir
   dcm2niix -c "my comment" /Users/chris/dir
   dcm2niix -o /users/cr/outdir/ -z y ~/dicomdir
   dcm2niix -f %p_%s -b y -ba n ~/dicomdir
   dcm2niix -f mystudy%s ~/dicomdir
   dcm2niix -o "~/dir with spaces/dir" ~/dicomdir
 Example output filename: 'myFolder_MPRAGE_19770703150928_1.nii'

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function    [status, nifti_filename] = convert_dicom_nifti_cmd(fname,outdir,prog_path,opt)
0002 % Convert DICOM to NIFTI by using dcm2niix
0003 %  status = convert_dicom_nifti_cmd(fname,outdir,prog_path,opt)
0004 % --- Input
0005 % fname : one of DICOM file
0006 %         All the files in DICOM image should be saved in the same directory
0007 % --- Output
0008 %         status : execute status (=0:success)
0009 % nifti_filename : output nifti filename(without path)
0010 % --- Optional Input
0011 % outdir : Directory for output file
0012 %          if this is not specified, output file is saved in the same directory
0013 % opt    : option string (See the following option rule)
0014 %
0015 % prog_path : path for 'dcm2niix' program
0016 %
0017 % ---- Output file name convention
0018 %  Options :
0019 %   -1..-9 : gz compression level (1=fastest..9=smallest, default 6)
0020 %   -a : adjacent DICOMs (images from same series always in same folder) for faster conversion (n/y, default n)
0021 %   -b : BIDS sidecar (y/n/o [o=only: no NIfTI], default y)
0022 %    -ba : anonymize BIDS (y/n, default y)
0023 %   -c : comment stored in NIfTI aux_file (provide up to 24 characters e.g. '-c first_visit')
0024 %   -d : directory search depth. Convert DICOMs in sub-folders of in_folder? (0..9, default 5)
0025 %   -e : export as NRRD (y) or MGH (o) instead of NIfTI (y/n/o, default n)
0026 %   -f : filename (%a=antenna (coil) name, %b=basename, %c=comments, %d=description, %e=echo number, %f=folder name, %g=accession number, %i=ID of patient, %j=seriesInstanceUID, %k=studyInstanceUID, %m=manufacturer, %n=name of patient, %o=mediaObjectInstanceUID, %p=protocol, %r=instance number, %s=series number, %t=time, %u=acquisition number, %v=vendor, %x=study ID; %z=sequence name; default '%f_%p_%t_%s')
0027 %   -g : generate defaults file (y/n/o/i [o=only: reset and write defaults; i=ignore: reset defaults], default n)
0028 %   -h : show help
0029 %   -i : ignore derived, localizer and 2D images (y/n, default n)
0030 %   -l : losslessly scale 16-bit integers to use dynamic range (y/n/o [yes=scale, no=no, but uint16->int16, o=original], default o)
0031 %   -m : merge 2D slices from same series regardless of echo, exposure, etc. (n/y or 0/1/2, default 2) [no, yes, auto]
0032 %   -n : only convert this series CRC number - can be used up to 16 times (default convert all)
0033 %   -o : output directory (omit to save to input folder)
0034 %   -p : Philips precise float (not display) scaling (y/n, default y)
0035 %   -r : rename instead of convert DICOMs (y/n, default n)
0036 %   -s : single file mode, do not convert other images in folder (y/n, default n)
0037 %   -u : up-to-date check
0038 %   -v : verbose (n/y or 0/1/2, default 0) [no, yes, logorrheic]
0039 %   -w : write behavior for name conflicts (0,1,2, default 2: 0=skip duplicates, 1=overwrite, 2=add suffix)
0040 %   -x : crop 3D acquisitions (y/n/i, default n, use 'i'gnore to neither crop nor rotate 3D acquistions)
0041 %   -z : gz compress images (y/o/i/n/3, default n) [y=pigz, o=optimal pigz, i=internal:zlib, n=no, 3=no,3D]
0042 %   --big-endian : byte order (y/n/o, default o) [y=big-end, n=little-end, o=optimal/native]
0043 %   --progress : Slicer format progress information (y/n, default n)
0044 %   --ignore_trigger_times : disregard values in 0018,1060 and 0020,9153
0045 %   --terse : omit filename post-fixes (can cause overwrites)
0046 %   --version : report version
0047 %   --xml : Slicer format features
0048 %  Defaults file : /home/cbi/rhayashi/.dcm2nii.ini
0049 %  Examples :
0050 %   dcm2niix /Users/chris/dir
0051 %   dcm2niix -c "my comment" /Users/chris/dir
0052 %   dcm2niix -o /users/cr/outdir/ -z y ~/dicomdir
0053 %   dcm2niix -f %p_%s -b y -ba n ~/dicomdir
0054 %   dcm2niix -f mystudy%s ~/dicomdir
0055 %   dcm2niix -o "~/dir with spaces/dir" ~/dicomdir
0056 % Example output filename: 'myFolder_MPRAGE_19770703150928_1.nii'
0057 
0058 % option
0059 % -ba y : Anonymize BIDS
0060 % -f %i : Use patient ID in filename
0061 % -t n  : No save patient details.
0062 if ~exist('opt','var')
0063 %    opt = ' -ba y -w 1 -f tmp_subject -t n ';
0064     opt = ' -ba y -w 1 -f %i -t n ';
0065 else
0066     opt = [' ' opt ' '];
0067 end
0068 
0069 % output directory
0070 if ~exist('outdir','var') || isempty(outdir)
0071     outdir = '.';
0072 end
0073 outdir_tmp = tempname(outdir);
0074 mkdir(outdir_tmp);
0075 
0076 % program
0077 if ~exist('prog_path','var') || isempty(prog_path)
0078     [arch] = computer;
0079     if ispc
0080         prog_path = which('dcm2niix.exe');
0081     elseif strcmp(arch, 'GLNX86') || strcmp(arch, 'GLNXA64')
0082         prog_path = which('dcm2niix_linux64.');
0083     else
0084         prog_path = which('dcm2niix_mac.');
0085     end
0086 end
0087 if ~ispc
0088     [stat, mess] = fileattrib(prog_path);
0089     if mess.UserExecute ~= 1
0090         fprintf('trying to change permission of dcm2niix executable.\n');
0091         [stat2, mess] = fileattrib(prog_path, '+x');
0092         if stat2 ~= 1
0093             error([prog_path ' need to have executable permission.']);
0094         end
0095     end
0096 end
0097 
0098 prog_path = dblquote(prog_path);
0099 cmd  = [prog_path, opt, ' -o ' dblquote(outdir_tmp) ' ', dblquote(fname), ...
0100         ' > ' dblquote([outdir_tmp, '/dcm2niix.log'])];
0101 fprintf('command: %s\n', cmd);
0102 [status] = system(cmd);
0103 
0104 % get nifti filename
0105 d = dir(fullfile(outdir_tmp, '*.nii'));
0106 nifti_filename = d.name;
0107 nifti_file     = fullfile(outdir, nifti_filename);
0108 
0109 % move to output directory
0110 movefile(fullfile(outdir_tmp, '*.nii'), outdir, 'f');
0111 rmdir(outdir_tmp, 's');
0112 
0113 %status = dos(cmd, '-echo');
0114 
0115 function q_str = dblquote(str)
0116 
0117 q_str = ['"', str, '"'];
0118

Generated on Mon 22-May-2023 06:53:56 by m2html © 2005