use of boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid in project BoofCV by lessthanoptimal.
the class TestDetectCircleHexagonalGrid method performDetectionCheck.
private void performDetectionCheck(int expectedRows, int expectedCols, int actualRows, int actualCols, Affine2D_F64 affine) {
int radius = 20;
int centerDistances = 50;
DetectCircleHexagonalGrid<GrayU8> alg = createAlg(expectedRows, expectedCols, radius, centerDistances);
// alg.setVerbose(true);
List<Point2D_F64> locations = new ArrayList<>();
GrayU8 image = new GrayU8(400, 450);
render(actualRows, actualCols, radius, centerDistances, affine, locations, image);
alg.process(image);
List<Grid> found = alg.getGrids();
if (expectedRows != actualRows || expectedCols != actualCols) {
assertEquals(0, found.size());
return;
} else {
assertEquals(1, found.size());
}
Grid g = found.get(0);
assertEquals(actualRows, g.rows);
assertEquals(actualCols, g.columns);
TestDetectCircleHexagonalGrid.checkCounterClockWise(g);
int index = 0;
for (int row = 0; row < g.rows; row++) {
for (int col = 0; col < g.columns; col++) {
boolean check = false;
if (row % 2 == 1 && col % 2 == 1)
check = true;
else if (row % 2 == 0 && col % 2 == 0)
check = true;
if (check) {
EllipseRotated_F64 f = g.get(row, col);
Point2D_F64 e = locations.get(index++);
assertEquals(e.x, f.center.x, 1.5);
assertEquals(e.y, f.center.y, 1.5);
assertEquals(20, f.a, 1.0);
assertEquals(20, f.b, 1.0);
}
}
}
}
use of boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid in project BoofCV by lessthanoptimal.
the class TestDetectCircleHexagonalGrid method putGridIntoCanonical_rotate.
public void putGridIntoCanonical_rotate(int numRows, int numCols) {
DetectCircleHexagonalGrid<?> alg = new DetectCircleHexagonalGrid(numRows, numCols, null, null, null);
Grid g = createGrid(numRows, numCols);
List<EllipseRotated_F64> original = new ArrayList<>();
original.addAll(g.ellipses);
alg.putGridIntoCanonical(g);
assertEquals(numRows, g.rows);
assertEquals(numCols, g.columns);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
alg.rotateGridCCW(g);
alg.putGridIntoCanonical(g);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
alg.rotateGridCCW(g);
alg.rotateGridCCW(g);
alg.putGridIntoCanonical(g);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
alg.rotateGridCCW(g);
alg.rotateGridCCW(g);
alg.rotateGridCCW(g);
alg.putGridIntoCanonical(g);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
alg.flipVertical(g);
alg.putGridIntoCanonical(g);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
}
use of boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid in project BoofCV by lessthanoptimal.
the class TestDetectCircleHexagonalGrid method putGridIntoCanonical_horizontal.
private void putGridIntoCanonical_horizontal(int numRows, int numCols) {
DetectCircleHexagonalGrid<?> alg = new DetectCircleHexagonalGrid(numRows, numCols, null, null, null);
Grid g = createGrid(numRows, numCols);
List<EllipseRotated_F64> original = new ArrayList<>();
original.addAll(g.ellipses);
alg.putGridIntoCanonical(g);
assertEquals(numRows, g.rows);
assertEquals(numCols, g.columns);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
g = TestDetectCircleGrid.flipHorizontal(g);
alg.putGridIntoCanonical(g);
assertEquals(numRows, g.rows);
assertEquals(numCols, g.columns);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
}
use of boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid in project BoofCV by lessthanoptimal.
the class TestDetectCircleHexagonalGrid method putGridIntoCanonical_vertical.
private void putGridIntoCanonical_vertical(int numRows, int numCols) {
DetectCircleHexagonalGrid<?> alg = new DetectCircleHexagonalGrid(numRows, numCols, null, null, null);
Grid g = createGrid(numRows, numCols);
List<EllipseRotated_F64> original = new ArrayList<>();
original.addAll(g.ellipses);
alg.putGridIntoCanonical(g);
assertEquals(numRows, g.rows);
assertEquals(numCols, g.columns);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
alg.putGridIntoCanonical(TestDetectCircleGrid.flipVertical(g));
assertEquals(numRows, g.rows);
assertEquals(numCols, g.columns);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
}
use of boofcv.alg.fiducial.calib.circle.EllipseClustersIntoGrid.Grid in project BoofCV by lessthanoptimal.
the class TestDetectCircleRegularGrid method putGridIntoCanonical_flip.
private void putGridIntoCanonical_flip(int numRows, int numCols) {
DetectCircleRegularGrid<?> alg = new DetectCircleRegularGrid(numRows, numCols, null, null, null);
Grid g = createGrid(numRows, numCols);
List<EllipseRotated_F64> original = new ArrayList<>();
original.addAll(g.ellipses);
alg.putGridIntoCanonical(g);
assertEquals(numRows, g.rows);
assertEquals(numCols, g.columns);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
g = TestDetectCircleGrid.flipHorizontal(g);
alg.putGridIntoCanonical(g);
assertEquals(numRows, g.rows);
assertEquals(numCols, g.columns);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
g = TestDetectCircleGrid.flipVertical(g);
alg.putGridIntoCanonical(g);
assertEquals(numRows, g.rows);
assertEquals(numCols, g.columns);
assertTrue(original.get(0) == g.get(0, 0));
checkCounterClockWise(g);
}
Aggregations