Conversion utility for medical images
miconv:  Converts medical image data between formats.
         File formats are automatically identified by their file extension.
         It expects at least two filenames/directories (for the input and output file) at the end of the command line.
         An exception is the option '-l' which requires only one filename/directory to list its content.
Usage: miconv [options] <input-file> [<output-file>]
General options:
	-l: Lists space-separated set of protocol parameters and exits. Use '-l help' to get a list of possible parameters and '-l all' to list all parameters. The parameter 'output-file' must be omitted when using this option.
	-p: Load this protcol for defaults
	-q: Quiet mode: do not print progress meter
Protocol options:
	-aa: azimuthal rotation angle (default=0.0)
	-ah: height rotation angle (default=0.0)
	-ai: inplane rotation angle (default=0.0)
	-date: Date of scan [yyyymmdd] (default=20161108yyyymmdd)
	-fp: FOV in phase direction [mm] (default=220.0mm)
	-fr: FOV in read direction [mm] (default=220.0mm)
	-fs: FOV in slice direction [mm] (default=5.0mm)
	-nr: Number of consecutive measurements (default=1)
	-nx: Number of points in read direction (default=128)
	-ny: Number of points in phase direction (default=128)
	-nz: Number of points in slice direction (default=1)
	-pbirth: Patients date of birth [yyyymmdd] (default=00000000yyyymmdd)
	-pid: Unique patient identifier (default=Unknown)
	-pname: Full patient name (default=Unknown)
	-psex: Patients sex (options=M F O , default=O)
	-psize: Patients size/height [mm] (default=2000.0mm)
	-pweight: Patients weight [kg] (default=50.0kg)
	-rcname: Name of receive coil (default=Unknown)
	-scient: Scientist Name (default=Unknown)
	-sd: Inter-slice distance (from center to center) [mm] (default=10.0mm)
	-serd: Series Description (default=Unknown)
	-serno: Series Number (default=1)
	-st: Slice thickness [mm] (default=5.0mm)
	-stud: Study Description (default=Unknown)
	-tcname: Name of transmit coil (default=Unknown)
	-te: Time-to-echo of the sequence [ms] (default=80.0ms)
	-time: Time of scan [hhmmss] (default=120603hhmmss)
	-tr: Time between consecutive excitations [ms] (default=1000.0ms)
File read options:
	-cplx: Treat data as complex and extract the given component (options=none abs pha real imag , default=none)
	-ds: Dataset index to extract if multiple datasets are read
	-filter: Read only those datasets which protocol parameter 'key' contains the string 'value' (given in the format 'key=value')
	-fmap: For reduced memory usage, keep filemapping after reading (raw) data, but writing into the array will result in a crash
	-ldr: If multiple LDR (labeled data record) arrays are present, select this
	-rdialect: Read data using given dialect of the format. (default is no dialect)
	-rf: Read format, use it to override file extension (options=autodetect 3db analyze asc coi dat dcm double float gz hdr idx ima interfile jdx mag mhd nii ph png pos pro reg s16bit s32bit s8bit smp u16bit u32bit u8bit vtk xml xpro , default=autodetect)
	-skip: Skip this amount of bytes before reading the raw data (default=0)
File write options:
	-append: Append to existing file, only for raw data
	-fnamepar: Space-separated list of protocol parameters to include when creating unique file names
	-noscale: Do not rescale values when storing integers
	-split: Force splitting of protocol-data pairs into separate files.
	-type: Image representation type (options=automatic float double s32bit u32bit s16bit u16bit s8bit u8bit , default=automatic)
	-wdialect: Write data using given dialect of the format. (default is no dialect)
	-wf: Write format, use it to override file extension (options=autodetect 3db analyze asc coi dat dcm double float gz hdr idx ima interfile jdx mag mhd nii ph png pos pro reg s16bit s32bit s8bit smp u16bit u32bit u8bit vtk xml xpro , default=autodetect)
	-wp: Store the protocol separately to this file.
