code: public void process(T gray, GrayU8 binary) {
  		results.reset();
  
  		ellipseDetector.process(binary);
  		if( ellipseRefiner != null)
  			ellipseRefiner.setImage(gray);
  		intensityCheck.setImage(gray);
  
  		List<BinaryEllipseDetectorPixel.Found> found = ellipseDetector.getFound();
  
  		for( BinaryEllipseDetectorPixel.Found f : found ) {
  
  			if( !intensityCheck.process(f.ellipse) ) {
  				if( verbose ) System.out.println("Rejecting ellipse. Initial fit didn't have intense enough edge");
  				continue;
  			}
  
  			EllipseInfo r = results.grow();
  			r.contour = f.contour;
  
  			if( ellipseRefiner != null ) {
  				if (!ellipseRefiner.process(f.ellipse, r.ellipse)) {
  					if( verbose ) System.out.println("Rejecting ellipse. Refined fit didn't have an intense enough edge");
  					results.removeTail();
  					continue;
  				} else if( !intensityCheck.process(f.ellipse) ) {
  					if( verbose ) System.out.println("Rejecting ellipse. Refined fit didn't have an intense enough edge");
  					continue;
  				}
  			} else {
  				r.ellipse.set(f.ellipse);
  			}
  
  			r.averageInside = intensityCheck.averageInside;
  			r.averageOutside = intensityCheck.averageOutside;
  		}
  	}
docs: Detects ellipses inside the binary image and refines the edges for all detections inside the gray image
  
  @param gray Grayscale image
  @param binary Binary image of grayscale. 1 = ellipse and 0 = ignored background