X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkImageCreate.cxx;h=d84bbb51400c0d4a7fbfd45091baead16f4d4ce8;hb=f48c960aef6e0a5a4edea516b062197db009e25f;hp=21e6072d2ae361d19ec48fb2884b4a766bfdb2a5;hpb=931a42358442f4ee4f314613c991c838d4b4e3b7;p=clitk.git diff --git a/tools/clitkImageCreate.cxx b/tools/clitkImageCreate.cxx index 21e6072..d84bbb5 100644 --- a/tools/clitkImageCreate.cxx +++ b/tools/clitkImageCreate.cxx @@ -1,18 +1,22 @@ -/*------------------------------------------------------------------------= - - Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de - l'Image). All rights reserved. See Doc/License.txt or - http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details. - +/*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv + + Authors belong to: + - University of LYON http://www.universite-lyon.fr/ + - Léon Bérard cancer center http://www.centreleonberard.fr + - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr + This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - - ------------------------------------------------------------------------=*/ + PURPOSE. See the copyright notices for more information. + It is distributed under dual licence + + - BSD See included LICENSE.txt file + - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +===========================================================================**/ #ifndef CLITKIMAGECREATE_CXX #define CLITKIMAGECREATE_CXX - /** ------------------------------------------------= * @file clitkImageCreate.cxx @@ -27,23 +31,35 @@ #include "clitkIO.h" template -void NewFilledImage(int * size, float * spacing, double * origin, - double value,typename ImageType::Pointer output) +void NewFilledImage(int * size, float * spacing, double * origin, double * direction, + double value,typename ImageType::Pointer output) { static const unsigned int Dim = ImageType::GetImageDimension(); + typename ImageType::SizeType mSize; mSize.Fill (0); for(unsigned int i=0; iSetRegions(mRegion); output->SetSpacing(mSpacing); + output->SetDirection(directionImage); output->Allocate(); + typename ImageType::PointType mOrigin; for(unsigned int i=0; iSetOrigin(mOrigin); + typedef typename ImageType::PixelType PixelType; PixelType p = clitk::PixelTypeDownCast(value); output->FillBuffer(p); @@ -51,7 +67,8 @@ void NewFilledImage(int * size, float * spacing, double * origin, //-------------------------------------------------------------------- -int main(int argc, char * argv[]) { +int main(int argc, char * argv[]) +{ // Init command line GGO(clitkImageCreate, args_info); @@ -61,21 +78,25 @@ int main(int argc, char * argv[]) { int dim; if (args_info.like_given) { itk::ImageIOBase::Pointer header = clitk::readImageHeader(args_info.like_arg); - dim = header->GetNumberOfDimensions(); - //mPixelTypeName = header->GetComponentTypeAsString(header->GetComponentType()); - //mNbOfComponents = header->GetNumberOfComponents(); - args_info.size_given = dim; - args_info.size_arg = new int[dim]; - args_info.spacing_given = dim; - args_info.spacing_arg = new float[dim]; - args_info.origin_given = dim; - args_info.origin_arg = new double[dim]; - - for(int i=0; iGetDimensions(i); - args_info.spacing_arg[i] = header->GetSpacing(i); - args_info.origin_arg[i]= header->GetOrigin(i); - } + dim = header->GetNumberOfDimensions(); + //mPixelTypeName = header->GetComponentTypeAsString(header->GetComponentType()); + //mNbOfComponents = header->GetNumberOfComponents(); + args_info.size_given = dim; + args_info.size_arg = new int[dim]; + args_info.spacing_given = dim; + args_info.spacing_arg = new float[dim]; + args_info.origin_given = dim; + args_info.origin_arg = new double[dim]; + args_info.transformMatrix_given = dim*dim; + args_info.transformMatrix_arg = new double[dim*dim]; + + for(int i=0; iGetDimensions(i); + args_info.spacing_arg[i] = header->GetSpacing(i); + args_info.origin_arg[i]= header->GetOrigin(i); + for (int j=0; jGetDirection(i)[j]; + } } // Check dimension @@ -84,64 +105,84 @@ int main(int argc, char * argv[]) { exit(-1); } dim = args_info.size_given; - - // origin + + // origin std::vector origin; origin.resize(dim); for(int i=0; i spacing; spacing.resize(dim); if (args_info.spacing_given == 1) { for(int i=0; i direction; + direction.resize(dim*dim); + for(int i=0; i ImageType; + typedef itk::Image ImageType; ImageType::Pointer output = ImageType::New(); - NewFilledImage(args_info.size_arg, &spacing[0], &origin[0], args_info.value_arg, output); + NewFilledImage(args_info.size_arg, &spacing[0], &origin[0], &direction[0], args_info.value_arg, output); clitk::writeImage(output, args_info.output_arg); } if (dim == 3) { const int Dim=3; - typedef itk::Image ImageType; + typedef itk::Image ImageType; ImageType::Pointer output = ImageType::New(); - NewFilledImage(args_info.size_arg, &spacing[0], &origin[0], args_info.value_arg, output); + NewFilledImage(args_info.size_arg, &spacing[0], &origin[0], &direction[0], args_info.value_arg, output); clitk::writeImage(output, args_info.output_arg); } if (dim == 4) { const int Dim=4; - typedef itk::Image ImageType; + typedef itk::Image ImageType; ImageType::Pointer output = ImageType::New(); - NewFilledImage(args_info.size_arg, &spacing[0], &origin[0], args_info.value_arg, output); + NewFilledImage(args_info.size_arg, &spacing[0], &origin[0], &direction[0], args_info.value_arg, output); clitk::writeImage(output, args_info.output_arg); } - - // this is the end my friend + + // this is the end my friend return 0; } // end main