bool kNearestNeighFilter::apply(const imatrix& src,imatrix& dest) { if (src.empty()) { dest.clear(); return true; } const parameters& param = getParameters(); if (param.kernelSize <= 1) { dest.copy(src); return true; } sizeOfKernel = param.kernelSize + ((param.kernelSize%2 == 0) ? 1 : 0); histoSize = src.maximum()+1; bool control = false; // return variable // choose border behaviour switch(param.boundaryType) { case lti::Zero: control = histogramMethodZero(src,dest); break; case lti::Mirror: control = histogramMethodMirror(src,dest); break; case lti::Constant: control = histogramMethodConstant(src,dest); break; case lti::Periodic: control = histogramMethodPeriodic(src,dest); break; case lti::NoBoundary: control = histogramMethodNoBoundary(src,dest); break; default: setStatusString("Unknown boundary type"); break; } return control; };