code: public static <T extends ImageGray<T>>
  	double block_zero( T integral , int x0 , int y0 , int x1 , int y1 )
  	{
  		if( integral instanceof GrayF32) {
  			return IntegralImageOps.block_zero((GrayF32)integral,x0,y0,x1,y1);
  		} else if( integral instanceof GrayF64) {
  			return IntegralImageOps.block_zero((GrayF64)integral,x0,y0,x1,y1);
  		} else if( integral instanceof GrayS32) {
  			return IntegralImageOps.block_zero((GrayS32)integral,x0,y0,x1,y1);
  		} else if( integral instanceof GrayS64) {
  			return IntegralImageOps.block_zero((GrayS64)integral,x0,y0,x1,y1);
  		} else {
  			throw new IllegalArgumentException("Unknown input type");
  		}
  	}
docs: <p>
  Computes the value of a block inside an integral image and treats pixels outside of the
  image as zero.  The block is defined as follows: x0 &lt; x &le; x1 and y0 &lt; y &le; y1.
  </p>
  
  @param integral Integral image.
  @param x0 Lower bound of the block.  Exclusive.
  @param y0 Lower bound of the block.  Exclusive.
  @param x1 Upper bound of the block.  Inclusive.
  @param y1 Upper bound of the block.  Inclusive.
  @return Value inside the block.