Search in sources :

Example 31 with Grid

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);
        }
    }
}
Also used : Grid(boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid)

Example 32 with Grid

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);
        }
    }
}
Also used : Point2D_F64(georegression.struct.point.Point2D_F64) Grid(boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid)

Example 33 with Grid

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);
    }
}
Also used : ConfigCircleHexagonalGrid(boofcv.abst.fiducial.calib.ConfigCircleHexagonalGrid) CalibrationDetectorCircleHexagonalGrid(boofcv.abst.fiducial.calib.CalibrationDetectorCircleHexagonalGrid) SquareGrid(boofcv.alg.fiducial.calib.squares.SquareGrid) Grid(boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid)

Aggregations

Grid (boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid)33 EllipseRotated_F64 (georegression.struct.curve.EllipseRotated_F64)18 ArrayList (java.util.ArrayList)12 Test (org.junit.Test)7 Point2D_F64 (georegression.struct.point.Point2D_F64)6 TestDetectCircleHexagonalGrid.createGrid (boofcv.alg.fiducial.calib.circle.TestDetectCircleHexagonalGrid.createGrid)4 List (java.util.List)4 SquareGrid (boofcv.alg.fiducial.calib.squares.SquareGrid)3 CalibrationDetectorCircleHexagonalGrid (boofcv.abst.fiducial.calib.CalibrationDetectorCircleHexagonalGrid)2 ConfigCircleHexagonalGrid (boofcv.abst.fiducial.calib.ConfigCircleHexagonalGrid)2 Tangents (boofcv.alg.fiducial.calib.circle.KeyPointsCircleRegularGrid.Tangents)2 CalibrationObservation (boofcv.alg.geo.calibration.CalibrationObservation)2 GrayU8 (boofcv.struct.image.GrayU8)2 CalibrationDetectorCircleRegularGrid (boofcv.abst.fiducial.calib.CalibrationDetectorCircleRegularGrid)1 ConfigCircleRegularGrid (boofcv.abst.fiducial.calib.ConfigCircleRegularGrid)1 DetectCircleHexagonalGrid (boofcv.alg.fiducial.calib.circle.DetectCircleHexagonalGrid)1 DetectCircleRegularGrid (boofcv.alg.fiducial.calib.circle.DetectCircleRegularGrid)1 NodeInfo (boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.NodeInfo)1 Node (boofcv.alg.fiducial.calib.circle.EllipsesIntoClusters.Node)1 KeyPointsCircleHexagonalGrid (boofcv.alg.fiducial.calib.circle.KeyPointsCircleHexagonalGrid)1