Main MRPT website > C++ reference for MRPT 1.4.0
List of all members | Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Static Protected Member Functions | Friends
mrpt::vision::CFeature Class Reference

Detailed Description

A generic 2D feature from an image, extracted with CFeatureExtraction Each feature may have one or more descriptors (see descriptors), in addition to an image patch.

The (Euclidean) distance between descriptors in a pair of features can be computed with descriptorDistanceTo, while the similarity of the patches is given by patchCorrelationTo.

See also
CFeatureList, TSimpleFeature, TSimpleFeatureList

Definition at line 53 of file CFeature.h.

#include <mrpt/vision/CFeature.h>

Inheritance diagram for mrpt::vision::CFeature:
Inheritance graph

Classes

struct  TDescriptors
 All the possible descriptors this feature may have. More...
 

Public Member Functions

void * operator new (size_t size)
 
void * operator new[] (size_t size)
 
void operator delete (void *ptr) throw ()
 
void operator delete[] (void *ptr) throw ()
 
void operator delete (void *memory, void *ptr) throw ()
 
void * operator new (size_t size, const std::nothrow_t &) throw ()
 
void operator delete (void *ptr, const std::nothrow_t &) throw ()
 
bool isPointFeature () const
 Return false only for Blob detectors (SIFT, SURF) More...
 
bool getFirstDescriptorAsMatrix (mrpt::math::CMatrixFloat &desc) const
 Return the first found descriptor, as a matrix. More...
 
float patchCorrelationTo (const CFeature &oFeature) const
 Computes the normalized cross-correlation between the patches of this and another feature (normalized in the range [0,1], such as 0=best, 1=worst). More...
 
float descriptorDistanceTo (const CFeature &oFeature, TDescriptorType descriptorToUse=descAny, bool normalize_distances=true) const
 Computes the Euclidean Distance between this feature's and other feature's descriptors, using the given descriptor or the first present one. More...
 
float descriptorSIFTDistanceTo (const CFeature &oFeature, bool normalize_distances=true) const
 Computes the Euclidean Distance between "this" and the "other" descriptors. More...
 
float descriptorSURFDistanceTo (const CFeature &oFeature, bool normalize_distances=true) const
 Computes the Euclidean Distance between "this" and the "other" descriptors. More...
 
float descriptorSpinImgDistanceTo (const CFeature &oFeature, bool normalize_distances=true) const
 Computes the Euclidean Distance between "this" and the "other" descriptors. More...
 
float descriptorPolarImgDistanceTo (const CFeature &oFeature, float &minDistAngle, bool normalize_distances=true) const
 Returns the minimum Euclidean Distance between "this" and the "other" polar image descriptor, for the best shift in orientation. More...
 
float descriptorLogPolarImgDistanceTo (const CFeature &oFeature, float &minDistAngle, bool normalize_distances=true) const
 Returns the minimum Euclidean Distance between "this" and the "other" log-polar image descriptor, for the best shift in orientation. More...
 
uint8_t descriptorORBDistanceTo (const CFeature &oFeature) const
 Computes the Hamming distance "this" and the "other" descriptor ORB descriptor. More...
 
void saveToTextFile (const std::string &filename, bool APPEND=false)
 Save the feature to a text file in this format: "%% Dump of mrpt::vision::CFeatureList. Each line format is:\n" "%% ID TYPE X Y ORIENTATION SCALE TRACK_STATUS RESPONSE HAS_SIFT [SIFT] HAS_SURF [SURF] HAS_MULTI [MULTI_i] HAS_ORB [ORB]" "%% |---------------------- feature ------------------| |---------------------- descriptors ------------------------|" "%% with:\n" "%% TYPE : The used detector: 0:KLT, 1: Harris, 2: BCD, 3: SIFT, 4: SURF, 5: Beacon, 6: FAST, 7: ORB\n" "%% HAS_* : 1 if a descriptor of that type is associated to the feature." "%% SIFT : Present if HAS_SIFT=1: N DESC_0 ... DESC_N-1" "%% SURF : Present if HAS_SURF=1: N DESC_0 ... DESC_N-1" "%% MULTI : Present if HAS_MULTI=1: SCALE ORI N DESC_0 ... DESC_N-1" "%% ORB : Present if HAS_ORB=1: DESC_0 ... More...
 
