creaBruker (c) CREATIS 2009 a Bruker exam has the following 3 levels structure : ======================================================================== * subject * AdjStatePerStudy * 1 * acqp * AdjStatePerScan * fid * imnd / method * pulseprogram * spnam0 * spnam1 * pdata * 1 // only 'native' images * 2dseq * d3proc * meta * procs * reco <-- * roi * CreatisComputedCartoFile * 2 // post processed images (if any) * 2dseq * d3proc * isa <-- * meta * procs * roi ... * roi * 3 // post processed images (if any) * 2dseq * d3proc * isa <-- * meta * procs * roi * ... * 2 * acqp * fid * ... * pdata * 3 * ... ======================================================================== To tell the truth, a lot of changes are found at every new version. We only can hope the mandatory (for us) files keep the same name, with the same informations inside. Or we shall have to find out the version number, and swich - case all the methods (see NRRD format...) ======================================================================== AdjStatePerStudy subject 1 acqp method pdata 1 2dseq d3proc id meta reco roi visu_pars pulseprogram spnam0 uxnmr.par 2 acqp method pdata 1 2dseq d3proc id meta reco roi visu_pars pulseprogram spnam0 uxnmr.par 3 ... ======================================================================== Dicom convertion *demands* the following files : subject; acqp; method; d3proc; isa; reco; ======================================================================== This project contains : appli :testBruker2Dicom: ------------------------ - explores the given directory (holding a FULL Bruker exam), at the 3 levels, - fills an equivalent Directory with the MHD files and/or the DICOM files usage: testBruker2Dicom --dirin=rootDirectoryName --dirout=outputDirectoryName [-D] [-M] [{-b|-l}] b:BigEndian,l:LittleEndian default : l [--debug] [--verbose] [--listonly] [--usage] D : user wants to export as DICOM M : user wants to export as MHD debug : developper wants to run the program in 'debug mode' REMARK : If you were supplied an *incomplete* Bruker exam (e.g. only the '2' serie) put it a 'root' directory, and run this test using this 'root' directory as 'dirin' lib : ---- NO inheritance ! class Bruker2Dicom: starts from a 'root' directory, iterates on each 'serie', at the 3 levels fills an equivalent Directory with the DICOM files. class BrukerDataSet: corresponds to a 'parameter file', at any level. LoadFile(std::string fileName); GetFieldData(std::string fieldName); class BrukerFieldData : according to what users *knows* about the element, he will use: std::string &GetDataType(); int GetDimensionNumber() int GetNumberOfElements() std::vector &GetStringValue() std::vector &GetIntValue () std::vector &GetDoubleValue() class BrukerObjectVaryingProperties : class BrukerKspaceObject : class BrukerImage class BrukerSizeException: class BrukerInitException class BrukerHopelessException