Version: 16.3.1.167ea6ecff

Static calibration pattern

The metric calibrate tool allow using a calibration pattern that does not move, and only stays under the laser, to get the parameters that relates camera pixels with metric units. Several considerations are required during the manufacturing and acquisition of the calibration pattern to get accurate results.

This calibration establishes the coordinate system based on the the laser plane, so, the coordinates of the points of the laser line will be considered to have x=zero.

staticPattern.png
Static calibration pattern (PatternSP) and its coordinate axis

Using the static calibration for linear scanning applications

In case of linear scanning applications, instead of using the linear calibration, also the static calibration can be used. When at calibration time there cannot be an accurate straight movement of the linear pattern under the laser, the static calibration can give better results than the linear calibration.

In that case, the user should introduce the encoder step (metric distance between acquisitions), so then, it is possible to directly transform a RangeMap to COP.

sal3d::Metric::calibrate (const Profile &profile, const PatternSPPoints &points, float xStep)

Advantages of static calibration

Limitations of static calibration

Warning
For linear scanning applications with the basic calibration, the motion is assumed to be perpendicular to the pattern. If this is not the case, one can use the variant with PatternSPPoints3D ( sal3d::Metric::calibrate(const Profile &profile, const PatternSPPoints3D &points, float xStep = 0) ).

Description of the Calibration Points using the PatternSP

Points corresponding to the vertices of the calibration pattern are used to describe its shape and to identify points on the RangeMap with their corresponding 3D metric points on the real object. The 3D metric coordinates of these points can be set by the user. In addition to the calibration points shown in the following figure, the base area of the pattern (the calibration pattern's lower flat area) is also used during the calibration procedure. Hence, the base of the pattern should also be captured in the Profile acquisition.

pointsPatternSP.png
Description of the calibration points

The relation of the calibration points between the range map and 3D object is not arbitrary. The order depends on the laser stripe type and the camera orientation.

The term laser stripe type refers to orientation of the laser stripe on the camera frame when this is projected over the calibration pattern. The camera orientation refers how the camera observes the pattern, in correct orientation or with the inverted orientation.

Relationship between laser profile and pattern calibration points.
Laser Stripe OrientationCamera Orientation3D points
Vertical Laser Stripe
horizontalPeakUp.png
staticPatternPoints1.png
Vertical Laser Stripe
horizontalPeakDown.png
staticPatternPoints2.png
Horizontal Laser Stripe
verticalPeakUp.png
staticPatternPoints1.png
Horizontal Laser Stripe
verticalPeakDown.png
staticPatternPoints2.png
Warning
There are some cameras that allows to flip the images (either vertical or horizontal. This table is only for no flip images. In case of any flip, the points must be reordered.

Build Your own Calibration Pattern

In order to calibrate your acquisition system, you should use a calibration target according to your field-of-view requirements. However, you should follow the following advices:

The following figure presents an example of a good pattern acquisition. Analysing the acquired profile, the user can observe that amount of pixels in each segment are similar. The pattern is centered on the image and it covers all the required segments. The acquisition noise does not look heavy and the out-of-pattern part of the image is not big. When profile contains many points not belonging to the calibration pattern at the left or right edges, user can should use a region of interest on the calibrate function call for optimal detection of the pattern lines.

exampleGoodProfile.png
Pattern example: Profile of the calibration pattern

The following figures present some examples of bad scans. The left figure shows a case that can give inaccurate results, or in some case will not calibrate, due to acquisition noise. center figure has problems due to not enough points in the base plane. The right figure may not calibrate due to points not belonging to the calibration pattern are also acquired, in addition it is preferred that the pattern's profile covers all the image. This last case can be solved by calling calibrate with a ROI (left/right): sal3d::Metric::calibrate (const Profile &profile, const PatternSPPoints &points, int left, int right, float xStep=0)

examplesBadDesigns.png
Bad design examples: They can produce inaccurate results or return an error during the calibration.

Material Considerations

In addition to the dimensions, the material is also important for the calibration. As laser is projected over the pattern, specular surfaces can give a very noisy laser detection. In case of metal surfaces, a white anodized or sand blasting can be performed to minimize reflections.

Depending on the application, expansion must also be considered. In case of a high accuracy desired, the pattern may have to be accurately measured to get its 3D coordinates instead of trusting the design measures. And with important temperature variations between the measurement time and the scan time, low thermal expansion coefficient materials may be preferred to decrease errors due to pattern expansion.