code: public void process(T gray , GrayU8 binary ) {
  		detector.process(gray,binary);
  		if( refineGray != null )
  			refineGray.setImage(gray);
  		edgeIntensity.setImage(gray);
  
  		long time0 = System.nanoTime();
  		FastQueue<DetectPolygonFromContour.Info> detections = detector.getFound();
  
  		if( adjustForBias != null ) {
  			int minSides = getMinimumSides();
  			for (int i = detections.size()-1; i >= 0; i-- ) {
  				Polygon2D_F64 p = detections.get(i).polygon;
  				adjustForBias.process(p, detector.isOutputClockwise());
  
  				// When the polygon is adjusted for bias a point might need to be removed because it's
  				// almost parallel. This could cause the shape to have too few corners and needs to be removed.
  				if( p.size() < minSides)
  					detections.remove(i);
  			}
  		}
  		long time1 = System.nanoTime();
  
  		double milli = (time1-time0)*1e-6;
  
  		milliAdjustBias.update(milli);
  //		System.out.printf(" contour %7.2f shapes %7.2f adjust_bias %7.2f\n",
  //				detector.getMilliShapes(),detector.getMilliShapes(),milliAdjustBias);
  	}
docs: Detects polygons inside the grayscale image and its thresholded version
  @param gray Gray scale image
  @param binary Binary version of grayscale image