code: public static <T extends ImageGray<T>>
  	Planar<T> gaussian(Planar<T> input, @Nullable Planar<T> output, double sigma , int radius, @Nullable T storage ) {
  
  		if( storage == null )
  			storage = GeneralizedImageOps.createSingleBand(input.getBandType(), input.width, input.height);
  		if( output == null )
  			output = input.createNew(input.width,input.height);
  
  		for( int band = 0; band < input.getNumBands(); band++ ) {
  			GBlurImageOps.gaussian(input.getBand(band),output.getBand(band),sigma,radius,storage);
  		}
  		return output;
  	}
docs: Applies Gaussian blur to a {@link Planar}
  
  @param input Input image.  Not modified.
  @param output (Optional) Storage for output image, Can be null.  Modified.
  @param sigma Gaussian distribution's sigma.  If &le; 0 then will be selected based on radius.
  @param radius Radius of the Gaussian blur function. If &le; 0 then radius will be determined by sigma.
  @param storage (Optional) Storage for intermediate results.  Same size as input image.  Can be null.
  @param <T> Input image type.
  @return Output blurred image.