From ca31f92bda71950c13f7166e59542daebead7917 Mon Sep 17 00:00:00 2001 From: tbaudier Date: Thu, 16 Nov 2017 17:02:20 +0100 Subject: [PATCH] clitkDicom2Image with imaging machine coordinate system (Identity matrix) by default Add an option to have it with patient coordinate system --- tools/clitkDicom2Image.cxx | 25 ++++++++++++++----------- tools/clitkDicom2Image.ggo | 13 +++++++------ 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/tools/clitkDicom2Image.cxx b/tools/clitkDicom2Image.cxx index ffd08e8..51a32d1 100644 --- a/tools/clitkDicom2Image.cxx +++ b/tools/clitkDicom2Image.cxx @@ -91,16 +91,19 @@ int main(int argc, char * argv[]) series_numbers.insert(series_number); theorigin[series_number] = gdcm::ImageHelper::GetOriginValue(hreader.GetFile()); theorientation[series_number] = gdcm::ImageHelper::GetDirectionCosinesValue(hreader.GetFile()); - double n1 = theorientation[series_number][1]*theorientation[series_number][5]- - theorientation[series_number][2]*theorientation[series_number][4]; - double n2 = theorientation[series_number][3]*theorientation[series_number][2]- - theorientation[series_number][5]*theorientation[series_number][0]; - double n3 = theorientation[series_number][0]*theorientation[series_number][4]- - theorientation[series_number][1]*theorientation[series_number][3]; - double sloc = theorigin[series_number][0]*n1+ - theorigin[series_number][1]*n2+ - theorigin[series_number][2]*n3; - sliceLocations[series_number].push_back(sloc); + if (args_info.extract_series_flag) { + double n1 = theorientation[series_number][1]*theorientation[series_number][5]- + theorientation[series_number][2]*theorientation[series_number][4]; + double n2 = theorientation[series_number][3]*theorientation[series_number][2]- + theorientation[series_number][5]*theorientation[series_number][0]; + double n3 = theorientation[series_number][0]*theorientation[series_number][4]- + theorientation[series_number][1]*theorientation[series_number][3]; + double sloc = theorigin[series_number][0]*n1+ + theorigin[series_number][1]*n2+ + theorigin[series_number][2]*n3; + sliceLocations[series_number].push_back(sloc); + } else + sliceLocations[series_number].push_back(theorigin[series_number][2]); seriesFiles[series_number].push_back(input_files[i]); gdcm::Attribute<0x28, 0x100> pixel_size; @@ -238,7 +241,7 @@ int main(int argc, char * argv[]) } vvImageWriter::Pointer writer = vvImageWriter::New(); writer->SetInput(image); - if (!image->GetTransform().empty()) + if (args_info.extract_series_flag && !image->GetTransform().empty()) writer->SetSaveTransform(true); writer->SetOutputFileName(outfile); writer->Update(); diff --git a/tools/clitkDicom2Image.ggo b/tools/clitkDicom2Image.ggo index daf0a5b..7cf454f 100644 --- a/tools/clitkDicom2Image.ggo +++ b/tools/clitkDicom2Image.ggo @@ -2,10 +2,11 @@ package "clitk" version "Try to convert a DICOM into an image (.hdr, .vox...)" -option "config" - "Config file" string no -option "verbose" v "Verbose" flag off -option "tolerance" t "Tolerance for slice position" double default="0" no -option "output" o "Output image filename" string yes -option "std_input" - "Take the like of input file from stdin, to support huge lists of filenames" flag off -option "focal_origin" - "Output files with FOCAL-like origin, instead of the origin present in the dicom files" flag off +option "config" - "Config file" string no +option "verbose" v "Verbose" flag off +option "tolerance" t "Tolerance for slice position" double default="0" no +option "output" o "Output image filename" string yes +option "std_input" - "Take the like of input file from stdin, to support huge lists of filenames" flag off +option "focal_origin" - "Output files with FOCAL-like origin, instead of the origin present in the dicom files" flag off option "extract_series" s "Identify different series in the file list and create the MHDs accordinly" flag off +option "patientSystem" p "Open the image with patient coordinate system" flag off -- 2.45.2