Package org.opencv.aruco
Class DetectorParameters
java.lang.Object
org.opencv.aruco.DetectorParameters
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 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic DetectorParameters
__fromPtr__
(long addr) static DetectorParameters
create()
protected void
finalize()
double
int
int
int
float
int
float
int
int
int
float
float
int
int
double
int
boolean
double
int
double
double
double
int
double
float
double
double
int
double
int
double
boolean
long
void
set_adaptiveThreshConstant
(double adaptiveThreshConstant) void
set_adaptiveThreshWinSizeMax
(int adaptiveThreshWinSizeMax) void
set_adaptiveThreshWinSizeMin
(int adaptiveThreshWinSizeMin) void
set_adaptiveThreshWinSizeStep
(int adaptiveThreshWinSizeStep) void
set_aprilTagCriticalRad
(float aprilTagCriticalRad) void
set_aprilTagDeglitch
(int aprilTagDeglitch) void
set_aprilTagMaxLineFitMse
(float aprilTagMaxLineFitMse) void
set_aprilTagMaxNmaxima
(int aprilTagMaxNmaxima) void
set_aprilTagMinClusterPixels
(int aprilTagMinClusterPixels) void
set_aprilTagMinWhiteBlackDiff
(int aprilTagMinWhiteBlackDiff) void
set_aprilTagQuadDecimate
(float aprilTagQuadDecimate) void
set_aprilTagQuadSigma
(float aprilTagQuadSigma) void
set_cornerRefinementMaxIterations
(int cornerRefinementMaxIterations) void
set_cornerRefinementMethod
(int cornerRefinementMethod) void
set_cornerRefinementMinAccuracy
(double cornerRefinementMinAccuracy) void
set_cornerRefinementWinSize
(int cornerRefinementWinSize) void
set_detectInvertedMarker
(boolean detectInvertedMarker) void
set_errorCorrectionRate
(double errorCorrectionRate) void
set_markerBorderBits
(int markerBorderBits) void
set_maxErroneousBitsInBorderRate
(double maxErroneousBitsInBorderRate) void
set_maxMarkerPerimeterRate
(double maxMarkerPerimeterRate) void
set_minCornerDistanceRate
(double minCornerDistanceRate) void
set_minDistanceToBorder
(int minDistanceToBorder) void
set_minMarkerDistanceRate
(double minMarkerDistanceRate) void
set_minMarkerLengthRatioOriginalImg
(float minMarkerLengthRatioOriginalImg) void
set_minMarkerPerimeterRate
(double minMarkerPerimeterRate) void
set_minOtsuStdDev
(double minOtsuStdDev) void
set_minSideLengthCanonicalImg
(int minSideLengthCanonicalImg) void
set_perspectiveRemoveIgnoredMarginPerCell
(double perspectiveRemoveIgnoredMarginPerCell) void
set_perspectiveRemovePixelPerCell
(int perspectiveRemovePixelPerCell) void
set_polygonalApproxAccuracyRate
(double polygonalApproxAccuracyRate) void
set_useAruco3Detection
(boolean useAruco3Detection)
-
Field Details
-
nativeObj
protected final long nativeObj
-
-
Constructor Details
-
DetectorParameters
protected DetectorParameters(long addr)
-
-
Method Details
-
getNativeObjAddr
public long getNativeObjAddr() -
__fromPtr__
-
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
-