Class DetectChessboardCornersX


public class DetectChessboardCornersX extends Object
Chessboard corner detector that's designed to be robust and fast. Specifically tested under many different lighting conditions, with/without fisheye distortion, motion blur, out of focus, up close, far away, ... etc. This class only operates at a single scale. See DetectChessboardCornersXPyramid for multi scale that's needed to work in noisy images. Overview:
  1. X-Corner detector
  2. Mean blur x-corner intensity 2x2 kernel
  3. Non-maximum suppression to find candidate corners
  4. Test corner properties
  5. Use mean-shift to refine location estimate
  6. Test more corner properties
  7. Save remaining corners
At different steps various adaptive filters are applied. See code for details.
See Also:
  • Field Details

    • nonmaxThresholdRatio

      public float nonmaxThresholdRatio
      The largest x-corner intensity is found in the image then multiplied by this factor to select the cutoff point for non-max suppression
    • edgeIntensityRatioThreshold

      public double edgeIntensityRatioThreshold
      Used to prune features with the smallest edge intensity in the image
    • edgeAspectRatioThreshold

      public double edgeAspectRatioThreshold
      The smallest allowed edge ratio allowed
    • refinedXCornerThreshold

      public double refinedXCornerThreshold
      The smallest allowed corner intensity
    • symmetricTol

      public int symmetricTol
      Tolerance number of "spokes" in the wheel which break symmetry. Symmetry is defined as both sides being above or below the mean value. Larger the value more tolerant it is.
    • blurRadius

      public int blurRadius
      Amount of blurred applied to input image. A radius of 1 was selected so that a 3x3 region would be sampled when computing x-corner feature intensity.
    • maxIntensityImage

      public float maxIntensityImage
      Maximum pixel value in the corner intensity image
    • considerMaxIntensityImage

      public float considerMaxIntensityImage
      The maximum of this value of the image's intensity will be used when dynamically computing the non-max threshold. Useful when computing features across a pyramid. The layer with maximum intensity is likely to be a better threshold for corners.
    • useMeanShift

      public boolean useMeanShift
  • Constructor Details

    • DetectChessboardCornersX

      public DetectChessboardCornersX()
      Declares internal data structures
  • Method Details

    • process

      public void process(GrayF32 input)
      Computes chessboard corners inside the image
      input - Gray image. Not modified.
    • getCorners

      public List<ChessboardCorner> getCorners()
    • getNonmaxRadius

      public int getNonmaxRadius()
    • setNonmaxRadius

      public void setNonmaxRadius(int nonmaxRadius)