docs: public static void applyBoxFilter( GrayF32 input ) {
  
  		// declare storage
  		GrayF32 boxImage = new GrayF32(input.width, input.height);
  		InterleavedF32 boxTransform = new InterleavedF32(input.width,input.height,2);
  		InterleavedF32 transform = new InterleavedF32(input.width,input.height,2);
  		GrayF32 blurredImage = new GrayF32(input.width, input.height);
  		GrayF32 spatialBlur = new GrayF32(input.width, input.height);
  
  		DiscreteFourierTransform<GrayF32,InterleavedF32> dft =
  				DiscreteFourierTransformOps.createTransformF32();
  
  
  		// Make the image scaled from 0 to 1 to reduce overflow issues
  		PixelMath.divide(input,255.0f,input);
  
  		// compute the Fourier Transform
  		dft.forward(input,transform);
  
  		// create the box filter which is centered around the pixel.  Note that the filter gets wrapped around
  		// the image edges
  		for( int y = 0; y < 15; y++ ) {
  			int yy = y-7 < 0 ? boxImage.height+(y-7) : y - 7;
  			for( int x = 0; x < 15; x++ ) {
  				int xx = x-7 < 0 ? boxImage.width+(x-7) : x - 7;
  				// Set the value such that it doesn't change the image intensity
  				boxImage.set(xx,yy,1.0f/(15*15));
  			}
  		}
  
  		// compute the DFT for the box filter
  		dft.forward(boxImage,boxTransform);
  
  		// Visualize the Fourier Transform for the input image and the box filter
  		displayTransform(transform,"Input Image");
  		displayTransform(boxTransform,"Box Filter");
  
  		// apply the filter. convolution in spacial domain is the same as multiplication in the frequency domain
  		DiscreteFourierTransformOps.multiplyComplex(transform,boxTransform,transform);
  
  		// convert the image back and display the results
  		dft.inverse(transform,blurredImage);
  		// undo change of scale
  		PixelMath.multiply(blurredImage,255.0f,blurredImage);
  		PixelMath.multiply(input,255.0f,input);
  
  		// For sake of comparison, let's compute the box blur filter in the spatial domain
  		// NOTE: The image border will be different since the frequency domain wraps around and this implementation
  		// of the spacial domain adapts the kernel size
  		BlurImageOps.mean(input,spatialBlur,7,null,null);
  
  		// Convert to BufferedImage for output
  		BufferedImage originOut = ConvertBufferedImage.convertTo(input, null);
  		BufferedImage spacialOut = ConvertBufferedImage.convertTo(spatialBlur, null);
  		BufferedImage blurredOut = ConvertBufferedImage.convertTo(blurredImage, null);
  
  		ListDisplayPanel listPanel = new ListDisplayPanel();
  		listPanel.addImage(originOut,"Original Image");
  		listPanel.addImage(spacialOut,"Spacial Domain Box");
  		listPanel.addImage(blurredOut,"Frequency Domain Box");
  
  		ShowImages.showWindow(listPanel,"Box Blur in Spacial and Frequency Domain of Input Image");
  	}