![JAR search and dependency download from the Maven repository](/logo.png)
boofcv.abst.fiducial.calib.ConfigSquareGrid Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of recognition Show documentation
Show all versions of recognition Show documentation
BoofCV is an open source Java library for real-time computer vision and robotics applications.
/*
* Copyright (c) 2011-2015, Peter Abeles. All Rights Reserved.
*
* This file is part of BoofCV (http://boofcv.org).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package boofcv.abst.fiducial.calib;
import boofcv.factory.filter.binary.ConfigThreshold;
import boofcv.factory.filter.binary.ThresholdType;
import boofcv.factory.shape.ConfigPolygonDetector;
import boofcv.factory.shape.ConfigRefinePolygonCornersToImage;
import boofcv.factory.shape.ConfigRefinePolygonLineToImage;
import boofcv.struct.Configuration;
/**
* Calibration parameters for square-grid style calibration grid.
*
* @see boofcv.alg.fiducial.calib.grid.DetectSquareGridFiducial
*
* @author Peter Abeles
*/
public class ConfigSquareGrid implements Configuration {
/**
* Number of black squares tall the grid is. Target dependent.
*/
public int numRows = -1;
/**
* Number of black squares wide the grid is. Target dependent.
*/
public int numCols = -1;
/**
* Configuration for thresholding the image
*/
public ConfigThreshold thresholding = ConfigThreshold.local(ThresholdType.LOCAL_SQUARE,20);
/**
* Configuration for square detector
*/
public ConfigPolygonDetector square = new ConfigPolygonDetector(true,4, 4);
/**
* Physical width of the square.
*/
public double squareWidth;
/**
* Physical width of hte space between each square
*/
public double spaceWidth;
/**
* Should it refine the corners only? Useful if the input image is distorted
*/
public boolean refineWithCorners = true;
/**
* Configuration for refining with lines. Ignored if not used.
*/
public ConfigRefinePolygonLineToImage configRefineLines = new ConfigRefinePolygonLineToImage();
/**
* Configuration for refining with corners. Ignored if not used.
*/
public ConfigRefinePolygonCornersToImage configRefineCorners = new ConfigRefinePolygonCornersToImage();
{
// this is being used as a way to smooth out the binary image. Speeds things up quite a bit
thresholding.scale = 0.85;
square.contour2Poly_splitFraction = 0.1;
square.contour2Poly_minimumSideFraction = 0.1;
square.minContourImageWidthFraction = 0.0005;
// since it runs a separate sub-pixel algorithm these parameters can be tuned to create
// very crude corners
configRefineCorners.cornerOffset = 1;
configRefineCorners.lineSamples = 15;
configRefineCorners.convergeTolPixels = 0.2;
configRefineCorners.maxIterations = 5;
// putting reasonable defaults for if the user decides to optimize by line
configRefineLines.cornerOffset = 1;
configRefineLines.lineSamples = 15;
configRefineLines.convergeTolPixels = 0.2;
configRefineLines.maxIterations = 5;
}
public ConfigSquareGrid(int numRows, int numCols, double squareWidth, double spaceWidth) {
this.numRows = numRows;
this.numCols = numCols;
this.squareWidth = squareWidth;
this.spaceWidth = spaceWidth;
}
public double getSpacetoSquareRatio() {
return spaceWidth/squareWidth;
}
@Override
public void checkValidity() {
if( numCols <= 0 || numRows <= 0 )
throw new IllegalArgumentException("Must specify then number of rows and columns in the target");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy