code: public static ColorImg inverseTransform(ColorImg target, ComplexImg fourier, int channel) {
  		Dimension dim = fourier.getDimension();
  		// if no target was specified create a new one
  		if(target == null) {
  			target = new ColorImg(dim, channel==ColorImg.channel_a);
  		}
  		// continue sanity checks
  		sanityCheckInverse_target(target, dim, channel);
  		// now do the transforms
  		if(fourier.getCurrentXshift() != 0 || fourier.getCurrentYshift() != 0){
  			ComplexValuedSampler complexIn = getSamplerForShiftedComplexImg(fourier);
  			RowMajorArrayAccessor realOut = new RowMajorArrayAccessor(target.getData()[channel], target.getWidth(), target.getHeight());
  			FFT.ifft(complexIn, realOut, realOut.getDimensions());
  		} else {
  			FFT.ifft(	fourier.getDataReal(), 
  						fourier.getDataImag(), 
  						target.getData()[channel], 
  						target.getWidth(), target.getHeight());
  		}
  		double scaling = 1.0/target.numValues();
  		ArrayUtils.scaleArray(target.getData()[channel], scaling);
  		return target;
  	}
docs: Executes the inverse Fourier transforms on the specified {@link ComplexImg} that corresponds
  to a specific channel of a {@link ColorImg} defined by the channel argument.
  The resulting transform will be stored in the specified channel of the specified target.
  If target is null a new ColorImg will be created and returned.
  <p>
  If the alpha channel was specified the specified target has to contain an alpha channel
  ({@link ColorImg#hasAlpha()}).
  
  @param target image where the transform is stored to
  @param fourier the ComplexImg that will be transformed and corresponds to the specified channel
  @param channel the specified ComplexImg correspond to
  @return the target img or a new ColorImg if target was null
  
  @throws IllegalArgumentException <br>
  if images are not of the same dimensions <br>
  if alpha is specified as channel but specified target (if not null) is does not have an alpha channel