10 #ifndef mrpt_vision_types_H
11 #define mrpt_vision_types_H
180 typedef std::map<mrpt::vision::TFeatureID, TRelativeFeaturePos>
193 typedef std::vector<TFeatureObservation>
BASE;
209 const std::string& filName,
bool skipFirstCommentLine =
false)
const;
249 std::map<TCameraPoseID, TCameraPoseID>* old2new_camIDs =
nullptr,
250 std::map<TLandmarkID, TLandmarkID>* old2new_lmIDs =
nullptr);
332 TROI(
float x1,
float x2,
float y1,
float y2,
float z1,
float z2);
349 TImageROI(
float x1,
float x2,
float y1,
float y2);
468 #define COPY_MEMBER(_m) this->_m = o._m;
469 #define CHECK_MEMBER(_m) this->_m == o._m
612 const bool& _useOriFilter,
const double& _oriThreshold,
613 const bool& _useDepthFilter,
const double& _th,
const double& _th2,
614 const unsigned int& _lwscl1,
const unsigned int& _lwscl2,
615 const unsigned int& _hwscl1,
const unsigned int& _hwscl2,
616 const int& _searchAreaSize,
const int& _lsth,
const int& _tsth,
617 const int& _minFeaturesToFind,
const int& _minFeaturesToBeLost)
703 const unsigned int& _basePSize,
const std::vector<double>& _scales,
704 const unsigned int& _comLScl,
const unsigned int& _comHScl,
705 const double& _sg1,
const double& _sg2,
const double& _sg3,
706 const bool& _computeDepth,
const bool _blurImage,
const double& _fx,
707 const double& _cx,
const double& _cy,
const double& _baseline,
708 const bool& _computeHashCoeffs,
const double& _cropValue)
724 scales.resize(_scales.size());
725 for (
unsigned int k = 0; k < _scales.size(); ++k)
#define MRPT_FILL_ENUM(_X)
For use in specializations of TEnumTypeFiller.
This class allows loading and storing values and vectors of different types from a configuration text...
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
A bidirectional version of std::map, declared as bimap<KEY,VALUE> and which actually contains two std...
GLsizei const GLchar ** string
GLsizei GLsizei GLchar * source
TDescriptorType
The bitwise OR combination of values of TDescriptorType are used in CFeatureExtraction::computeDescri...
std::vector< mrpt::math::TPoint3D > TLandmarkLocationsVec
A list of landmarks (3D points), which assumes indexes are unique, consecutive IDs.
TFeatureType
Types of features - This means that the point has been detected with this algorithm,...
uint64_t TFeatureID
Definition of a feature ID.
uint64_t TLandmarkID
Unique IDs for landmarks.
mrpt::aligned_containers< mrpt::poses::CPose3D >::vector_t TFramePosesVec
A list of camera frames (6D poses), which assumes indexes are unique, consecutive IDs.
std::map< mrpt::vision::TFeatureID, TRelativeFeaturePos > TRelativeFeaturePosMap
An index of feature IDs and their relative locations.
mrpt::aligned_containers< TCameraPoseID, mrpt::poses::CPose3D >::map_t TFramePosesMap
A list of camera frames (6D poses) indexed by unique IDs.
std::map< TLandmarkID, mrpt::math::TPoint3D > TLandmarkLocationsMap
A list of landmarks (3D points) indexed by unique IDs.
uint64_t TCameraPoseID
Unique IDs for camera frames (poses)
@ status_TRACKED
Feature correctly tracked.
@ status_OOB
Feature fell Out Of Bounds (out of the image limits, too close to image borders)
@ status_LOST
Unable to track this feature (mismatch is too high for the given tracking window: lack of texture?...
@ status_IDLE
Inactive (right after detection, and before being tried to track)
@ descLATCH
LATCH Line descriptor.
@ descSURF
SURF descriptors.
@ descBLD
BLD Line descriptor.
@ descLogPolarImages
Log-Polar image descriptor.
@ descSpinImages
Intensity-domain spin image descriptors.
@ descPolarImages
Polar image descriptor.
@ descSIFT
SIFT descriptors.
@ descORB
Bit-based feature descriptor.
@ descAny
Used in some methods to mean "any of the present descriptors".
@ featSURF
Speeded Up Robust Feature [BAY'06].
@ featLSD
LSD detector, OpenCV's implementation.
@ featBeacon
A especial case: this is not an image feature, but a 2D/3D beacon (used for range-only SLAM from mrpt...
@ featAKAZE
AKAZE detector, OpenCV's implementation.
@ featHarris
Harris border and corner detector [HARRIS].
@ featFAST
FAST feature detector, OpenCV's implementation ("Faster and better: A machine learning approac...
@ featSIFT
Scale Invariant Feature Transform [LOWE'04].
@ featFASTER10
FASTER-9 detector, Edward Rosten's libcvd implementation optimized for SSE2.
@ featNotDefined
Non-defined feature (also used for Occupancy features)
@ featFASTER12
FASTER-9 detector, Edward Rosten's libcvd implementation optimized for SSE2.
@ featFASTER9
FASTER-9 detector, Edward Rosten's libcvd implementation optimized for SSE2.
@ featORB
ORB detector and descriptor, OpenCV's implementation ("ORB: an efficient alternative to SIFT o...
@ featBCD
Binary corder detector.
@ featKLT
Kanade-Lucas-Tomasi feature [SHI'94].
Classes for computer vision, detectors, features, etc.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
unsigned __int32 uint32_t
unsigned __int64 uint64_t
std::vector< TYPE1, Eigen::aligned_allocator< TYPE1 > > vector_t
std::map< TYPE1, TYPE2, std::less< TYPE1 >, Eigen::aligned_allocator< std::pair< const TYPE1, TYPE2 > > > map_t
mrpt::vision::TDescriptorType enum_t
static void fill(bimap< enum_t, std::string > &m_map)
mrpt::vision::TFeatureType enum_t
static void fill(bimap< enum_t, std::string > &m_map)
Only specializations of this class are defined for each enum type of interest.
A pair (x,y) of pixel coordinates (subpixel resolution).
One feature observation entry, used within sequences with TSequenceFeatureObservations.
TFeatureObservation(const TLandmarkID _id_feature, const TCameraPoseID _id_frame, const mrpt::utils::TPixelCoordf &_px)
TLandmarkID id_feature
A unique ID of this feature.
mrpt::utils::TPixelCoordf px
The pixel coordinates of the observed feature.
TCameraPoseID id_frame
A unique ID of a "frame" (camera position) from where the feature was observed.
A structure for defining a ROI within an image.
float yMin
Y coordinate limits [0,imageHeight)
float xMin
X coordinate limits [0,imageWidth)
A structure containing options for the matching.
bool parallelOpticalAxis
Whether or not the stereo rig has the optical axes parallel.
bool useXRestriction
Whether or not employ the x-coord restriction for finding correspondences (bumblebee camera,...
bool hasFundamentalMatrix
Whether or not there is a fundamental matrix.
float epipolar_TH
Epipolar constraint (rows of pixels)
float rCC_TH
Maximum Ratio Between the two highest CC values.
float min_disp
Disparity limits, see also 'useDisparityLimits'.
double maxDepthThreshold
The maximum allowed depth for the matching.
void operator=(const TMatchingOptions &o)
void dumpToTextStream(mrpt::utils::CStream &out) const override
This method should clearly display all the contents of the structure in textual form,...
mrpt::math::CMatrixDouble33 F
TMatchingMethod
Method for propagating the feature's image coordinate uncertainty into 3D space.
@ mmSAD
Matching by sum of absolute differences of the image patches.
@ mmCorrelation
Matching by cross correlation of the image patches.
@ mmDescriptorORB
Matching by Hamming distance between ORB descriptors.
@ mmDescriptorSIFT
Matching by Euclidean distance between SIFT descriptors.
@ mmDescriptorSURF
Matching by Euclidean distance between SURF descriptors.
float EDD_RATIO
Boundary Ratio between the two lowest EDD.
bool useDisparityLimits
Whether or not use limits (min,max) for the disparity, see also 'min_disp, max_disp'.
float maxEDD_TH
Maximum Euclidean Distance Between SIFT Descriptors.
float minDCC_TH
Minimum Difference Between the Maximum Cross Correlation Values.
TMatchingOptions()
Intrinsic parameters of the stereo rig.
double SAD_RATIO
Boundary Ratio between the two highest SAD.
bool estimateDepth
Whether or not estimate the 3D position of the real features for the matches (only with parallelOptic...
bool addMatches
Whether or not to add the matches found into the input matched list (if false the input list will be ...
double maxSAD_TH
Minimum Euclidean Distance Between Sum of Absolute Differences.
bool enable_robust_1to1_match
Whether or not only permit matches that are consistent from left->right and right->left.
void loadFromConfigFile(const mrpt::utils::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini"-like file or memory-stored string list.
float minCC_TH
Minimum Value of the Cross Correlation.
TMatchingMethod matching_method
Matching method.
double maxORB_dist
Maximun distance between ORB descriptors.
bool operator==(const TMatchingOptions &o) const
bool useEpipolarRestriction
Whether or not take into account the epipolar restriction for finding correspondences.
float maxEDSD_TH
Maximum Euclidean Distance Between SURF Descriptors.
float EDSD_RATIO
Boundary Ratio between the two lowest SURF EDSD.
Struct containing the options when matching multi-resolution SIFT-like descriptors.
bool useDepthFilter
Whether or not use the filter based on the depth test.
TMultiResDescMatchOptions(const bool &_useOriFilter, const double &_oriThreshold, const bool &_useDepthFilter, const double &_th, const double &_th2, const unsigned int &_lwscl1, const unsigned int &_lwscl2, const unsigned int &_hwscl1, const unsigned int &_hwscl2, const int &_searchAreaSize, const int &_lsth, const int &_tsth, const int &_minFeaturesToFind, const int &_minFeaturesToBeLost)
void saveToConfigFile(mrpt::utils::CConfigFileBase &cfg, const std::string §ion) const override
This method saves the options to a ".ini"-like file or memory-stored string list.
uint32_t timesSeenThreshold
The minimum number of frames for a certain feature to be considered stable.
void dumpToTextStream(mrpt::utils::CStream &out) const override
This method should clearly display all the contents of the structure in textual form,...
uint32_t lastSeenThreshold
The allowed number of frames since a certain feature was seen for the last time.
uint32_t highScl1
The highest scales in the two features to be taken into account in the matching process.
double matchingThreshold
The absolute threshold in descriptor distance for considering a match.
uint32_t minFeaturesToBeLost
The minimum number of features allowed in the system to not be considered to be lost.
double oriThreshold
The threshold for the orientation test.
uint32_t lowScl1
The lowest scales in the two features to be taken into account in the matching process.
void loadFromConfigFile(const mrpt::utils::CConfigFileBase &cfg, const std::string §ion) override
Load all the params from a config source, in the format described in saveToConfigFile()
double matchingRatioThreshold
The ratio between the two lowest distances threshold for considering a match.
TMultiResDescMatchOptions()
Default constructor.
uint32_t searchAreaSize
Size of the squared area where to search for a match.
uint32_t minFeaturesToFind
The minimum number of features allowed in the system.
bool useOriFilter
Whether or not use the filter based on orientation test.
Struct containing the options when computing the multi-resolution SIFT-like descriptors.
uint32_t basePSize
The size of the base patch.
bool computeHashCoeffs
Whether or not compute the coefficients for mantaining a HASH table of descriptors (for relocalizatio...
void loadFromConfigFile(const mrpt::utils::CConfigFileBase &source, const std::string §ion) override
Load all the params from a config source, in the format described in saveToConfigFile()
bool computeDepth
Whether or not to compute the depth of the feature.
double cropValue
The SIFT-like descriptor is cropped at this value during normalization.
TMultiResDescOptions()
Default constructor.
bool blurImage
Whether or not to blur the image previously to compute the descriptors.
TMultiResDescOptions(const unsigned int &_basePSize, const std::vector< double > &_scales, const unsigned int &_comLScl, const unsigned int &_comHScl, const double &_sg1, const double &_sg2, const double &_sg3, const bool &_computeDepth, const bool _blurImage, const double &_fx, const double &_cx, const double &_cy, const double &_baseline, const bool &_computeHashCoeffs, const double &_cropValue)
uint32_t comLScl
The subset of scales for which to compute the descriptors.
void saveToConfigFile(mrpt::utils::CConfigFileBase &cfg, const std::string §ion) const override
This method saves the options to a ".ini"-like file or memory-stored string list.
std::vector< double > scales
The set of scales relatives to the base patch.
double fx
Intrinsic stereo pair parameters for computing the depth of the feature.
double sg1
The sigmas for the Gaussian kernels.
void dumpToTextStream(mrpt::utils::CStream &out) const override
This method should clearly display all the contents of the structure in textual form,...
Struct containing the output after matching multi-resolution SIFT-like descriptors.
std::vector< double > firstListDistance
Contains the distances between the descriptors.
std::vector< int > firstListCorrespondences
Contains the indexes within the second list corresponding to the first one.
std::vector< int > firstListFoundScales
Contains the scales of the first list where the correspondence was found.
TMultiResMatchingOutput()
std::vector< int > secondListCorrespondences
Contains the indexes within the first list corresponding to the second one.
A structure for storing a 3D ROI.
One relative feature observation entry, used with some relative bundle-adjustment functions.
mrpt::vision::TCameraPoseID id_frame_base
The ID of the camera frame which is the coordinate reference of pos.
mrpt::math::TPoint3D pos
The (x,y,z) location of the feature, wrt to the camera frame id_frame_base.
TRelativeFeaturePos(const mrpt::vision::TCameraPoseID _id_frame_base, const mrpt::math::TPoint3D &_pos)
A complete sequence of observations of features from different camera frames (poses).
void compressIDs(std::map< TCameraPoseID, TCameraPoseID > *old2new_camIDs=nullptr, std::map< TLandmarkID, TLandmarkID > *old2new_lmIDs=nullptr)
Rearrange frame and feature IDs such as they start at 0 and there are no gaps.
TSequenceFeatureObservations(const TSequenceFeatureObservations &o)
void loadFromTextFile(const std::string &filName)
Load from a text file, in the format described in saveToTextFile.
TSequenceFeatureObservations(size_t size)
bool saveAsSBAFiles(const TLandmarkLocationsVec &pts, const std::string &pts_file, const TFramePosesVec &cams, const std::string &cams_file) const
Save the list of observations + the point locations + the camera frame poses to a pair of files in th...
void decimateCameraFrames(const size_t decimate_ratio)
Remove all but one out of decimate_ratio camera frame IDs from the list (eg: from N camera pose IDs a...
std::vector< TFeatureObservation > BASE
size_t removeFewObservedFeatures(size_t minNumObservations=3)
Remove all those features that don't have a minimum number of observations from different camera fram...
void saveToTextFile(const std::string &filName, bool skipFirstCommentLine=false) const
Saves all entries to a text file, with each line having this format: #FRAME_ID #FEAT_ID #PIXEL_X #PIX...
TSequenceFeatureObservations()
Parameters associated to a stereo system.
float factor_a
Alpha factor for SUT.
float maxZ
Maximum allowed distance.
TUnc_Prop_Method uncPropagation
float factor_k
K factor for the UT.
float factor_b
Beta factor for the SUT.
TUnc_Prop_Method
Method for propagating the feature's image coordinate uncertainty into 3D space.
@ Prop_Linear
Linear propagation of the uncertainty.
@ Prop_SUT
Uncertainty propagation through the Scaled Unscented Transformation.
@ Prop_UT
Uncertainty propagation through the Unscented Transformation.
float stdDisp
Standard deviation of the error in disparity computation.
mrpt::math::CMatrixDouble33 K
Intrinsic parameters.
void dumpToTextStream(mrpt::utils::CStream &out) const override
This method should clearly display all the contents of the structure in textual form,...
mrpt::math::CMatrixDouble33 F
Stereo Fundamental matrix.
float maxY
Maximum allowed height.
void loadFromConfigFile(const mrpt::utils::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini"-like file or memory-stored string list.
float minZ
Maximum allowed distance.
float stdPixel
Standard deviation of the error in feature detection.
TStereoSystemParams()
Initilization of default parameters.