#include "analysis/filters.h" #include "math.h" #include "ProfilerApp.h" void Mean3D( const Array &Input, Array &Output ) { PROFILE_START("Mean3D"); // Perform a 3D Mean filter on Input array int i,j,k,ii,jj,kk; int imin,jmin,kmin,imax,jmax,kmax; float *List; List=new float[27]; int Nx = int(Input.size(0)); int Ny = int(Input.size(1)); int Nz = int(Input.size(2)); for (k=1; k &Input, Array &Output ) { PROFILE_START("Med3D"); // Perform a 3D Median filter on Input array with specified width int i,j,k,ii,jj,kk; int imin,jmin,kmin,imax,jmax,kmax; float *List; List=new float[27]; int Nx = int(Input.size(0)); int Ny = int(Input.size(1)); int Nz = int(Input.size(2)); for (k=1; k &Input, Array &Mean, const Array &Distance, Array &Output, const int d, const float h) { PROFILE_START("NLM3D"); // Implemenation of 3D non-local means filter // d determines the width of the search volume // h is a free parameter for non-local means (i.e. 1/sigma^2) // Distance is the signed distance function // If Distance(i,j,k) > THRESHOLD_DIST then don't compute NLM float THRESHOLD_DIST = float(d); float weight, sum; int i,j,k,ii,jj,kk; int imin,jmin,kmin,imax,jmax,kmax; int returnCount=0; int Nx = int(Input.size(0)); int Ny = int(Input.size(1)); int Nz = int(Input.size(2)); // Compute the local means for (k=1; k