An interface for RANSAC model fitting.
More...
#include <RANSACModel.hpp>
|
| RANSACModel () |
| Constructor.
|
|
virtual MODEL | make (const std::vector< DATA > &data) const |
| Creates a new model of this type using provided data.
|
|
virtual | ~RANSACModel () |
| Destructor.
|
|
bool | operator< (const MODEL &model) const |
| 'Worse than' operator. More...
|
|
bool | operator> (const MODEL &model) const |
| 'Better than' operator. More...
|
|
virtual double | fitError (const DATA &sample) const =0 |
| Calculates the fitting error of a sample.
|
|
virtual bool | belongsTo (const DATA &sample, double threshold) const |
| Check whether a sample belongs to the model. More...
|
|
virtual bool | invalid () const =0 |
| Checks whether the model is invalid.
|
|
virtual double | refit (const std::vector< DATA > &data)=0 |
| Recalculates the model based on provided samples. More...
|
|
virtual int | getMinReqData () const =0 |
| Returns the number of samples required to create the model. More...
|
|
virtual bool | same (const MODEL &model, double threshold) const =0 |
| Tests whether the model is same to a threshold of another model. More...
|
|
size_t | getNumberOfInliers () const |
| Get the number of inliers.
|
|
double | getQuality () const |
| Get the model quality. More...
|
|
void | setQuality (double quality) |
| Set the model quality. More...
|
|
std::vector< DATA > & | getData () |
| Access data.
|
|
const std::vector< DATA > & | getData () const |
| Access data.
|
|
std::vector< size_t > | getInlierIndices () const |
| Get the vector of inlier indices. More...
|
|
|
static std::vector< MODEL > | findModels (const std::vector< DATA > &data, int maxIterations, int dataRequired, double dataThreshold, double modelThreshold) |
| Find models fitting a set of observations. More...
|
|
static MODEL | bestModel (const std::vector< MODEL > &models) |
| Select the model with the largest number of inliers. More...
|
|
static MODEL | likelyModel (const std::vector< MODEL > &models) |
| Select a model randomly, with a chance based on the number of inliers. More...
|
|
|
std::vector< DATA > | _data |
|
double | _quality |
|
std::vector< size_t > | _indices |
|
template<class MODEL, class DATA>
class rwlibs::algorithms::RANSACModel< MODEL, DATA >
An interface for RANSAC model fitting.
- Todo:
- A model needs to remember the indices of inliers from the set of data...
◆ belongsTo()
virtual bool belongsTo |
( |
const DATA & |
sample, |
|
|
double |
threshold |
|
) |
| const |
|
inlinevirtual |
Check whether a sample belongs to the model.
Returns true when the sample is within a threshold distance of the model.
◆ bestModel()
static MODEL bestModel |
( |
const std::vector< MODEL > & |
models | ) |
|
|
inlinestatic |
Select the model with the largest number of inliers.
In case of ties, pick the model with better quality.
◆ findModels()
static std::vector<MODEL> findModels |
( |
const std::vector< DATA > & |
data, |
|
|
int |
maxIterations, |
|
|
int |
dataRequired, |
|
|
double |
dataThreshold, |
|
|
double |
modelThreshold |
|
) |
| |
|
inlinestatic |
Find models fitting a set of observations.
Function performs maxIterations iterations and finds a number of initial models. The models are then filtered, and those within a distance of modelThreshold are merged together.
- Parameters
-
data | [in] set of data points to find a model for |
maxIterations | [in] number of iterations to perform |
dataRequired | [in] a number of data points required to fit into model to consider it plausible |
dataThreshold | [in] a threshold for fitting error of a data point |
modelThreshold | [in] a difference between models neccesary to consider them different |
- Returns
- a vector of fitted models
◆ getInlierIndices()
std::vector<size_t> getInlierIndices |
( |
| ) |
const |
|
inline |
Get the vector of inlier indices.
- Returns
- a vector of indices of inliers in the data vector supplied to findModels function.
◆ getMinReqData()
virtual int getMinReqData |
( |
| ) |
const |
|
pure virtual |
◆ getQuality()
double getQuality |
( |
| ) |
const |
|
inline |
Get the model quality.
The model quality is a sum of fitting errors for all its inliers.
◆ likelyModel()
static MODEL likelyModel |
( |
const std::vector< MODEL > & |
models | ) |
|
|
inlinestatic |
Select a model randomly, with a chance based on the number of inliers.
Given a vector of models {model1(45 inliers), model2(30 inliers), model3(20 inliers), model4(5 inliers)}, it will pick:
- model1 - 45% chance,
- model2 - 30% chance,
- model3 - 20% chance,
- model4 - 5% chance
◆ operator<()
bool operator< |
( |
const MODEL & |
model | ) |
const |
|
inline |
'Worse than' operator.
Used for sorting. Compares the number of inliers the models have. In case of ties, compares quality.
◆ operator>()
bool operator> |
( |
const MODEL & |
model | ) |
const |
|
inline |
'Better than' operator.
Used for sorting. Compares the number of inliers the models have. In case of ties, compares quality.
◆ refit()
virtual double refit |
( |
const std::vector< DATA > & |
data | ) |
|
|
pure virtual |
Recalculates the model based on provided samples.
- Returns
- Fit error on a set of provided samples.
◆ same()
virtual bool same |
( |
const MODEL & |
model, |
|
|
double |
threshold |
|
) |
| const |
|
pure virtual |
◆ setQuality()
void setQuality |
( |
double |
quality | ) |
|
|
inline |
Set the model quality.
- Parameters
-
quality | [in] fitting error of the model |
The documentation for this class was generated from the following file: