Package org.opencv.aruco
Class DetectorParameters
- java.lang.Object
-
- org.opencv.aruco.DetectorParameters
-
public class DetectorParameters extends java.lang.Object
Parameters for the detectMarker process: - adaptiveThreshWinSizeMin: minimum window size for adaptive thresholding before finding contours (default 3). - adaptiveThreshWinSizeMax: maximum window size for adaptive thresholding before finding contours (default 23). - adaptiveThreshWinSizeStep: increments from adaptiveThreshWinSizeMin to adaptiveThreshWinSizeMax during the thresholding (default 10). - adaptiveThreshConstant: constant for adaptive thresholding before finding contours (default 7) - minMarkerPerimeterRate: determine minimum perimeter for marker contour to be detected. This is defined as a rate respect to the maximum dimension of the input image (default 0.03). - maxMarkerPerimeterRate: determine maximum perimeter for marker contour to be detected. This is defined as a rate respect to the maximum dimension of the input image (default 4.0). - polygonalApproxAccuracyRate: minimum accuracy during the polygonal approximation process to determine which contours are squares. (default 0.03) - minCornerDistanceRate: minimum distance between corners for detected markers relative to its perimeter (default 0.05) - minDistanceToBorder: minimum distance of any corner to the image border for detected markers (in pixels) (default 3) - minMarkerDistanceRate: minimum mean distance beetween two marker corners to be considered similar, so that the smaller one is removed. The rate is relative to the smaller perimeter of the two markers (default 0.05). - cornerRefinementMethod: corner refinement method. (CORNER_REFINE_NONE, no refinement. CORNER_REFINE_SUBPIX, do subpixel refinement. CORNER_REFINE_CONTOUR use contour-Points, CORNER_REFINE_APRILTAG use the AprilTag2 approach). (default CORNER_REFINE_NONE) - cornerRefinementWinSize: window size for the corner refinement process (in pixels) (default 5). - cornerRefinementMaxIterations: maximum number of iterations for stop criteria of the corner refinement process (default 30). - cornerRefinementMinAccuracy: minimum error for the stop cristeria of the corner refinement process (default: 0.1) - markerBorderBits: number of bits of the marker border, i.e. marker border width (default 1). - perspectiveRemovePixelPerCell: number of bits (per dimension) for each cell of the marker when removing the perspective (default 4). - perspectiveRemoveIgnoredMarginPerCell: width of the margin of pixels on each cell not considered for the determination of the cell bit. Represents the rate respect to the total size of the cell, i.e. perspectiveRemovePixelPerCell (default 0.13) - maxErroneousBitsInBorderRate: maximum number of accepted erroneous bits in the border (i.e. number of allowed white bits in the border). Represented as a rate respect to the total number of bits per marker (default 0.35). - minOtsuStdDev: minimun standard deviation in pixels values during the decodification step to apply Otsu thresholding (otherwise, all the bits are set to 0 or 1 depending on mean higher than 128 or not) (default 5.0) - errorCorrectionRate error correction rate respect to the maximun error correction capability for each dictionary. (default 0.6). - aprilTagMinClusterPixels: reject quads containing too few pixels. (default 5) - aprilTagMaxNmaxima: how many corner candidates to consider when segmenting a group of pixels into a quad. (default 10) - aprilTagCriticalRad: Reject quads where pairs of edges have angles that are close to straight or close to 180 degrees. Zero means that no quads are rejected. (In radians) (default 10*PI/180) - aprilTagMaxLineFitMse: When fitting lines to the contours, what is the maximum mean squared error allowed? This is useful in rejecting contours that are far from being quad shaped; rejecting these quads "early" saves expensive decoding processing. (default 10.0) - aprilTagMinWhiteBlackDiff: When we build our model of black & white pixels, we add an extra check that the white model must be (overall) brighter than the black model. How much brighter? (in pixel values, [0,255]). (default 5) - aprilTagDeglitch: should the thresholded image be deglitched? Only useful for very noisy images. (default 0) - aprilTagQuadDecimate: Detection of quads can be done on a lower-resolution image, improving speed at a cost of pose accuracy and a slight decrease in detection rate. Decoding the binary payload is still done at full resolution. (default 0.0) - aprilTagQuadSigma: What Gaussian blur should be applied to the segmented image (used for quad detection?) Parameter is the standard deviation in pixels. Very noisy images benefit from non-zero values (e.g. 0.8). (default 0.0) - detectInvertedMarker: to check if there is a white marker. In order to generate a "white" marker just invert a normal marker by using a tilde, ~markerImage. (default false) - useAruco3Detection: to enable the new and faster Aruco detection strategy. The most important observation from the authors of Romero-Ramirez et al: Speeded up detection of squared fiducial markers (2018) is, that the binary code of a marker can be reliably detected if the canonical image (that is used to extract the binary code) has a size of minSideLengthCanonicalImg (in practice tau_c=16-32 pixels). Link to article: https://www.researchgate.net/publication/325787310_Speeded_Up_Detection_of_Squared_Fiducial_Markers In addition, very small markers are barely useful for pose estimation and thus a we can define a minimum marker size that we still want to be able to detect (e.g. 50x50 pixel). To decouple this from the initial image size they propose to resize the input image to (I_w_r, I_h_r) = (tau_c / tau_dot_i) * (I_w, I_h), with tau_dot_i = tau_c + max(I_w,I_h) * tau_i. Here tau_i (parameter: minMarkerLengthRatioOriginalImg) is a ratio in the range [0,1]. If we set this to 0, the smallest marker we can detect has a side length of tau_c. If we set it to 1 the marker would fill the entire image. For a FullHD video a good value to start with is 0.1. - minSideLengthCanonicalImg: minimum side length of a marker in the canonical image. Latter is the binarized image in which contours are searched. So all contours with a size smaller than minSideLengthCanonicalImg*minSideLengthCanonicalImg will omitted from the search. - minMarkerLengthRatioOriginalImg: range [0,1], eq (2) from paper The parameter tau_i has a direct influence on the processing speed.
-
-
Field Summary
Fields Modifier and Type Field Description protected long
nativeObj
-
Constructor Summary
Constructors Modifier Constructor Description protected
DetectorParameters(long addr)
-
Method Summary
-
-
-
Method Detail
-
getNativeObjAddr
public long getNativeObjAddr()
-
__fromPtr__
public static DetectorParameters __fromPtr__(long addr)
-
create
public static DetectorParameters create()
-
get_adaptiveThreshWinSizeMin
public int get_adaptiveThreshWinSizeMin()
-
set_adaptiveThreshWinSizeMin
public void set_adaptiveThreshWinSizeMin(int adaptiveThreshWinSizeMin)
-
get_adaptiveThreshWinSizeMax
public int get_adaptiveThreshWinSizeMax()
-
set_adaptiveThreshWinSizeMax
public void set_adaptiveThreshWinSizeMax(int adaptiveThreshWinSizeMax)
-
get_adaptiveThreshWinSizeStep
public int get_adaptiveThreshWinSizeStep()
-
set_adaptiveThreshWinSizeStep
public void set_adaptiveThreshWinSizeStep(int adaptiveThreshWinSizeStep)
-
get_adaptiveThreshConstant
public double get_adaptiveThreshConstant()
-
set_adaptiveThreshConstant
public void set_adaptiveThreshConstant(double adaptiveThreshConstant)
-
get_minMarkerPerimeterRate
public double get_minMarkerPerimeterRate()
-
set_minMarkerPerimeterRate
public void set_minMarkerPerimeterRate(double minMarkerPerimeterRate)
-
get_maxMarkerPerimeterRate
public double get_maxMarkerPerimeterRate()
-
set_maxMarkerPerimeterRate
public void set_maxMarkerPerimeterRate(double maxMarkerPerimeterRate)
-
get_polygonalApproxAccuracyRate
public double get_polygonalApproxAccuracyRate()
-
set_polygonalApproxAccuracyRate
public void set_polygonalApproxAccuracyRate(double polygonalApproxAccuracyRate)
-
get_minCornerDistanceRate
public double get_minCornerDistanceRate()
-
set_minCornerDistanceRate
public void set_minCornerDistanceRate(double minCornerDistanceRate)
-
get_minDistanceToBorder
public int get_minDistanceToBorder()
-
set_minDistanceToBorder
public void set_minDistanceToBorder(int minDistanceToBorder)
-
get_minMarkerDistanceRate
public double get_minMarkerDistanceRate()
-
set_minMarkerDistanceRate
public void set_minMarkerDistanceRate(double minMarkerDistanceRate)
-
get_cornerRefinementMethod
public int get_cornerRefinementMethod()
-
set_cornerRefinementMethod
public void set_cornerRefinementMethod(int cornerRefinementMethod)
-
get_cornerRefinementWinSize
public int get_cornerRefinementWinSize()
-
set_cornerRefinementWinSize
public void set_cornerRefinementWinSize(int cornerRefinementWinSize)
-
get_cornerRefinementMaxIterations
public int get_cornerRefinementMaxIterations()
-
set_cornerRefinementMaxIterations
public void set_cornerRefinementMaxIterations(int cornerRefinementMaxIterations)
-
get_cornerRefinementMinAccuracy
public double get_cornerRefinementMinAccuracy()
-
set_cornerRefinementMinAccuracy
public void set_cornerRefinementMinAccuracy(double cornerRefinementMinAccuracy)
-
get_markerBorderBits
public int get_markerBorderBits()
-
set_markerBorderBits
public void set_markerBorderBits(int markerBorderBits)
-
get_perspectiveRemovePixelPerCell
public int get_perspectiveRemovePixelPerCell()
-
set_perspectiveRemovePixelPerCell
public void set_perspectiveRemovePixelPerCell(int perspectiveRemovePixelPerCell)
-
get_perspectiveRemoveIgnoredMarginPerCell
public double get_perspectiveRemoveIgnoredMarginPerCell()
-
set_perspectiveRemoveIgnoredMarginPerCell
public void set_perspectiveRemoveIgnoredMarginPerCell(double perspectiveRemoveIgnoredMarginPerCell)
-
get_maxErroneousBitsInBorderRate
public double get_maxErroneousBitsInBorderRate()
-
set_maxErroneousBitsInBorderRate
public void set_maxErroneousBitsInBorderRate(double maxErroneousBitsInBorderRate)
-
get_minOtsuStdDev
public double get_minOtsuStdDev()
-
set_minOtsuStdDev
public void set_minOtsuStdDev(double minOtsuStdDev)
-
get_errorCorrectionRate
public double get_errorCorrectionRate()
-
set_errorCorrectionRate
public void set_errorCorrectionRate(double errorCorrectionRate)
-
get_aprilTagQuadDecimate
public float get_aprilTagQuadDecimate()
-
set_aprilTagQuadDecimate
public void set_aprilTagQuadDecimate(float aprilTagQuadDecimate)
-
get_aprilTagQuadSigma
public float get_aprilTagQuadSigma()
-
set_aprilTagQuadSigma
public void set_aprilTagQuadSigma(float aprilTagQuadSigma)
-
get_aprilTagMinClusterPixels
public int get_aprilTagMinClusterPixels()
-
set_aprilTagMinClusterPixels
public void set_aprilTagMinClusterPixels(int aprilTagMinClusterPixels)
-
get_aprilTagMaxNmaxima
public int get_aprilTagMaxNmaxima()
-
set_aprilTagMaxNmaxima
public void set_aprilTagMaxNmaxima(int aprilTagMaxNmaxima)
-
get_aprilTagCriticalRad
public float get_aprilTagCriticalRad()
-
set_aprilTagCriticalRad
public void set_aprilTagCriticalRad(float aprilTagCriticalRad)
-
get_aprilTagMaxLineFitMse
public float get_aprilTagMaxLineFitMse()
-
set_aprilTagMaxLineFitMse
public void set_aprilTagMaxLineFitMse(float aprilTagMaxLineFitMse)
-
get_aprilTagMinWhiteBlackDiff
public int get_aprilTagMinWhiteBlackDiff()
-
set_aprilTagMinWhiteBlackDiff
public void set_aprilTagMinWhiteBlackDiff(int aprilTagMinWhiteBlackDiff)
-
get_aprilTagDeglitch
public int get_aprilTagDeglitch()
-
set_aprilTagDeglitch
public void set_aprilTagDeglitch(int aprilTagDeglitch)
-
get_detectInvertedMarker
public boolean get_detectInvertedMarker()
-
set_detectInvertedMarker
public void set_detectInvertedMarker(boolean detectInvertedMarker)
-
get_useAruco3Detection
public boolean get_useAruco3Detection()
-
set_useAruco3Detection
public void set_useAruco3Detection(boolean useAruco3Detection)
-
get_minSideLengthCanonicalImg
public int get_minSideLengthCanonicalImg()
-
set_minSideLengthCanonicalImg
public void set_minSideLengthCanonicalImg(int minSideLengthCanonicalImg)
-
get_minMarkerLengthRatioOriginalImg
public float get_minMarkerLengthRatioOriginalImg()
-
set_minMarkerLengthRatioOriginalImg
public void set_minMarkerLengthRatioOriginalImg(float minMarkerLengthRatioOriginalImg)
-
finalize
protected void finalize() throws java.lang.Throwable
- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
-
-