TFeatureType get_type () const
 Get the type of the feature. More...
 
void dumpToTextStream (mrpt::utils::CStream &out) const
 Dump feature information into a text stream. More...
 
void dumpToConsole () const
 
 CFeature ()
 Constructor. More...
 
virtual ~CFeature ()
 Virtual destructor. More...
 
virtual mxArraywriteToMatlab () const
 Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class. More...
 
mrpt::utils::CObjectPtr duplicateGetSmartPtr () const
 Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer). More...
 
CObject * clone () const
 Cloning interface for smart pointers. More...
 

Static Public Member Functions

static void * operator new (size_t size, void *ptr)
 

Public Attributes

float x
 
float y
 Coordinates in the image. More...
 
TFeatureID ID
 ID of the feature. More...
 
mrpt::utils::CImage patch
 A patch of the image surrounding the feature. More...
 
uint16_t patchSize
 Size of the patch (patchSize x patchSize) (it must be an odd number) More...
 
TFeatureType type
 Type of the feature: featNotDefined, featSIFT, featKLT, featHarris, featSURF, featBeacon. More...
 
TFeatureTrackStatus track_status
 Status of the feature tracking process (old name: KLT_status) More...
 
float response
 A measure of the "goodness" of the feature (old name: KLT_val) More...
 
float orientation
 Main orientation of the feature. More...
 
float scale
 Feature scale into the scale space. More...
 
uint8_t user_flags
 A field for any other flags needed by the user (this has not a predefined meaning) More...
 
uint16_t nTimesSeen
 Number of frames it has been seen in a sequence of images. More...
 
uint16_t nTimesNotSeen
 Number of frames it has not been seen in a sequence of images. More...
 
uint16_t nTimesLastSeen
 Number of frames since it was seen for the last time. More...
 
double depth
 The estimated depth in 3D of this feature wrt the camera in the current frame. More...
 
double initialDepth
 The estimated depth in 3D of this feature wrt the camera that took its image. More...
 
mrpt::math::TPoint3D p3D
 The estimated 3D point of this feature wrt its camera. More...
 
std::deque< double > multiScales
 A set of scales where the multi-resolution descriptor has been computed. More...
 
std::deque< std::vector< double > > multiOrientations
 A vector of main orientations (there is a vector of orientations for each scale) More...
 
std::deque< std::vector< std::vector< int32_t > > > multiHashCoeffs
 A set of vectors containing the coefficients for a HASH table of descriptors. More...
 
struct VISION_IMPEXP mrpt::vision::CFeature::TDescriptors descriptors
 

Static Public Attributes

static const mrpt::utils::TRuntimeClassId classCObject
 
RTTI stuff <br>
static const mrpt::utils::TRuntimeClassId classCSerializable
 

Protected Member Functions

CSerializable virtual methods
void writeToStream (mrpt::utils::CStream &out, int *getVersion) const
 Introduces a pure virtual method responsible for writing to a CStream. More...
 
void readFromStream (mrpt::utils::CStream &in, int version)
 Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori. More...
 

Static Protected Member Functions

static float internal_distanceBetweenPolarImages (const mrpt::math::CMatrix &desc1, const mrpt::math::CMatrix &desc2, float &minDistAngle, bool normalize_distances, bool dont_shift_angle)
 Internal function used by "descriptorLogPolarImgDistanceTo" and "descriptorPolarImgDistanceTo". More...
 

Friends

class CFeatureList
 
class CMatchedFeatureList
 

RTTI stuff <br>

typedef CFeaturePtr SmartPtr
 
