use of boofcv.alg.fiducial.calib.ecocheck.ECoCheckGenerator in project BoofCV by lessthanoptimal.
the class TestCalibrationDetectorMultiECoCheck method renderPattern.
@Override
public GrayF32 renderPattern(int marker, List<PointIndex2D_F64> calibrationPoints) {
GridShape shape = utils.markers.get(marker);
int squareLength = 60;
var engine = new FiducialImageEngine();
engine.configure(20, squareLength * (shape.cols - 1), squareLength * (shape.rows - 1));
var generator = new ECoCheckGenerator(utils);
generator.squareWidth = squareLength;
generator.setRender(engine);
generator.render(marker);
BoofMiscOps.forIdx(generator.corners, (idx, c) -> calibrationPoints.add(new PointIndex2D_F64(c.x, c.y, idx)));
return engine.getGrayF32();
}
use of boofcv.alg.fiducial.calib.ecocheck.ECoCheckGenerator in project BoofCV by lessthanoptimal.
the class CreateECoCheckDocumentPDF method configureRenderer.
@Override
protected void configureRenderer(PdfFiducialEngine renderer) {
if (markerHeight < 0)
throw new IllegalArgumentException("Must specify marker height even if square");
this.renderer = renderer;
g = new ECoCheckGenerator(utils);
g.squareWidth = squareWidth * UNIT_TO_POINTS;
g.setRender(renderer);
}
use of boofcv.alg.fiducial.calib.ecocheck.ECoCheckGenerator in project BoofCV by lessthanoptimal.
the class UtilCalibrationGui method renderTargetBuffered.
public static BufferedImage renderTargetBuffered(CalibrationPatterns type, Object config, int squareWidth) {
int circle = squareWidth / 2;
if (type == CalibrationPatterns.ECOCHECK) {
ConfigECoCheckMarkers c = (ConfigECoCheckMarkers) config;
ECoCheckUtils utils = new ECoCheckUtils();
utils.codec.setErrorCorrectionLevel(c.errorCorrectionLevel);
utils.codec.setChecksumBitCount(c.checksumBits);
c.convertToGridList(utils.markers);
utils.fixate();
ConfigECoCheckMarkers.MarkerShape shape = c.markerShapes.get(0);
int markerWidth = squareWidth * (shape.numCols - 1);
int markerHeight = squareWidth * (shape.numRows - 1);
FiducialRenderEngineGraphics2D render = configureRenderGraphics2D(markerWidth, markerHeight, squareWidth / 2);
ECoCheckGenerator generator = new ECoCheckGenerator(utils);
generator.squareWidth = squareWidth;
generator.setRender(render);
generator.render(0);
return render.getImage();
} else if (type == CalibrationPatterns.HAMMING_CHESSBOARD) {
ConfigHammingChessboard c = (ConfigHammingChessboard) config;
int markerWidth = squareWidth * c.numCols;
int markerHeight = squareWidth * c.numRows;
FiducialRenderEngineGraphics2D render = configureRenderGraphics2D(markerWidth, markerHeight, squareWidth / 2);
HammingChessboardGenerator generator = new HammingChessboardGenerator(c);
generator.squareWidth = squareWidth;
generator.setRender(render);
generator.render();
return render.getImage();
} else if (type == CalibrationPatterns.HAMMING_GRID) {
ConfigHammingGrid c = (ConfigHammingGrid) config;
int markerWidth = (int) Math.round(squareWidth * c.getMarkerWidth() / c.squareSize);
int markerHeight = (int) Math.round(squareWidth * c.getMarkerHeight() / c.squareSize);
FiducialRenderEngineGraphics2D render = configureRenderGraphics2D(markerWidth, markerHeight, squareWidth / 2);
var generator = new HammingGridGenerator(c);
generator.squareWidth = squareWidth;
generator.setRender(render);
generator.render();
return render.getImage();
}
final RenderCalibrationTargetsGraphics2D renderer = new RenderCalibrationTargetsGraphics2D(20, 1);
if (type == CalibrationPatterns.CHESSBOARD) {
ConfigGridDimen c = (ConfigGridDimen) config;
renderer.chessboard(c.numRows, c.numCols, squareWidth);
} else if (type == CalibrationPatterns.SQUARE_GRID) {
ConfigGridDimen c = (ConfigGridDimen) config;
double space = squareWidth * c.shapeDistance / c.shapeSize;
renderer.squareGrid(c.numRows, c.numCols, squareWidth, space);
} else if (type == CalibrationPatterns.CIRCLE_GRID) {
ConfigGridDimen c = (ConfigGridDimen) config;
double space = circle * c.shapeDistance / c.shapeSize;
renderer.circleRegular(c.numRows, c.numCols, circle, space);
} else if (type == CalibrationPatterns.CIRCLE_HEXAGONAL) {
ConfigGridDimen c = (ConfigGridDimen) config;
double space = circle * c.shapeDistance / c.shapeSize;
renderer.circleHex(c.numRows, c.numCols, circle, space);
}
return renderer.getBuffered();
}
Aggregations