/** * Configure it to detect chessboard style targets */ public CalibrationFiducialDetector(ConfigChessboard config, Class<T> imageType) { DetectorFiducialCalibration detector = FactoryFiducialCalibration.chessboard(config); double sideWidth = config.numCols*config.squareWidth; double sideHeight = config.numRows*config.squareWidth; width = (sideWidth+sideHeight)/2.0; init(detector, width, imageType); }
public static void main( String args[] ) { DetectorFiducialCalibration detector = // FactoryFiducialCalibration.squareGrid(new ConfigSquareGrid(8, 8, 0.5, 7.0 / 18.0)); // FactoryFiducialCalibration.squareGrid(new ConfigSquareGrid(4,3,30,30)); FactoryFiducialCalibration.chessboard(new ConfigChessboard(7, 5, 30)); // FactoryFiducialCalibration.circleHexagonalGrid(new ConfigCircleHexagonalGrid(5, 8, 1, 6)); List<String> images; // images = UtilIO.listByPrefix(UtilIO.pathExample("calibration/mono/Sony_DSC-HX5V_Square"),"frame"); images = UtilIO.listByPrefix(UtilIO.pathExample("calibration/mono/Sony_DSC-HX5V_Chess"),"frame", null); // images = UtilIO.listByPrefix(UtilIO.pathExample("calibration/mono/Sony_DSC-HX5V_CircleHexagonal"),"image"); // images = UtilIO.listByPrefix(UtilIO.pathExample("calibration/mono/PULNiX_CCD_6mm_Zhang"),"CalibIm"); // images = UtilIO.listByPrefix(UtilIO.pathExample("calibration//stereo/Bumblebee2_Square"),"left"); SwingUtilities.invokeLater(()-> { CalibratePinholePlanarGuiApp app = new CalibratePinholePlanarGuiApp(); app.configure(detector, images, 2, false); JFrame frame = new JFrame("Pinhole Calribation with Planar Targets"); frame.add(app, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); new Thread(() -> app.process("intrinsic.yaml")).start(); }); } }
public static void main( String args[] ) { DetectorFiducialCalibration detector = FactoryFiducialCalibration.chessboard(new ConfigChessboard(7, 5, 30));
public static void main( String args[] ) { DetectorFiducialCalibration detector = // FactoryFiducialCalibration.squareGrid(new ConfigSquareGrid(8, 8, 0.5, 7.0 / 18.0)); // FactoryFiducialCalibration.squareGrid(new ConfigSquareGrid(4,3,30,30)); FactoryFiducialCalibration.chessboard(new ConfigChessboard(7, 5, 30)); // FactoryFiducialCalibration.circleHexagonalGrid(new ConfigCircleHexagonalGrid(5, 8, 1, 6)); List<String> images; images = UtilIO.listAll(UtilIO.pathExample("calibration/fisheye/chessboard")); // images = UtilIO.listAll(UtilIO.pathExample("calibration/fisheye/square_grid")); SwingUtilities.invokeLater(()-> { CalibrateFisheyePlanarGuiApp app = new CalibrateFisheyePlanarGuiApp(); app.configure(detector, images).configureUniversalOmni(true, 2, false); JFrame frame = new JFrame("Fisheye Calibration with Planar Targets"); frame.add(app, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); new Thread(() -> app.process("intrinsic.yaml")).start(); }); } }
protected void parseTarget( String where ) throws FileNotFoundException { Reader input = media.openFile(where); SimpleStringNumberReader reader = new SimpleStringNumberReader('#'); if( !reader.read(input) ) throw new RuntimeException("Parsing configuration failed"); if( reader.remainingTokens() < 7 ) throw new RuntimeException("Not enough tokens in config file"); String type = reader.nextString(); numRadial = (int)reader.nextDouble(); includeTangential = Boolean.parseBoolean(reader.nextString()); assumeZeroSkew = Boolean.parseBoolean(reader.nextString()); int numCols = (int)reader.nextDouble(); int numRows = (int)reader.nextDouble(); double width = reader.nextDouble(); if( type.compareToIgnoreCase("square") == 0 ) { double space = reader.nextDouble(); detector = FactoryFiducialCalibration.squareGrid(new ConfigSquareGrid(numRows, numCols, width, space)); } else if( type.compareToIgnoreCase("chess") == 0 ) { detector = FactoryFiducialCalibration.chessboard(new ConfigChessboard(numRows, numCols, width)); } else { throw new RuntimeException("Unknown type: "+type); } try { input.close(); } catch (IOException e) {} }
/** * Configures the detector, configures target description for calibration and starts the detector thread. */ @Override public void createNewProcessor() { DetectorFiducialCalibration detector; if( cc.targetType == CalibrationPatterns.CHESSBOARD ) { detector = FactoryFiducialCalibration.chessboard(cc.chessboard); } else if( cc.targetType == CalibrationPatterns.SQUARE_GRID ) { detector = FactoryFiducialCalibration.squareGrid(cc.squareGrid); } else if( cc.targetType == CalibrationPatterns.CIRCLE_HEXAGONAL ){ detector = FactoryFiducialCalibration.circleHexagonalGrid(cc.hexagonal); } else if( cc.targetType == CalibrationPatterns.CIRCLE_GRID ){ detector = FactoryFiducialCalibration.circleRegularGrid(cc.circleGrid); } else { throw new RuntimeException("Unknown targetType "+cc.targetType); } CalibrationComputeActivity.targetLayout = detector.getLayout(); setProcessing(new DetectTarget(detector)); }
@Override public void declareDetector() { config.thresholding = ((DetectCalibrationPolygonPanel)controlPanel).polygonPanel.thresholdPanel.createConfig(); config.square = ((DetectCalibrationPolygonPanel)controlPanel).polygonPanel.getConfigPolygon(); config.numRows = controlPanel.getGridRows(); config.numCols = controlPanel.getGridColumns(); alg = FactoryFiducialCalibration.chessboard(config).getAlgorithm(); reprocessImageOnly(); }