code: public static <T extends ImageGray<T>>
  	DenseOpticalFlow<T> region( @Nullable ConfigOpticalFlowBlockPyramid config , Class<T> imageType )
  	{
  		if( config == null )
  			config = new ConfigOpticalFlowBlockPyramid();
  
  		DenseOpticalFlowBlockPyramid<T> alg;
  		if( imageType == GrayU8.class )
  			alg = (DenseOpticalFlowBlockPyramid)new DenseOpticalFlowBlockPyramid.U8(
  					config.searchRadius,config.regionRadius,config.maxPerPixelError);
  		else if( imageType == GrayF32.class )
  			alg = (DenseOpticalFlowBlockPyramid)new DenseOpticalFlowBlockPyramid.F32(
  					config.searchRadius,config.regionRadius,config.maxPerPixelError);
  		else
  			throw new IllegalArgumentException("Unsupported image type "+imageType);
  
  		return new FlowBlock_to_DenseOpticalFlow<>(alg, config.pyramidScale, config.maxPyramidLayers, imageType);
  	}
docs: Creates a pyramidal block
  
  @see boofcv.alg.flow.DenseOpticalFlowBlockPyramid
  @see boofcv.alg.flow.UtilDenseOpticalFlow#standardPyramid(int, int, double, double, int, int, Class)
  
  @param config Configuration for block pyramid
  @param <T>
  @return