Filters:
	-align <filename,In-plane blowup factor> : Align data to the geometry (voxel locations) of an external file
	-automask : Create mask using automatic histogram-based threshold
	-cluster : Create clusters of non-zero adjacent/next-neighbours voxels, sorted by size
	-convolve <convolution kernel (Gauss NoFilter Triangle Hann Hamming CosSq Blackman BlackmanNuttall Exp ),kernel diameter [mm]> : Convolution in spatial dimensions
	-detrend <Number of low frequency components to be removed,Zero mean of resulting timecourse> : Remove slow drift over time
	-edit <Position/range string in the format (timeframe,slicepos,phasepos,readpos),new value of voxel> : Edit single voxel values
	-genmask <lower threshold,upper threshold> : Create mask including all voxels with value in given range
	-inv : Invert image values, i.e. lowest to highest and vice versa
	-isotrop <voxelsize [mm]> : make image voxels isotrop through interpolation (image geometry will not change)
	-lowpass <Cut-off frequency [Hz]> : Lowpass filtering
	-max <Maximum value> : Clip all values above maximum value
	-maxip <direction (time slice phase read none )> : Perform maximum intensity projection over given direction
	-merge : Merge datasets into a single dataset by expanding the time dimension
	-min <Minumum value> : Clip all values below mininum value
	-minip <direction (time slice phase read none )> : Perform minimum intensity projection over given direction
	-noNaN <Replacement value> : Replaces every NaN by the given value
	-pflip : Flip data in phase direction
	-prange <Single value or range, optionally with increment (e.g. 1-10:3)> : Select range in phase direction
	-proj <direction (time slice phase read none )> : Perform mean projection over given direction
	-quantilmask <quantil> : Create mask including all voxels above the given fractional threshold
	-resample <new size> : Temporal resize of image data
	-resize <slice-size,phase-size,read-size> : Spatial resize of image data
	-reslice <requested orientation (sagittal coronal axial )> : reslices the image to a given orientation
	-rflip : Flip data in read direction
	-rot <angle [deg],kernel size [pixel]> : In-plane rotation
	-rrange <Single value or range, optionally with increment (e.g. 1-10:3)> : Select range in read direction
	-scale <Slope,Offset> : Rescale image values
	-sflip : Flip data in slice direction
	-shift <readDirection shift [pixel],phaseDirection shift [pixel],sliceDirection shift [pixel]> : Shift data spatially
	-slicetime <space-separated list of slice indices in order of acquisition> : Correct for different acquisition time points of slices
	-spheremask <Position string in the format (slicepos,phasepos,readpos),radius [mm]> : Create spherical mask
	-splice <dimension of the data to be spliced (time slice phase read none )> : splices the image in the given direction
	-srange <Single value or range, optionally with increment (e.g. 1-10:3)> : Select range in slice direction
	-sum <direction (time slice phase read none )> : Perform sum projection over given direction
	-swapdim <[rps][-],[rps][-],[rps][-]> : swap/reflect dimensions by specifying a direction triple with optional reflection sign appended
	-tile <columns> : Combine slices into a square 2D image
	-trange <Single value or range, optionally with increment (e.g. 1-10:3)> : Select range in time direction
	-tshift <time shift [frames]> : Shift data in time
	-typemax <Datatype> : Clip all values above maximum of a specific datatype
	-typemin <Datatype> : Clip all values below mininum of a specific datatype
	-usemask <filename> : Create 1D dataset including all values within mask from file
Other options:
	-v <loglevel> or <component:loglevel> for debugging/tracing all components or a single component, respectively. Possible values for loglevel are: 0(noLog), 1(errorLog), 2(warningLog), 3(infoLog).
	-h, --help, -help, --version : Print help text or version information
Supported file extensions(formats):
	3db 	 (Iris3D binary data)
	analyze 	 (NIFTI/ANALYZE, dialects: fsl)
	asc 	 (ASCII, dialects: tcourse)
	coi 	 (JCAMP-DX data sets)
	dat 	 (Matlab ascii 2D data matrix)
	dcm 	 (DICOM, dialects: siemens)
	double 	 (double raw data)
	float 	 (float raw data)
	gz 	 (GNU-Zip container for other formats)
	hdr 	 (Interfile, dialects: neurostat)
	hdr 	 (NIFTI/ANALYZE, dialects: fsl)
	idx 	 (3D-indices of non-zeroes in ASCII, dialects: addval)
	ima 	 (DICOM, dialects: siemens)
	interfile 	 (Interfile, dialects: neurostat)
	jdx 	 (ODIN Image based on JCAMP-DX (Joint Committee on Atomic and Molecular Physical Data))
	mag 	 (DICOM, dialects: siemens)
	mhd 	 (MetaImage)
	nii 	 (NIFTI/ANALYZE, dialects: fsl)
	ph 	 (DICOM, dialects: siemens)
	png 	 (Portable Network Graphics)
	pos 	 (x-y positions of non-zeroes in ASCII)
	pro 	 (ODIN protocols based on JCAMP-DX (Joint Committee on Atomic and Molecular Physical Data))
	reg 	 (Ansoft HFSS ASCII)
	s16bit 	 (signed 16 bit raw data)
	s32bit 	 (signed 32 bit raw data)
	s8bit 	 (signed 8 bit raw data)
	smp 	 (JCAMP-DX data sets)
	u16bit 	 (unsigned 16 bit raw data)
	u32bit 	 (unsigned 32 bit raw data)
	u8bit 	 (unsigned 8 bit raw data)
	vtk 	 (Visualization Toolkit, vtkStructuredPoints)
	xml 	 (ODIN Image based on XML (Extensible Markup Language))
	xpro 	 (ODIN protocols based on XML (Extensible Markup Language))

Some examples how to use miconv:

Read a bunch of DICOM files (format 'dcm'), produced by Siemens, from directory 'mosaic' and convert it to NIFTI file 'mosaic.nii' with a dialect suitable for FSL:

   miconv -rf dcm -rdialect siemens -wdialect fsl mosaic mosaic.nii

Converting a short (16 bit) raw data file '2dseq' of size 256x256 to a DICOM file 'image.dcm':

   miconv -nx 256 -ny 256 -rf short 2dseq image.dcm