protected static float[] createGaussianKernel(int radius){
  if (radius < 1) {
    throw new IllegalArgumentException("Radius must be >= 1");
  }
  float[] data=new float[radius * 2 + 1];
  float sigma=radius / 3.0f;
  float twoSigmaSquare=2.0f * sigma * sigma;
  float sigmaRoot=(float)Math.sqrt(twoSigmaSquare * Math.PI);
  float total=0.0f;
  for (int i=-radius; i <= radius; i++) {
    float distance=i * i;
    int index=i + radius;
    data[index]=(float)Math.exp(-distance / twoSigmaSquare) / sigmaRoot;
    total+=data[index];
  }
  for (int i=0; i < data.length; i++) {
    data[i]/=total;
  }
  return data;
}

protected static float [ ] createGaussianKernel ( int radius ) { if ( radius < 1 ) { throw new IllegalArgumentException ( "Radius must be >= 1" ) ; } float [ ] data = new float [ radius * 2 + 1 ] ; float sigma = radius / 3.0f ; float twoSigmaSquare = 2.0f * sigma * sigma ; float sigmaRoot = ( float ) Math . sqrt ( twoSigmaSquare * Math . PI ) ; float total = 0.0f ; for ( int i = - radius ; i <= radius ; i ++ ) { float distance = i * i ; int index = i + radius ; data [ index ] = ( float ) Math . exp ( - distance / twoSigmaSquare ) / sigmaRoot ; total += data [ index ] ; } for ( int i = 0 ; i < data . length ; i ++ ) { data [ i ] /= total ; } return data ; }
create a gaussian kernel for the transformation .