static mrpt::utils::CLASSINIT _init_CFeature
 
static mrpt::utils::TRuntimeClassId classCFeature
 
static const mrpt::utils::TRuntimeClassIdclassinfo
 
static const mrpt::utils::TRuntimeClassId_GetBaseClass ()
 
virtual const mrpt::utils::TRuntimeClassIdGetRuntimeClass () const
 Returns information about the class of an object in runtime. More...
 
virtual mrpt::utils::CObjectduplicate () const
 Returns a copy of the object, indepently of its class. More...
 
static mrpt::utils::CObjectCreateObject ()
 
static CFeaturePtr Create ()
 

Member Typedef Documentation

◆ SmartPtr

typedef CFeaturePtr mrpt::vision::CFeature::SmartPtr

A typedef for the associated smart pointer

Definition at line 58 of file CFeature.h.

Constructor & Destructor Documentation

◆ CFeature()

mrpt::vision::CFeature::CFeature ( )

Constructor.

◆ ~CFeature()

virtual mrpt::vision::CFeature::~CFeature ( )
inlinevirtual

Virtual destructor.

Definition at line 188 of file CFeature.h.

Member Function Documentation

◆ _GetBaseClass()

static const mrpt::utils::TRuntimeClassId* mrpt::vision::CFeature::_GetBaseClass ( )
staticprotected

◆ clone()

CObject* mrpt::utils::CObject::clone ( ) const
inlineinherited

Cloning interface for smart pointers.

Definition at line 139 of file CObject.h.

◆ Create()

static CFeaturePtr mrpt::vision::CFeature::Create ( )
static

◆ CreateObject()

static mrpt::utils::CObject* mrpt::vision::CFeature::CreateObject ( )
static

◆ descriptorDistanceTo()

float mrpt::vision::CFeature::descriptorDistanceTo ( const CFeature oFeature,
TDescriptorType  descriptorToUse = descAny,
bool  normalize_distances = true 
) const

Computes the Euclidean Distance between this feature's and other feature's descriptors, using the given descriptor or the first present one.

Note
If descriptorToUse is not descAny and that descriptor is not present in one of the features, an exception will be raised.
See also
patchCorrelationTo

◆ descriptorLogPolarImgDistanceTo()

float mrpt::vision::CFeature::descriptorLogPolarImgDistanceTo ( const CFeature oFeature,
float &  minDistAngle,
bool  normalize_distances = true 
) const

Returns the minimum Euclidean Distance between "this" and the "other" log-polar image descriptor, for the best shift in orientation.

Parameters
oFeatureThe other feature to compare with.
minDistAngleThe placeholder for the angle at which the smallest distance is found.
Returns
The distance for the best orientation (minimum distance).

◆ descriptorORBDistanceTo()

uint8_t mrpt::vision::CFeature::descriptorORBDistanceTo ( const CFeature oFeature) const

Computes the Hamming distance "this" and the "other" descriptor ORB descriptor.

◆ descriptorPolarImgDistanceTo()

float mrpt::vision::CFeature::descriptorPolarImgDistanceTo ( const CFeature oFeature,
float &  minDistAngle,
bool  normalize_distances = true 
) const

Returns the minimum Euclidean Distance between "this" and the "other" polar image descriptor, for the best shift in orientation.

Parameters
oFeatureThe other feature to compare with.
minDistAngleThe placeholder for the angle at which the smallest distance is found.
Returns
The distance for the best orientation (minimum distance).

◆ descriptorSIFTDistanceTo()

float mrpt::vision::CFeature::descriptorSIFTDistanceTo ( const CFeature oFeature,
bool  normalize_distances = true 
) const

Computes the Euclidean Distance between "this" and the "other" descriptors.

◆ descriptorSpinImgDistanceTo()

float mrpt::vision::CFeature::descriptorSpinImgDistanceTo ( const CFeature oFeature,
bool  normalize_distances = true 
) const

