@Override protected GrayU8 getBinaryImage() { return detector.getDetector().getBinary(); }
@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); } }
@Override protected void renderClusters(Graphics2D g2, double scale) { List<EllipseRotated_F64> found = detector.getDetector().getEllipseDetector().getFoundEllipses(null); List<List<EllipsesIntoClusters.Node>> clusters = detector.getDetector().getClusters(); g2.setStroke(new BasicStroke(2)); int id = 0; for( List<EllipsesIntoClusters.Node> c : clusters ) { g2.setColor(colorId[Math.min(id++,colorId.length-1)]); for( EllipsesIntoClusters.Node n : c ) { EllipseRotated_F64 a = found.get(n.which); line.x1 = scale*a.center.x; line.y1 = scale*a.center.y; for (int i = 0; i < n.connections.size; i++) { EllipseRotated_F64 b = found.get(n.connections.get(i)); line.x2 = scale*b.center.x; line.y2 = scale*b.center.y; g2.draw(line); } } } }
@Override protected List<EllipseRotated_F64> getFoundEllipses() { return detector.getDetector().getEllipseDetector().getFoundEllipses(null); }
@Override protected void renderGrid(Graphics2D g2 , double scale ) { List<Grid> grids = detector.getDetector().getGrider().getGrids().toList(); BasicStroke thin = new BasicStroke(3); BasicStroke thick = new BasicStroke(5); for( Grid g : grids ) { double x0 = Double.MAX_VALUE; double x1 = -Double.MAX_VALUE; double y0 = Double.MAX_VALUE; double y1 = -Double.MAX_VALUE; for (int i = 0; i < g.ellipses.size(); i++) { EllipseRotated_F64 e = g.ellipses.get(i); if( e == null ) continue; x0 = Math.min(e.center.x,x0); x1 = Math.max(e.center.x,x1); y0 = Math.min(e.center.y,y0); y1 = Math.max(e.center.y,y1); } x0 *= scale; y0 *= scale; x1 *= scale; y1 *= scale; g2.setColor(Color.WHITE); g2.setStroke(thick); VisualizeShapes.drawRectangle(x0,y0,x1,y1,line,g2); g2.setColor(Color.ORANGE); g2.setStroke(thin); VisualizeShapes.drawRectangle(x0,y0,x1,y1,line,g2); } renderTangents(g2,scale); }
@Override protected List<Contour> getContours() { BinaryLabelContourFinder contour = detector.getDetector().getEllipseDetector().getEllipseDetector().getContourFinder(); return BinaryImageOps.convertContours(contour); }
binary = alg.getBinary(); } else if( detector instanceof CalibrationDetectorCircleHexagonalGrid) { DetectCircleHexagonalGrid<GrayF32> alg = ((CalibrationDetectorCircleHexagonalGrid) detector).getDetector(); debugEllipses.clear(); debugEllipses.addAll(alg.getEllipseDetector().getFoundEllipses(null));
binary = ((CalibrationDetectorSquareGrid) a).getAlgorithm().getBinary(); } else if( a instanceof CalibrationDetectorCircleHexagonalGrid){ binary = ((CalibrationDetectorCircleHexagonalGrid) a).getDetector().getBinary(); } else if( a instanceof CalibrationDetectorCircleRegularGrid){ binary = ((CalibrationDetectorCircleRegularGrid) a).getDetector().getBinary();