public static double[,] Kernel2D(double sigmaSquared, int size)
{
// check for evem size and for out of range
if (((size % 2) == 0) || (size < 3))
throw new ArgumentOutOfRangeException("size", "Kernel size must be odd and higher than 2.");
int r = size / 2;
double[,] kernel = new double[size, size];
for (int y = -r, i = 0; i < size; y++, i++)
for (int x = -r, j = 0; j < size; x++, j++)
kernel[i, j] = Gaussian2D(sigmaSquared, x, y);
return kernel;
}
}