Fixed Stereo parameters not used for OdometryBOW. Saving parameters in Memory and Feature2D to re-use old parameters when underlaying algorithm strategies are re-created.

This commit is contained in:
matlabbe
2016-01-04 11:41:13 -05:00
parent 51300dde06
commit b578fc732e
11 changed files with 37 additions and 26 deletions

View File

@@ -354,6 +354,8 @@ Feature2D::~Feature2D()
}
void Feature2D::parseParameters(const ParametersMap & parameters)
{
uInsert(parameters_, parameters);
Parameters::parse(parameters, Parameters::kKpMaxFeatures(), maxFeatures_);
Parameters::parse(parameters, Parameters::kKpMaxDepth(), _wordsMaxDepth);
Parameters::parse(parameters, Parameters::kKpMinDepth(), _wordsMinDepth);
@@ -399,7 +401,7 @@ void Feature2D::parseParameters(const ParametersMap & parameters)
if((iter=parameters.find(Parameters::kStereoOpticalFlow())) != parameters.end())
{
delete _stereo;
_stereo = Stereo::create(parameters);
_stereo = Stereo::create(parameters_);
}
else
{

View File

@@ -377,6 +377,8 @@ Memory::~Memory()
void Memory::parseParameters(const ParametersMap & parameters)
{
uInsert(parameters_, parameters);
UDEBUG("");
ParametersMap::const_iterator iter;
@@ -438,7 +440,7 @@ void Memory::parseParameters(const ParametersMap & parameters)
_feature2D = 0;
}
_feature2D = Feature2D::create(detectorStrategy, parameters);
_feature2D = Feature2D::create(detectorStrategy, parameters_);
}
else if(_feature2D)
{

View File

@@ -96,14 +96,8 @@ OdometryBOW::OdometryBOW(const ParametersMap & parameters) :
for(ParametersMap::const_iterator iter=parameters.begin(); iter!=parameters.end(); ++iter)
{
std::string group = uSplit(iter->first, '/').front();
if(group.compare("SURF") == 0 ||
group.compare("SIFT") == 0 ||
group.compare("BRIEF") == 0 ||
group.compare("FAST") == 0 ||
group.compare("ORB") == 0 ||
group.compare("FREAK") == 0 ||
group.compare("GFTT") == 0 ||
group.compare("BRISK") == 0)
if(Parameters::isFeatureParameter(iter->first) ||
group.compare("Stereo") == 0)
{
customParameters.insert(*iter);
}

View File

@@ -60,15 +60,6 @@ RegistrationVis::RegistrationVis(const ParametersMap & parameters) :
_flowMaxLevel(Parameters::defaultVisCorFlowMaxLevel())
{
_featureParameters = Parameters::getDefaultParameters();
uInsert(_featureParameters, ParametersPair(Parameters::kMemIncrementalMemory(), "true")); // make sure it is incremental
uInsert(_featureParameters, ParametersPair(Parameters::kMemRehearsalSimilarity(), "1.0")); // desactivate rehearsal
uInsert(_featureParameters, ParametersPair(Parameters::kMemBinDataKept(), "false"));
uInsert(_featureParameters, ParametersPair(Parameters::kMemSTMSize(), "0"));
uInsert(_featureParameters, ParametersPair(Parameters::kKpIncrementalDictionary(), "true")); // make sure it is incremental
uInsert(_featureParameters, ParametersPair(Parameters::kKpNewWordsComparedTogether(), "false"));
uInsert(_featureParameters, ParametersPair(Parameters::kKpBadSignRatio(), "0"));
uInsert(_featureParameters, ParametersPair(Parameters::kMemGenerateIds(), "true"));
uInsert(_featureParameters, ParametersPair(Parameters::kKpNNStrategy(), _featureParameters.at(Parameters::kVisCorNNType())));
uInsert(_featureParameters, ParametersPair(Parameters::kKpNndrRatio(), _featureParameters.at(Parameters::kVisCorNNDR())));
uInsert(_featureParameters, ParametersPair(Parameters::kKpDetectorStrategy(), _featureParameters.at(Parameters::kVisFeatureType())));

View File

@@ -362,11 +362,13 @@ void Rtabmap::close(bool databaseSaved)
}
_databasePath.clear();
parseParameters(Parameters::getDefaultParameters()); // reset to default parameters
_modifiedParameters.clear();
_parameters.clear();
}
void Rtabmap::parseParameters(const ParametersMap & parameters)
{
uInsert(_parameters, parameters);
ULOGGER_DEBUG("");
ParametersMap::const_iterator iter;
if((iter=parameters.find(Parameters::kRtabmapWorkingDirectory())) != parameters.end())
@@ -481,7 +483,7 @@ void Rtabmap::parseParameters(const ParametersMap & parameters)
for(ParametersMap::const_iterator iter = parameters.begin(); iter!=parameters.end(); ++iter)
{
uInsert(_modifiedParameters, ParametersPair(iter->first, iter->second));
uInsert(_parameters, ParametersPair(iter->first, iter->second));
}
}
@@ -776,7 +778,7 @@ void Rtabmap::resetMemory()
if(_memory)
{
_memory->init(_databasePath, true, _modifiedParameters, true);
_memory->init(_databasePath, true, _parameters, true);
if(_memory->getLastWorkingSignature())
{
optimizeCurrentMap(_memory->getLastWorkingSignature()->id(), false, _optimizedPoses, &_constraints);

View File

@@ -225,7 +225,6 @@ std::vector<cv::Point2f> calcStereoCorrespondences(
{
if(level>0)
{
UDEBUG("");
tmpMaxDisparity = tmpMinDisparity+(bestScoreIndex+1)*(1<<level);
tmpMaxDisparity+=tmpMaxDisparity%level;
if(tmpMaxDisparity > maxDisparity)
@@ -247,7 +246,6 @@ std::vector<cv::Point2f> calcStereoCorrespondences(
if(bestScoreIndex>=0)
{
UDEBUG("");
//subpixel refining
int d = -(tmpMinDisparity+bestScoreIndex);