code: protected static void gaussianKernel(double xx , double yy , GrayF64 xy , double sigma  , GrayF64 output ) {
  		double sigma2 = sigma*sigma;
  		double N = xy.width*xy.height;
  
  		for( int y = 0; y < xy.height; y++ ) {
  			int index = xy.startIndex + y*xy.stride;
  
  			for( int x = 0; x < xy.width; x++ , index++ ) {
  
  				// (xx + yy - 2 * xy) / numel(x)
  				double value = (xx + yy - 2*xy.data[index])/N;
  
  				double v = Math.exp(-Math.max(0, value) / sigma2);
  
  				output.data[index] = v;
  			}
  		}
  	}
docs: Computes the output of the Gaussian kernel for each element in the target region
  
  k = exp(-1 / sigma^2 * max(0, (xx + yy - 2 * xy) / numel(x)));
  
  @param xx ||x||^2
  @param yy ||y||^2