Using a Checkerboard Calibration Plate
Using images of a calibration plate taken from your application is the most common way to create a feature correspondence transform. It is empirical in that it measures the actual environment where your application runs.
An example of a calibration plate used with cfCalib2VertexFeatureExtract() is shown in the figure below. It is a checkerboard of black and white rectangles where each rectangle is the same size.
Example checkerboard calibration plate
A checkerboard calibration plate is a precision manufactured article where all rectangles are the same size to within tight tolerances. You can purchase a checkerboard calibration plate from Cognex or from other calibration plate vendors. If you purchase a third party calibration plate make sure it conforms to the Cognex specification included in Checkerboard Calibration Plates.
To create a feature correspondence transform using a checkerboard calibration plate you perform the following steps:
- Acquire calibration plate images (discussed in Calibration Plate Images below).
- Run the feature extractor function (cfCalib2VertexFeatureExtract()) on each image to extract the locations of each vertex, the points in the image where the corners of four squares meet. The feature extractor creates a vector of correspondences between feature locations in image space (Client2D) and feature locations in physical space (Plate2D).
- Use the correspondences from the feature extractions to create a calibration transform of type cc2XformCalib2.
When you run the feature extractor, you specify the checkerboard square size in physical units (pitch). This establishes the relationship between pixels and physical units. You also specify an origin for the checkerboard grid. The location of feature points will be reported relative to this origin. Specifying the calibration plate origin is discussed in Setting the Origin. You can also use a checkerboard calibration plate with Data Matrix codes that encode the pitch, in addition to specifying the origin for the checkerboard grid (origin of Plate2D).