gaussian_gradient_magnitude.cpp 954 Bytes
Newer Older
//[[Rcpp::depends(vigRa)]]
#include <Rcpp.h>
#include <vigra/multi_array.hxx>
#include <vigra/multi_convolution.hxx>
#include <vigra/numerictraits.hxx>
//#include <vigra/multi_blockwise.hxx>
using namespace Rcpp;
using namespace vigra;


//' Gaussian gradient magnitude
//'
//' Magnitude of Gaussian gradient.
//' @param x Numeric matrix
//' @param sigma Scale of the Gaussian kernel
//' @return Numeric matrix; smoothed version of x
//' @export
// [[Rcpp::export]]
NumericMatrix gaussian_gradient_magnitude(NumericMatrix x, double sigma) {
  const int nrows = x.nrow();
  const int ncols = x.ncol();
  Shape2 shape(nrows, ncols);
  MultiArrayView<2, double> input_image(shape, x.begin());
  NumericMatrix result(nrows, ncols);
  MultiArrayView<2, double> output_image(shape, result.begin());
  // gaussianGradientMagnitude(input_image, output_image, sigma);
  //std::copy(output_image.begin(), output_image.end(), result.begin());
  return(result);
}