Computes the Euclidean Distance between "this" and the "other" descriptors.

◆ descriptorSURFDistanceTo()

float mrpt::vision::CFeature::descriptorSURFDistanceTo ( const CFeature oFeature,
bool  normalize_distances = true 
) const

Computes the Euclidean Distance between "this" and the "other" descriptors.

◆ dumpToConsole()

void mrpt::vision::CFeature::dumpToConsole ( ) const

◆ dumpToTextStream()

void mrpt::vision::CFeature::dumpToTextStream ( mrpt::utils::CStream out) const

Dump feature information into a text stream.

◆ duplicate()

virtual mrpt::utils::CObject* mrpt::vision::CFeature::duplicate ( ) const
virtual

Returns a copy of the object, indepently of its class.

Implements mrpt::utils::CObject.

◆ duplicateGetSmartPtr()

mrpt::utils::CObjectPtr mrpt::utils::CObject::duplicateGetSmartPtr ( ) const
inlineinherited

Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).

Definition at line 136 of file CObject.h.

◆ get_type()

TFeatureType mrpt::vision::CFeature::get_type ( ) const
inline

Get the type of the feature.

Definition at line 176 of file CFeature.h.

◆ getFirstDescriptorAsMatrix()

bool mrpt::vision::CFeature::getFirstDescriptorAsMatrix ( mrpt::math::CMatrixFloat desc) const

Return the first found descriptor, as a matrix.

Returns
false on error, i.e. there is no valid descriptor.

◆ GetRuntimeClass()

virtual const mrpt::utils::TRuntimeClassId* mrpt::vision::CFeature::GetRuntimeClass ( ) const
virtual

Returns information about the class of an object in runtime.

Reimplemented from mrpt::utils::CSerializable.

◆ internal_distanceBetweenPolarImages()

static float mrpt::vision::CFeature::internal_distanceBetweenPolarImages ( const mrpt::math::CMatrix desc1,
const mrpt::math::CMatrix desc2,
float &  minDistAngle,
bool  normalize_distances,
bool  dont_shift_angle 
)
staticprotected

Internal function used by "descriptorLogPolarImgDistanceTo" and "descriptorPolarImgDistanceTo".

◆ isPointFeature()

bool mrpt::vision::CFeature::isPointFeature ( ) const

Return false only for Blob detectors (SIFT, SURF)

◆ operator delete() [1/3]

void mrpt::vision::CFeature::operator delete ( void *  memory,
void *  ptr 
)
throw (
)
inline

Definition at line 58 of file CFeature.h.

◆ operator delete() [2/3]

void mrpt::vision::CFeature::operator delete ( void *  ptr)
throw (
)
inline

Definition at line 58 of file CFeature.h.

◆ operator delete() [3/3]

void mrpt::vision::CFeature::operator delete ( void *  ptr,
const std::nothrow_t &   
)
throw (
)
inline

Definition at line 58 of file CFeature.h.

◆ operator delete[]()

void mrpt::vision::CFeature::operator delete[] ( void *  ptr)
throw (
)
inline

Definition at line 58 of file CFeature.h.

◆ operator new() [1/3]

void* mrpt::vision::CFeature::operator new ( size_t  size)
inline

Definition at line 58 of file CFeature.h.

◆ operator new() [2/3]

void* mrpt::vision::CFeature::operator new ( size_t  size,
const std::nothrow_t &   
)
throw (
)
inline

Definition at line 58 of file CFeature.h.

◆ operator new() [3/3]

static void* mrpt::vision::CFeature::operator new ( size_t  size,
void *  ptr 
)
inlinestatic

Definition at line 58 of file CFeature.h.

◆ operator new[]()

void* mrpt::vision::CFeature::operator new[] ( size_t  size)
inline

Definition at line 58 of file CFeature.h.

◆ patchCorrelationTo()

float mrpt::vision::CFeature::patchCorrelationTo ( const CFeature oFeature) const

