use of boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid in project BoofCV by lessthanoptimal.
the class TestKeyPointsCircleHexagonalGrid method diagonalRL.
private void diagonalRL(int numRows, int numCols) {
KeyPointsCircleHexagonalGrid alg = new KeyPointsCircleHexagonalGrid();
double r = 0.5;
double s = 2.0;
Grid grid = createGrid(numRows, numCols, s, r);
alg.init(grid);
alg.diagonalRL(grid);
for (int row = 0; row < grid.rows; row++) {
for (int col = 0; col < grid.columns; col++) {
if (row % 2 == 0 && col % 2 == 1)
continue;
if (row % 2 == 1 && col % 2 == 0)
continue;
int index = grid.getIndexOfHexEllipse(row, col);
int expectedNumber = 0;
if (col >= 1 && row < grid.rows - 1)
expectedNumber += 2;
if (col < grid.columns - 1 && row >= 1)
expectedNumber += 2;
assertEquals(expectedNumber, alg.tangents.get(index).size);
}
}
}
use of boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid in project BoofCV by lessthanoptimal.
the class TestKeyPointsCircleRegularGrid method all.
public void all(Affine2D_F64 affine) {
int numRows = 3, numCols = 4;
double space = 3, r = 1;
Grid g = createGrid(numRows, numCols, space, r);
transform(affine, g);
KeyPointsCircleRegularGrid alg = new KeyPointsCircleRegularGrid();
alg.process(g);
Point2D_F64 p = new Point2D_F64();
int index = 0;
for (int row = 0; row < numRows; row++) {
for (int col = 0; col < numCols; col++) {
double cx = col * space;
double cy = row * space;
Point2D_F64 a = alg.getKeyPoints().get(index++);
Point2D_F64 b = alg.getKeyPoints().get(index++);
Point2D_F64 c = alg.getKeyPoints().get(index++);
Point2D_F64 d = alg.getKeyPoints().get(index++);
AffinePointOps_F64.transform(affine, cx, cy + r, p);
assertTrue(a.distance(p.x, p.y) <= BoofDefaults.TEST_DOUBLE_TOL);
AffinePointOps_F64.transform(affine, cx + r, cy, p);
assertTrue(b.distance(p.x, p.y) <= BoofDefaults.TEST_DOUBLE_TOL);
AffinePointOps_F64.transform(affine, cx, cy - r, p);
assertTrue(c.distance(p.x, p.y) <= BoofDefaults.TEST_DOUBLE_TOL);
AffinePointOps_F64.transform(affine, cx - r, cy, p);
assertTrue(d.distance(p.x, p.y) <= BoofDefaults.TEST_DOUBLE_TOL);
}
}
}
use of boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid in project BoofCV by lessthanoptimal.
the class DetectCalibrationCircleHexagonalApp method renderGraph.
@Override
protected void renderGraph(Graphics2D g2, double scale) {
List<Grid> grids = detector.getDetector().getGrids();
g2.setStroke(new BasicStroke(2));
for (Grid g : grids) {
g2.setColor(Color.CYAN);
drawGraph(g2, g, 0, 0, scale);
g2.setColor(Color.ORANGE);
drawGraph(g2, g, 1, 1, scale);
}
}
Aggregations