Start » Filter Reference » Computer Vision » Camera Calibration » AnnotateGridPoints_Ransac

AnnotateGridPoints_Ransac


Module: Calibration

Select a subset of the given points that forms a grid and assign 2D indices to them.

Name Type Range Description
Input value
inPoints Point2DArray
Input value
inMaxAttempts Integer* 1 - Maximum number of attempts at finding the grid
Input value
inMaxOutlierCount Integer* 0 - Determines how many outlier points can be present to end the search
Input value
inMinLength Real 0.0 - Minimum length of a grid segment
Input value
inMaxLength Real* 0.0 - Maximum length of a grid segment, if set to Auto it will be approximated
Input value
inMaxLengthRatio Real 1.0 - 2.0 Maximum ratio of two consecutive segments in the grid
Input value
inAngleRange Real 0.0 - 45.0 Maximum variation of angles between neighbouring grid segments in degrees
Input value
inBaseAspectRatioRange Real 0.0 - 1.0 Maximum variation of the base aspect ratio (ignores if base aspect ratio is not given)
Input value
inBaseAspectRatio Real* 0.3 - 1.0 A reference aspect ratio of the grid
Input value
inBaseShear Real* 0.0 - 60.0 A reference shear angle between grid directions
Input value
inBaseOrientation Real* 0.0 - 360.0 A reference orientation of one of the grids directions
Output value
outPointGrid AnnotatedPoint2DArray Detected grid
Diagnostic input
diagValidSubgraph Segment2DArray Graph forming a valid grid
Diagnostic input
diagMaxLength Real Max length computed by the filter (applicable if inMaxLength is set to Auto)

Description

This filter analyzes a 2D point array and finds a grid within it. The grid can have missing points as well as noise (points that are not vertices of the gird). The filter provides various input that allow the user to specify the shape of the grid that they want to be found.

It is expected that the point array given does not have a lot of missing and/or noise points.

The filter uses a RANSAC based algorithm to find grid within the input array and returns the grid that includes the most points from the input array among all grids that were found. If more than one grid include the maximum number of points, the returned one is the one with the smallest angle deviations.

The algorithm starts by finding a grid base, which consists of three points: one that will be considered as the origin of the grid, one that is one unit away from the origin on the grids X axis and one that is one unit away on the grids Y axis. The constraints for these grid bases can be specified by the user with the use of Base parameters:

  • inBaseAspectRatio defines the length ratio between the two segments that the grid base consists of (one along the X axis and the other along the Y axis). The ratio is calculated by divining the length of the shorter segment by the length of the longer one. If this parameter is set to Auto, the algorithm will check bases with rations in the range 0.3 - 1.0
  • inBaseAspectRatioRange defines how much the given base aspect ratio can differ from the calculated one.
  • inBaseShear defines the shear of the grid in degrees. The calculated shear can differ from the one given in this parameter by inAngleRange degrees. If this parameter is not given, bases with shears up to 60 degrees will be considered but grids with shears closer to zero will be preferred.
  • inBaseOrientation defines the orientation of the grids X axis. If this parameters is not given then the positive X direction of the grid will be defined as the direction that gives the biggest positive change in real X coordinated.

The grid is build from the base with respect to constraint parameters:

  • inMinLength and inMaxLength define the range of possible segment length in the grid (a segment is a single step in either the X or Y direction).
  • inMaxLengthRatio the maximum length ratio between to neighbouring segments of the grid that are along the same axis (for example: two neighbouring segments along the X axis). The minimum length ratio is calculated as 1 / inMaxLengthRatio.
  • inAngleRange defines how much the angles of neighbouring grid segments can differ.

Hints

  • The computation time of the filter can be decreased by lowering inMaxAttempts.
  • The computation time of the filter can be greatly optimized with the inMinLength and inMaxLength parameters. As they allow the algorithm to filter out a lot of grids early on.
  • inBaseOrientation can be used to increase the stability of detected grids. This is especially useful for grids the are rotated by 45 degrees, as the X and Y directions of the grid are harder to determine just by looking at positive X changes in the grid.

Examples

Example input array with noise points (left) and the computed annotated grid (right).

A more difficult example.

Complexity Level

This filter is available on Expert Complexity Level.

Filter Group

This filter is member of AnnotateGridPoints filter group.

See Also