X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkTransformLandmarks.cxx;h=df5dbe8e390521e8705019f14dea0defd66db44c;hb=543b72e23ad001ac2a7743b9beacf48e2d0054ac;hp=86745a419363ad9d97194b0e9ccdf921c39ee39e;hpb=6194949c0beb1589904e22381b9aba1bbface172;p=clitk.git diff --git a/tools/clitkTransformLandmarks.cxx b/tools/clitkTransformLandmarks.cxx index 86745a4..df5dbe8 100644 --- a/tools/clitkTransformLandmarks.cxx +++ b/tools/clitkTransformLandmarks.cxx @@ -23,6 +23,14 @@ #include #include +#include +#include +#include +#include "vtkPolyDataReader.h" +#include "vtkPolyDataWriter.h" +#include +#include + typedef itk::Matrix MatrixType; typedef itk::Point PointType; typedef std::vector PointArrayType; @@ -52,6 +60,32 @@ int main(int argc, char** argv) if (strcmp(args_info.type_arg, "txt") == 0) { read_points_txt(args_info.input_arg, inputPoints, data); } + else if (strcmp(args_info.type_arg, "vtk") == 0) { + vtkSmartPointer reader = vtkSmartPointer::New(); + reader->SetFileName(args_info.input_arg); + reader->Update(); + vtkSmartPointer writer = vtkSmartPointer::New(); + writer->SetFileName( args_info.output_arg ); + + if (args_info.matrix_given) { + vtkSmartPointer transformFilter = vtkSmartPointer::New(); + vtkSmartPointer transform = vtkSmartPointer::New(); + vtkMatrix4x4* matrix = clitk::ReadVTKMatrix3D(args_info.matrix_arg); + vtkSmartPointer matrixT = vtkSmartPointer::New(); + vtkMatrix4x4::Invert(matrix, matrixT); //not sure why, but this seems necessary for using the same .mat as when loading file with vv (probably due to the inversion trick performed in the vv reader...) + transform->SetMatrix(matrixT); + transformFilter->SetInputConnection(reader->GetOutputPort()); + transformFilter->SetTransform(transform); + writer->SetInputConnection(transformFilter->GetOutputPort()); + + } + else { //just write the output + writer->SetInputConnection( reader->GetOutputPort() ); + } + + writer->Write(); + return 0; + } else { read_points_pts(args_info.input_arg, inputPoints); }