Computes the normalized cross-correlation between the patches of this and another feature (normalized in the range [0,1], such as 0=best, 1=worst).

Note
If this or the other features does not have patches or they are of different sizes, an exception will be raised.
See also
descriptorDistanceTo

◆ readFromStream()

void mrpt::vision::CFeature::readFromStream ( mrpt::utils::CStream in,
int  version 
)
protectedvirtual

Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori.

Parameters
inThe input binary stream where the object data must read from.
versionThe version of the object stored in the stream: use this version number in your code to know how to read the incoming data.
Exceptions
std::exceptionOn any error, see CStream::ReadBuffer
See also
CStream

Implements mrpt::utils::CSerializable.

◆ saveToTextFile()

void mrpt::vision::CFeature::saveToTextFile ( const std::string &  filename,
bool  APPEND = false 
)

Save the feature to a text file in this format: "%% Dump of mrpt::vision::CFeatureList. Each line format is:\n" "%% ID TYPE X Y ORIENTATION SCALE TRACK_STATUS RESPONSE HAS_SIFT [SIFT] HAS_SURF [SURF] HAS_MULTI [MULTI_i] HAS_ORB [ORB]" "%% |---------------------- feature ------------------| |---------------------- descriptors ------------------------|" "%% with:\n" "%% TYPE : The used detector: 0:KLT, 1: Harris, 2: BCD, 3: SIFT, 4: SURF, 5: Beacon, 6: FAST, 7: ORB\n" "%% HAS_* : 1 if a descriptor of that type is associated to the feature." "%% SIFT : Present if HAS_SIFT=1: N DESC_0 ... DESC_N-1" "%% SURF : Present if HAS_SURF=1: N DESC_0 ... DESC_N-1" "%% MULTI : Present if HAS_MULTI=1: SCALE ORI N DESC_0 ... DESC_N-1" "%% ORB : Present if HAS_ORB=1: DESC_0 ...

DESC_31 "%%--------------------------------------------------------------------------&mdash;\n");

◆ writeToMatlab()

virtual mxArray* mrpt::utils::CSerializable::writeToMatlab ( ) const
inlinevirtualinherited

Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class.

Returns
A new mxArray (caller is responsible of memory freeing) or NULL is class does not support conversion to MATLAB.

Definition at line 79 of file CSerializable.h.

◆ writeToStream()

void mrpt::vision::CFeature::writeToStream ( mrpt::utils::CStream out,
int *  getVersion 
) const
protectedvirtual

Introduces a pure virtual method responsible for writing to a CStream.

This can not be used directly be users, instead use "stream << object;" for writing it to a stream.

Parameters
outThe output binary stream where object must be dumped.
getVersionIf NULL, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data.
Exceptions
std::exceptionOn any error, see CStream::WriteBuffer
See also
CStream

Implements mrpt::utils::CSerializable.

Friends And Related Function Documentation

◆ CFeatureList

friend class CFeatureList
friend

Definition at line 55 of file CFeature.h.

◆ CMatchedFeatureList

friend class CMatchedFeatureList
friend

Definition at line 56 of file CFeature.h.

Member Data Documentation

◆ _init_CFeature

mrpt::utils::CLASSINIT mrpt::vision::CFeature::_init_CFeature
staticprotected

Definition at line 58 of file CFeature.h.

◆ classCFeature

mrpt::utils::TRuntimeClassId mrpt::vision::CFeature::classCFeature
static

Definition at line 58 of file CFeature.h.

◆ classCObject

const mrpt::utils::TRuntimeClassId mrpt::utils::CObject::classCObject
staticinherited

Definition at line 124 of file CObject.h.

◆ classCSerializable

const mrpt::utils::TRuntimeClassId mrpt::utils::CSerializable::classCSerializable
staticinherited

Definition at line 42 of file CSerializable.h.

◆ classinfo

