docs: protected boolean estimatePose( int which ,List<Point2D3D> points , Se3_F64 fiducialToCamera ) {
  		if( !estimatePnP.process(points, initialEstimate) ) {
  			return false;
  		}
  		filtered.clear();
  		// Don't bother if there are hardly any points to work with
  		if( points.size() > 6 ) {
  			w2p.configure(lensDistortion, initialEstimate);
  
  			// compute the error for each point in image pixels
  			errors.reset();
  			for (int idx = 0; idx < detectedPixels.size(); idx++) {
  				PointIndex2D_F64 foo = detectedPixels.get(idx);
  				w2p.transform(points.get(idx).location, predicted);
  				errors.add(predicted.distance2(foo));
  			}
  
  			// compute the prune threshold based on the standard deviation. well variance really
  			double stdev = 0;
  			for (int i = 0; i < errors.size; i++) {
  				stdev += errors.get(i);
  			}
  
  			// prune points 3 standard deviations away
  			// Don't prune if 3 standard deviations is less than 1.5 pixels since that's about what
  			// you would expect and you might make the solution worse
  			double sigma3 = Math.max(1.5,4 * stdev);
  
  			for (int i = 0; i < points.size(); i++) {
  				if (errors.get(i) < sigma3) {
  					filtered.add(points.get(i));
  				}
  			}
  			// recompute pose esitmate without the outliers
  			if (filtered.size() != points.size()) {
  				if (!estimatePnP.process(filtered, initialEstimate)) {
  					return false;
  				}
  			}
  		} else {
  			filtered.addAll(points);
  		}
  		return refinePnP.fitModel(points, initialEstimate, fiducialToCamera);
  	}