Diff of /src/reorientImage2.cxx [000000] .. [5d12a0]

Switch to side-by-side view

--- a
+++ b/src/reorientImage2.cxx
@@ -0,0 +1,178 @@
+
+
+#include <nanobind/nanobind.h>
+#include <nanobind/stl/vector.h>
+#include <nanobind/stl/string.h>
+#include <nanobind/stl/tuple.h>
+#include <nanobind/ndarray.h>
+
+#include "itkImage.h"
+#include "itkOrientImageFilter.h"
+
+#include "antsImage.h"
+
+namespace nb = nanobind;
+using namespace nb::literals;
+
+template <typename ImageType>
+AntsImage<ImageType> reorientImage2( AntsImage<ImageType> & antsImage , std::string newOrientation )
+{
+  typename ImageType::Pointer itkImage = antsImage.ptr;
+
+  typename itk::OrientImageFilter<ImageType,ImageType>::Pointer orienter = itk::OrientImageFilter<ImageType,ImageType>::New();
+  orienter->UseImageDirectionOn();
+
+  if (newOrientation == "RIP") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RIP);
+  }
+  else if (newOrientation == "LIP") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_LIP);
+  }
+  else if (newOrientation == "RSP") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RSP);
+  }
+  else if (newOrientation == "LSP") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_LSP);
+  }
+  else if (newOrientation == "RIA") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RIA);
+  }
+  else if (newOrientation == "LIA") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_LIA);
+  }
+  else if (newOrientation == "RSA") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RSA);
+  }
+  else if (newOrientation == "LSA") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_LSA);
+  }
+  else if (newOrientation == "IRP") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_IRP);
+  }
+  else if (newOrientation == "ILP") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_ILP);
+  }
+  else if (newOrientation == "SRP") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_SRP);
+  }
+  else if (newOrientation == "SLP") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_SLP);
+  }
+  else if (newOrientation == "IRA") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_IRA);
+  }
+  else if (newOrientation == "ILA") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_ILA);
+  }
+  else if (newOrientation == "SRA") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_SRA);
+  }
+  else if (newOrientation == "SLA") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_SLA);
+  }
+  else if (newOrientation == "RPI") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RPI);
+  }
+  else if (newOrientation == "LPI") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_LPI);
+  }
+  else if (newOrientation == "RAI") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RAI);
+  }
+  else if (newOrientation == "LAI") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_LAI);
+  }
+  else if (newOrientation == "RPS") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RPS);
+  }
+  else if (newOrientation == "LPS") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_LPS);
+  }
+  else if (newOrientation == "RAS") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_RAS);
+  }
+  else if (newOrientation == "LAS") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_LAS);
+  }
+  else if (newOrientation == "PRI") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_PRI);
+  }
+  else if (newOrientation == "PLI") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_PLI);
+  }
+  else if (newOrientation == "ARI") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_ARI);
+  }
+  else if (newOrientation == "ALI") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_ALI);
+  }
+  else if (newOrientation == "PRS") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_PRS);
+  }
+  else if (newOrientation == "PLS") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_PLS);
+  }
+  else if (newOrientation == "ARS") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_ARS);
+  }
+  else if (newOrientation == "ALS") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_ALS);
+  }
+  else if (newOrientation == "IPR") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_IPR);
+  }
+  else if (newOrientation == "SPR") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_SPR);
+  }
+  else if (newOrientation == "IAR") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_IAR);
+  }
+  else if (newOrientation == "SAR") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_SAR);
+  }
+  else if (newOrientation == "IPL") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_IPL);
+  }
+  else if (newOrientation == "SPL") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_SPL);
+  }
+  else if (newOrientation == "IAL") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_IAL);
+  }
+  else if (newOrientation == "SAL") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_SAL);
+  }
+  else if (newOrientation == "PIR") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_PIR);
+  }
+  else if (newOrientation == "PSR") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_PSR);
+  }
+  else if (newOrientation == "AIR") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_AIR);
+  }
+  else if (newOrientation == "ASR") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_ASR);
+  }
+  else if (newOrientation == "PIL") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_PIL);
+  }
+  else if (newOrientation == "PSL") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_PSL);
+  }
+  else if (newOrientation == "AIL") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_AIL);
+  }
+  else if (newOrientation == "ASL") {
+    orienter->SetDesiredCoordinateOrientation(itk::SpatialOrientation::ITK_COORDINATE_ORIENTATION_ASL);
+  }
+  orienter->SetInput( itkImage );
+  orienter->Update();
+  AntsImage<ImageType> myImage = { orienter->GetOutput() };
+  return myImage;
+}
+
+void local_reorientImage2(nb::module_ &m) 
+{
+  m.def("reorientImage2", &reorientImage2<itk::Image<float,3>>);
+}
\ No newline at end of file