8#ifndef OCEAN_CV_DETECTOR_BULLSEYES_BULLSEYEDETECTORSTEREO_H
9#define OCEAN_CV_DETECTOR_BULLSEYES_BULLSEYEDETECTORSTEREO_H
143 Scalar reprojectionErrorA_ = Numeric::minValue();
146 Scalar reprojectionErrorB_ = Numeric::minValue();
155 using CandidateMap = std::unordered_map<IndexPair32, Candidate, PairHash>;
226 constexpr static Scalar invalidMatchingCost();
This class implements the abstract base class for all AnyCamera objects.
Definition AnyCamera.h:130
This class holds the most important parameters for the detector.
Definition BullseyeDetectorMono.h:66
This class represents a candidate bullseye match between two stereo cameras.
Definition BullseyeDetectorStereo.h:89
static Vector3 invalidBullseyeCenter()
Returns an invalid bullseye center value used as a sentinel for uninitialized positions.
const Vector3 & center() const
Returns the triangulated 3D center position.
bool isValid() const
Returns whether this candidate is valid.
Candidate()=default
Creates a default (invalid) candidate.
Candidate(const Vector3 ¢er, const Scalar reprojectionErrorA, const Scalar reprojectionErrorB)
Creates a new candidate with the specified parameters.
Scalar reprojectionErrorA() const
Returns the reprojection error for camera A.
Scalar reprojectionErrorB() const
Returns the reprojection error for camera B.
This class holds the most important parameters for the stereo detector.
Definition BullseyeDetectorStereo.h:64
Parameters()=default
Creates a new parameter object with default parameters.
static Parameters defaultParameters()
Returns the default parameters for the stereo detector.
This class implements a stereo detector for bullseye patterns.
Definition BullseyeDetectorStereo.h:41
static constexpr Scalar invalidMatchingCost()
Returns an invalid (arbitrarily large) matching cost value used to indicate that two bullseyes cannot...
Definition BullseyeDetectorStereo.h:246
static CandidateMap extractBullseyeCandidates(const AnyCamera &cameraA, const AnyCamera &cameraB, const HomogenousMatrix4 &world_T_cameraA, const HomogenousMatrix4 &world_T_cameraB, const Bullseyes &bullseyesA, const Bullseyes &bullseyesB)
Extracts and validates candidate bullseye matches between two stereo cameras.
std::vector< BullseyePair > BullseyePairs
Definition of a vector holding bullseye pairs.
Definition BullseyeDetectorStereo.h:52
static bool triangulateBullseye(const AnyCamera &cameraA, const AnyCamera &cameraB, const HomogenousMatrix4 &world_T_cameraA, const HomogenousMatrix4 &world_T_cameraB, const Bullseye &bullseyeA, const Bullseye &bullseyeB, Vector3 &bullseyeCenter, Scalar &reprojectionErrorA, Scalar &reprojectionErrorB)
Triangulates a single matched bullseye pair to compute its 3D position in world coordinates.
std::unordered_map< IndexPair32, Candidate, PairHash > CandidateMap
Definition of an unordered map holding candidate bullseyes.
Definition BullseyeDetectorStereo.h:155
static bool detectBullseyes(const SharedAnyCameras &cameras, const Frames &yFrames, const HomogenousMatrix4 &world_T_device, const HomogenousMatrices4 &device_T_cameras, BullseyePairs &bullseyePairs, Vectors3 &bullseyeCenters, const Parameters ¶meters=Parameters::defaultParameters(), Worker *worker=nullptr)
Detects bullseyes in a pair of stereo frames.
std::pair< Bullseye, Bullseye > BullseyePair
Definition of a pair of bullseyes.
Definition BullseyeDetectorStereo.h:47
std::array< Bullseyes, 2 > BullseyeGroup
Definition of a pair of vectors of bullseyes, one from each camera.
Definition BullseyeDetectorStereo.h:57
static bool computeCostMatrix(const AnyCamera &cameraA, const AnyCamera &cameraB, const Bullseyes &bullseyesA, const Bullseyes &bullseyesB, const CandidateMap &candidateMap, Matrix &costMatrix)
Computes a cost matrix for matching bullseyes based on candidate triangulation results.
static bool extractBullseyes(const AnyCamera &cameraA, const AnyCamera &cameraB, const Bullseyes &bullseyesA, const Bullseyes &bullseyesB, const CandidateMap &candidateMap, BullseyePairs &bullseyePairs, Vectors3 &bullseyeCenters)
Extracts the final bullseye pairs and their 3D centers from candidate matches.
Definition of a bullseye composed of a location and a radius.
Definition Bullseye.h:32
This class implements a worker able to distribute function calls over different threads.
Definition Worker.h:33
std::vector< Frame > Frames
Definition of a vector holding padding frames.
Definition Frame.h:1771
float Scalar
Definition of a scalar type.
Definition Math.h:129
std::vector< HomogenousMatrix4 > HomogenousMatrices4
Definition of a vector holding HomogenousMatrix4 objects.
Definition HomogenousMatrix4.h:73
std::vector< Vector3 > Vectors3
Definition of a vector holding Vector3 objects.
Definition Vector3.h:65
SharedAnyCamerasT< Scalar > SharedAnyCameras
Definition of a vector holding AnyCamera objects.
Definition AnyCamera.h:90
std::vector< Bullseye > Bullseyes
Definition of a vector holding bullseyes.
Definition Bullseye.h:103
The namespace covering the entire Ocean framework.
Definition Accessor.h:15