1 #ifndef TIL_RECURSIVE_FILTERS_H 2 #define TIL_RECURSIVE_FILTERS_H 42 template <
typename T >
47 float vMin =
min(vdim);
49 if (axis==
X_AXIS)
return T(sigma * vMin/vdim[0]);
50 if (axis==
Y_AXIS)
return T(sigma * vMin/vdim[1]);
51 if (axis==
Z_AXIS)
return T(sigma * vMin/vdim[2]);
53 throw std::invalid_argument(
"Invalid axis");
59 template <
class TImage >
62 typedef typename TImage::value_type T;
65 T sigmaOriginal = sigma;
70 if (im.dim()[axis] > 1)
84 template <
typename TImage >
88 typedef typename TImage::value_type T;
91 T sigmaOriginal = sigma;
98 RecGaussian rf4 = RF4GaussianDerivative<T>(sigma, im.vdim()[i]);
112 template <
typename TImage >
115 typedef typename TImage::value_type T;
118 T sigmaOriginal = sigma;
142 if (i == axis1 || i == axis2)
162 template <
class TImage1,
class TImage2>
167 typename TImage2::value_type sigma)
180 template <
class TImage1,
class TImage2 >
188 typename TImage2::value_type sigma)
boost::enable_if< is_Image< TImage >, typename TImage::value_type >::type min(const TImage &im)
Sum of two recursive filters, a forward and a backward one.
void recursiveGaussianGradient(const TImage1 &im, TImage2 &dx, TImage2 &dy, TImage2 &dz, typename TImage2::value_type sigma)
void recursiveGaussianSmoothing(TImage &im, typename TImage::value_type sigma)
Belongs to package Box Do not include directly, include til/Box.h instead.
RecursiveFilterSum< RecursiveFilter< T,+1, 4 >, RecursiveFilter< T, -1, 4 > > RF4Gaussian(T sigma)
General macros, definitions and functions.
void recursiveGaussianSecondDerivative(TImage &im, typename TImage::value_type sigma, ImageAxis axis1, ImageAxis axis2)
void copy(const TImage &in, TImage &out)
Copy one image to another.
void filterAlongAxis(const TImage &im, TImage &out, ImageAxis axis, const TLineFilter &filter)
T modifySigmaAccordingToVoxelSize(T sigma, const numeric_array< float, 3 > &vdim, ImageAxis axis)
RecursiveFilterSum< RecursiveFilter< T,+1, 4 >, RecursiveFilter< T, -1, 4 > > RF4GaussianDerivative(T sigma, T stepSize=1)
void recursiveGaussianHessian(const TImage1 &im, TImage2 &dxx, TImage2 &dxy, TImage2 &dxz, TImage2 &dyy, TImage2 &dyz, TImage2 &dzz, typename TImage2::value_type sigma)
void convert_im(TImageIn const &in, TImageOut &out)
Convert an image into the type of the other image.
void recursiveGaussianDerivative(TImage &im, typename TImage::value_type sigma, ImageAxis axis)
RecursiveFilterSum< RecursiveFilter< T,+1, 4 >, RecursiveFilter< T, -1, 4 > > RF4GaussianSecondDerivative(T sigma)