code: static public <D extends ImageGray<D>>
  	void nonMaxSuppressionCrude4(GrayF32 intensity , D derivX , D derivY , GrayF32 output )
  	{
  		if( derivX instanceof GrayF32) {
  			GradientToEdgeFeatures.nonMaxSuppressionCrude4(intensity, (GrayF32) derivX, (GrayF32) derivY,output);
  		} else if( derivX instanceof GrayS16) {
  			GradientToEdgeFeatures.nonMaxSuppressionCrude4(intensity, (GrayS16) derivX, (GrayS16) derivY,output);
  		} else if( derivX instanceof GrayS32) {
  			GradientToEdgeFeatures.nonMaxSuppressionCrude4(intensity, (GrayS32) derivX, (GrayS32) derivY,output);
  		} else {
  			throw new IllegalArgumentException("Unknown input type");
  		}
  	}
docs: <p>
  Sets edge intensities to zero if the pixel has an intensity which is less than any of
  the two adjacent pixels.  Pixel adjacency is determined based upon the sign of the image gradient.  Less precise
  than other methods, but faster.
  </p>
  
  @param intensity Edge intensities. Not modified.
  @param derivX Image derivative along x-axis.
  @param derivY Image derivative along y-axis.
  @param output Filtered intensity. Modified.