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

Switch to side-by-side view

--- a
+++ b/src/padImage.cxx
@@ -0,0 +1,66 @@
+
+#include <nanobind/nanobind.h>
+#include <nanobind/stl/vector.h>
+#include <nanobind/stl/string.h>
+#include <nanobind/stl/tuple.h>
+#include <nanobind/ndarray.h>
+
+#include <exception>
+#include <vector>
+#include <string>
+
+#include "itkImage.h"
+#include "itkConstantPadImageFilter.h"
+
+#include "antsImage.h"
+
+namespace nb = nanobind;
+using namespace nb::literals;
+
+template < typename ImageType >
+AntsImage<ImageType> padImage( AntsImage<ImageType> & antsImage,
+                      std::vector<int> lowerPadDims,
+                      std::vector<int> upperPadDims,
+                      float padValue )
+{
+  typedef typename ImageType::Pointer ImagePointerType;
+  typename ImageType::Pointer itkImage = antsImage.ptr;
+
+
+  typename ImageType::SizeType lowerExtendRegion;
+  lowerExtendRegion[0] = lowerPadDims[0];
+  lowerExtendRegion[1] = lowerPadDims[1];
+  if (lowerPadDims.size() == 3)
+  {
+    lowerExtendRegion[2] = lowerPadDims[2];
+  }
+
+  typename ImageType::SizeType upperExtendRegion;
+  upperExtendRegion[0] = upperPadDims[0];
+  upperExtendRegion[1] = upperPadDims[1];
+  if (upperPadDims.size() == 3)
+  {
+    upperExtendRegion[2] = upperPadDims[2];
+  }
+
+  //ImageType::PixelType constantPixel = padValue;
+  typedef itk::ConstantPadImageFilter<ImageType, ImageType> PadImageFilterType;
+  typename PadImageFilterType::Pointer padFilter = PadImageFilterType::New();
+  padFilter->SetInput( itkImage );
+  padFilter->SetPadLowerBound( lowerExtendRegion );
+  padFilter->SetPadUpperBound( upperExtendRegion );
+  padFilter->SetConstant( padValue );
+  padFilter->Update();
+  FixNonZeroIndex<ImageType>( padFilter->GetOutput() );
+
+  AntsImage<ImageType> myImage = { padFilter->GetOutput() };
+  return myImage;
+}
+
+void local_padImage(nb::module_ &m) 
+{
+  m.def("padImage", &padImage<itk::Image<float, 2>>);
+  m.def("padImage", &padImage<itk::Image<float, 3>>);
+  m.def("padImage", &padImage<itk::Image<float, 4>>);
+}
+