Class ECoCheckGenerator
java.lang.Object
boofcv.alg.fiducial.calib.ecocheck.ECoCheckGenerator
Renders an Error COrrecting Checkerboard (ECoCheck) marker to an image. The marker is composed of a checkerboard
pattern combined with binary encoding in white spaces between the black checkerboard pattern. Using the encoded
binary pattern, its possible to uniquely determine the marker, and which calibration points are being observed
even when parts of the marker go outside the image bounds or are obstructed.
TODO Add image of an example.
A standard checkerboard pattern is drawn first. The outer squares will be half width as to maximize the usable
space. Only inner corners (x-corners) are used as calibration points and a full outer square does not aide
significantly in detection. If they were too small then the ability to detect x-corners would degrade. The
square grid is defined using the black and white squares with the origin being the top-left square, which
is always black, +x is to the right and +y is down. A quite-zone of white is required around the marker
to reduce confusion with the background. Omitting the quite-zone will degrade performance in challenging
environments.
Inner white squares are encoded with a binary pattern that specifies which square its inside of and which marker
its a member of. Some bits are allocated towards a checksum and others can perform error correction. A complete
description of the encoding can be found inside of
ECoCheckCodec
and how the image processing is done in
ECoCheckDetector
.
TODO define the order in which bits are drawn and where the origin is. Also define the corner-grid coordinate system.
Definitions:
- data region
- Square region containing the encoded message inside a white inner square
- data region coordinates
- 2D coordinate system with the origin in the data region's top-left corner. Values vary from 0 to 1. Where 0 is at the origin and 1 is either the x or y axis border.
- inner square
- Square (white or black) inside chessboard which does not touch the border
- bit-cell
- Region in which a single bit of data is encoded. size is data-region's length / grid size
- grid size
- The length of a grid. size=5 then there are 25 cells in the grid.
- quite-zone
- White space surrounding an image feature which reduces confusion with the background or other features.
-
Field Summary
Modifier and TypeFieldDescriptionfinal List<Point2D_F64>
protected FiducialRenderEngine
double
How wide a checkerboard square is -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
render
(int marker) void
saveCornerLocations
(GridShape shape)
-
Field Details
-
squareWidth
public double squareWidthHow wide a checkerboard square is -
render
-
corners
-
-
Constructor Details
-
ECoCheckGenerator
-
-
Method Details
-
render
public void render(int marker) -
saveCornerLocations
-