const mrpt::utils::TRuntimeClassId* mrpt::vision::CFeature::classinfo
static

Definition at line 58 of file CFeature.h.

◆ depth

double mrpt::vision::CFeature::depth

The estimated depth in 3D of this feature wrt the camera in the current frame.

Definition at line 75 of file CFeature.h.

◆ descriptors

struct VISION_IMPEXP mrpt::vision::CFeature::TDescriptors mrpt::vision::CFeature::descriptors

◆ ID

TFeatureID mrpt::vision::CFeature::ID

ID of the feature.

Definition at line 62 of file CFeature.h.

◆ initialDepth

double mrpt::vision::CFeature::initialDepth

The estimated depth in 3D of this feature wrt the camera that took its image.

Definition at line 76 of file CFeature.h.

◆ multiHashCoeffs

std::deque<std::vector<std::vector<int32_t> > > mrpt::vision::CFeature::multiHashCoeffs

A set of vectors containing the coefficients for a HASH table of descriptors.

Definition at line 80 of file CFeature.h.

◆ multiOrientations

std::deque<std::vector<double> > mrpt::vision::CFeature::multiOrientations

A vector of main orientations (there is a vector of orientations for each scale)

Definition at line 79 of file CFeature.h.

◆ multiScales

std::deque<double> mrpt::vision::CFeature::multiScales

A set of scales where the multi-resolution descriptor has been computed.

Definition at line 78 of file CFeature.h.

◆ nTimesLastSeen

uint16_t mrpt::vision::CFeature::nTimesLastSeen

Number of frames since it was seen for the last time.

Definition at line 73 of file CFeature.h.

◆ nTimesNotSeen

uint16_t mrpt::vision::CFeature::nTimesNotSeen

Number of frames it has not been seen in a sequence of images.

Definition at line 72 of file CFeature.h.

◆ nTimesSeen

uint16_t mrpt::vision::CFeature::nTimesSeen

Number of frames it has been seen in a sequence of images.

Definition at line 71 of file CFeature.h.

◆ orientation

float mrpt::vision::CFeature::orientation

Main orientation of the feature.

Definition at line 68 of file CFeature.h.

◆ p3D

mrpt::math::TPoint3D mrpt::vision::CFeature::p3D

The estimated 3D point of this feature wrt its camera.

Definition at line 77 of file CFeature.h.

◆ patch

mrpt::utils::CImage mrpt::vision::CFeature::patch

A patch of the image surrounding the feature.

Definition at line 63 of file CFeature.h.

◆ patchSize

uint16_t mrpt::vision::CFeature::patchSize

Size of the patch (patchSize x patchSize) (it must be an odd number)

Definition at line 64 of file CFeature.h.

◆ response

float mrpt::vision::CFeature::response

A measure of the "goodness" of the feature (old name: KLT_val)

Definition at line 67 of file CFeature.h.

◆ scale

float mrpt::vision::CFeature::scale

Feature scale into the scale space.

Definition at line 69 of file CFeature.h.

◆ track_status

TFeatureTrackStatus mrpt::vision::CFeature::track_status

Status of the feature tracking process (old name: KLT_status)

Definition at line 66 of file CFeature.h.

◆ type

TFeatureType mrpt::vision::CFeature::type

Type of the feature: featNotDefined, featSIFT, featKLT, featHarris, featSURF, featBeacon.

Definition at line 65 of file CFeature.h.

◆ user_flags

uint8_t mrpt::vision::CFeature::user_flags

A field for any other flags needed by the user (this has not a predefined meaning)

Definition at line 70 of file CFeature.h.

◆ x

float mrpt::vision::CFeature::x

Definition at line 61 of file CFeature.h.

◆ y

float mrpt::vision::CFeature::y

Coordinates in the image.

Definition at line 61 of file CFeature.h.




Page generated by Doxygen 1.9.1 for MRPT 1.4.0 SVN: at Mon Apr 18 04:08:57 UTC 2022