2 #include "IConvolution.h"
8 float _kernel[2 * radius + 1][2 * radius + 1];
11 static void GetVerticalDerivKernel(
float(& arr)[2 * radius + 1][2 * radius + 1])
17 for (
float q = 0.0; q < 10.0; q += dq)
21 G_0 += q * q * exp(-sigma * q * q);
24 for (
int i = -radius; i <= radius; i++)
26 for (
int j = -radius; j <= radius; j++)
28 float r = sqrt((
float)(i * i + j * j));
31 for (
float q = 0.0; q < 10.0; q += dq)
33 kern += q * q * exp(-sigma * q * q) * j0(r * q);
36 arr[i + radius][j + radius] = kern / G_0;
44 GetVerticalDerivKernel(_kernel);
48 void Convolve(
float* in,
float* out,
int rows,
int cols)
const
50 _convolution->
Convolve(in, out, rows, cols);
void Convolve(float *in, float *out, int rows, int cols) const
Definition: VerticalDerivativeConvolution.h:48
Definition: IConvolution.h:5
Definition: Convolution.h:22
virtual void Convolve(float *in, float *out, int rows, int cols) const =0
Definition: VerticalDerivativeConvolution.h:6