23 #include <pybind11/pybind11.h> 
   30 using namespace py::literals;
 
   37 template <
typename OutImageT, 
typename InImageT, 
typename KernelT>
 
   39     mod.def(
"convolve", (
void (*)(OutImageT &, InImageT 
const &, KernelT 
const &,
 
   40                                   ConvolutionControl 
const &))convolve<OutImageT, InImageT, KernelT>,
 
   41             "convolvedImage"_a, 
"inImage"_a, 
"kernel"_a, 
"convolutionControl"_a = ConvolutionControl());
 
   42     mod.def(
"convolve", (
void (*)(OutImageT &, InImageT 
const &, KernelT 
const &, 
bool,
 
   43                                   bool))convolve<OutImageT, InImageT, KernelT>,
 
   44             "convolvedImage"_a, 
"inImage"_a, 
"kernel"_a, 
"doNormalize"_a, 
"doCopyEdge"_a = 
false);
 
   47 template <
typename ImageType1, 
typename ImageType2>
 
   50             (
void (*)(ImageType1 &, 
double, ImageType2 
const &, 
double, ImageType2 
const &))
scaledPlus);
 
   53 template <
typename ImageType1, 
typename ImageType2>
 
   55     declareConvolve<ImageType1, ImageType2, AnalyticKernel>(mod);
 
   56     declareConvolve<ImageType1, ImageType2, DeltaFunctionKernel>(mod);
 
   57     declareConvolve<ImageType1, ImageType2, FixedKernel>(mod);
 
   58     declareConvolve<ImageType1, ImageType2, LinearCombinationKernel>(mod);
 
   59     declareConvolve<ImageType1, ImageType2, SeparableKernel>(mod);
 
   60     declareConvolve<ImageType1, ImageType2, Kernel>(mod);
 
   61     declareScaledPlus<ImageType1, ImageType2>(mod);
 
   64 template <
typename PixelType1, 
typename PixelType2>
 
   70     declareByType<M1, M2>(mod);
 
   75     py::class_<ConvolutionControl, std::shared_ptr<ConvolutionControl>> clsConvolutionControl(
 
   76             mod, 
"ConvolutionControl");
 
   78     clsConvolutionControl.def(py::init<bool, bool, int>(), 
"doNormalize"_a = 
true, 
"doCopyEdge"_a = 
false,
 
   79                               "maxInterpolationDistance"_a = 10);
 
   81     clsConvolutionControl.def(
"getDoNormalize", &ConvolutionControl::getDoNormalize);
 
   82     clsConvolutionControl.def(
"getDoCopyEdge", &ConvolutionControl::getDoCopyEdge);
 
   83     clsConvolutionControl.def(
"getMaxInterpolationDistance",
 
   84                               &ConvolutionControl::getMaxInterpolationDistance);
 
   85     clsConvolutionControl.def(
"setDoNormalize", &ConvolutionControl::setDoNormalize);
 
   86     clsConvolutionControl.def(
"setDoCopyEdge", &ConvolutionControl::setDoCopyEdge);
 
   87     clsConvolutionControl.def(
"setMaxInterpolationDistance",
 
   88                               &ConvolutionControl::setMaxInterpolationDistance);
 
   90     declareAll<double, double>(mod);
 
   91     declareAll<double, float>(mod);
 
   92     declareAll<double, int>(mod);
 
   93     declareAll<double, std::uint16_t>(mod);
 
   94     declareAll<float, float>(mod);
 
   95     declareAll<float, int>(mod);
 
   96     declareAll<float, std::uint16_t>(mod);
 
   97     declareAll<int, int>(mod);
 
   98     declareAll<std::uint16_t, std::uint16_t>(mod);