From c7e5e1147796995e803692417a243f874c7ab1ff Mon Sep 17 00:00:00 2001 From: Simon Rit Date: Thu, 25 Jul 2013 10:51:23 +0200 Subject: [PATCH] Tool to inverse a matrix --- tools/CMakeLists.txt | 5 ++++ tools/clitkMatrixInverse.cxx | 54 ++++++++++++++++++++++++++++++++++++ tools/clitkMatrixInverse.ggo | 8 ++++++ 3 files changed, 67 insertions(+) create mode 100644 tools/clitkMatrixInverse.cxx create mode 100644 tools/clitkMatrixInverse.ggo diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 899bd36..4cf12f7 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -118,6 +118,11 @@ IF (CLITK_BUILD_TOOLS) TARGET_LINK_LIBRARIES(clitkMatrixToElastixTransform clitkCommon ) SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkMatrixToElastixTransform) + WRAP_GGO(clitkMatrixInverse_GGO_C clitkMatrixInverse.ggo) + ADD_EXECUTABLE(clitkMatrixInverse clitkMatrixInverse.cxx ${clitkMatrixInverse_GGO_C}) + TARGET_LINK_LIBRARIES(clitkMatrixInverse clitkCommon ) + SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkMatrixInverse) + WRAP_GGO(clitkSetBackground_GGO_C clitkSetBackground.ggo) ADD_EXECUTABLE(clitkSetBackground clitkSetBackground.cxx clitkSetBackgroundGenericFilter.cxx ${clitkSetBackground_GGO_C}) TARGET_LINK_LIBRARIES(clitkSetBackground clitkCommon) diff --git a/tools/clitkMatrixInverse.cxx b/tools/clitkMatrixInverse.cxx new file mode 100644 index 0000000..7171467 --- /dev/null +++ b/tools/clitkMatrixInverse.cxx @@ -0,0 +1,54 @@ +/*========================================================================= + 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 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 +===========================================================================**/ + +// clitk +#include "clitkMatrixInverse_ggo.h" +#include "clitkTransformUtilities.h" +#include "clitkIO.h" +#include "clitkMatrix.h" + +//-------------------------------------------------------------------- +int main(int argc, char * argv[]) +{ + // Init command line + GGO(clitkMatrixInverse, args_info); + CLITK_INIT; + + // Read matrix + itk::Matrix matrix; + try { + matrix = clitk::ReadMatrix3D(args_info.input_arg); + } + catch (itk::ExceptionObject & err) { + std::cerr << "Error reading " << args_info.input_arg << std::endl; + std::cerr << err.GetDescription() << std::endl; + exit(-1); + } + + matrix = matrix.GetInverse(); + + // Print matrix + std::ofstream os; + clitk::openFileForWriting(os, args_info.output_arg); + os << clitk::Get4x4MatrixDoubleAsString(matrix, 16); + os.close(); + + return EXIT_SUCCESS; +}// end main + +//-------------------------------------------------------------------- diff --git a/tools/clitkMatrixInverse.ggo b/tools/clitkMatrixInverse.ggo new file mode 100644 index 0000000..391ae2f --- /dev/null +++ b/tools/clitkMatrixInverse.ggo @@ -0,0 +1,8 @@ +#File clitkMatrixToElastixTransform.ggo +package "clitkMatrixInverse" +version "1.0" +purpose "" + +option "config" - "Config file" string optional +option "input" i "Input matrix filename" string required +option "output" o "Output matrix filename" string required -- 2.47.1