21#ifndef LIBMV_IMAGE_CONVOLVE_H_
22#define LIBMV_IMAGE_CONVOLVE_H_
32inline double Gaussian(
double x,
double sigma) {
33 return 1 /
sqrt(2 *
M_PI * sigma * sigma) *
exp(-(x * x / 2 / sigma / sigma));
37inline double Gaussian2D(
double x,
double y,
double sigma) {
38 return 1.0 / (2.0 *
M_PI * sigma * sigma) *
39 exp(-(x * x + y * y) / (2.0 * sigma * sigma));
42 return -x / sigma / sigma *
Gaussian(x, sigma);
ccl_device_inline float3 exp(float3 v)
ccl_device_inline float3 log(float3 v)
void BoxFilterVertical(const Array3Df &in, int window_size, Array3Df *out_pointer)
void ImageDerivatives(const Array3Df &in, double sigma, Array3Df *gradient_x, Array3Df *gradient_y)
void ConvolveHorizontal(const Array3Df &in, const Vec &kernel, Array3Df *out_pointer, int plane)
void ConvolveVertical(const Array3Df &in, const Vec &kernel, Array3Df *out_pointer, int plane)
void LaplaceFilter(unsigned char *src, unsigned char *dst, int width, int height, int strength)
double GaussianDerivative(double x, double sigma)
void BoxFilterHorizontal(const Array3Df &in, int window_size, Array3Df *out_pointer)
void BlurredImageAndDerivativesChannels(const Array3Df &in, double sigma, Array3Df *blurred_and_gradxy)
double Gaussian(double x, double sigma)
double GaussianInversePositive(double y, double sigma)
void ConvolveGaussian(const Array3Df &in, double sigma, Array3Df *out_pointer)
void ComputeGaussianKernel(double sigma, Vec *kernel, Vec *derivative)
void BoxFilter(const Array3Df &in, int box_width, Array3Df *out)
double Gaussian2D(double x, double y, double sigma)
void BlurredImageAndDerivatives(const Array3Df &in, double sigma, Array3Df *blurred_image, Array3Df *gradient_x, Array3Df *gradient_y)