protected static Kernel2D_F64 gaussian2D_F64(double sigma, int radius, boolean normalize) {
    Kernel1D_F64 kernel1D = gaussian1D_F64(sigma, radius, false);
    Kernel2D_F64 ret = KernelMath.convolve(kernel1D, kernel1D);

    if (normalize) {
      KernelMath.normalizeSumToOne(ret);
    }

    return ret;
  }
  protected static Kernel1D_F64 gaussian1D_F64(double sigma, int radius, boolean normalize) {
    Kernel1D_F64 ret = new Kernel1D_F64(radius * 2 + 1);
    double[] gaussian = ret.data;
    int index = 0;

    for (int i = radius; i >= -radius; i--) {
      gaussian[index++] = UtilGaussian.computePDF(0, sigma, i);
    }

    if (normalize) {
      KernelMath.normalizeSumToOne(ret);
    }

    return ret;
  }