mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-01 17:10:26 +08:00
Memory: ignore reextract features when registration is not visual
This commit is contained in:
@@ -2146,13 +2146,13 @@ Transform Memory::computeTransform(
|
|||||||
|
|
||||||
// make sure we have all data needed
|
// make sure we have all data needed
|
||||||
// load binary data from database if not in RAM (if image is already here, scan and userData should be or they are null)
|
// load binary data from database if not in RAM (if image is already here, scan and userData should be or they are null)
|
||||||
if(((_reextractLoopClosureFeatures || _registrationPipeline->isImageRequired()) && fromS.sensorData().imageCompressed().empty()) ||
|
if(((_reextractLoopClosureFeatures && _registrationPipeline->isImageRequired()) && fromS.sensorData().imageCompressed().empty()) ||
|
||||||
(_registrationPipeline->isScanRequired() && fromS.sensorData().imageCompressed().empty() && fromS.sensorData().laserScanCompressed().empty()) ||
|
(_registrationPipeline->isScanRequired() && fromS.sensorData().imageCompressed().empty() && fromS.sensorData().laserScanCompressed().empty()) ||
|
||||||
(_registrationPipeline->isUserDataRequired() && fromS.sensorData().imageCompressed().empty() && fromS.sensorData().userDataCompressed().empty()))
|
(_registrationPipeline->isUserDataRequired() && fromS.sensorData().imageCompressed().empty() && fromS.sensorData().userDataCompressed().empty()))
|
||||||
{
|
{
|
||||||
fromS.sensorData() = getNodeData(fromS.id());
|
fromS.sensorData() = getNodeData(fromS.id());
|
||||||
}
|
}
|
||||||
if(((_reextractLoopClosureFeatures || _registrationPipeline->isImageRequired()) && toS.sensorData().imageCompressed().empty()) ||
|
if(((_reextractLoopClosureFeatures && _registrationPipeline->isImageRequired()) && toS.sensorData().imageCompressed().empty()) ||
|
||||||
(_registrationPipeline->isScanRequired() && toS.sensorData().imageCompressed().empty() && toS.sensorData().laserScanCompressed().empty()) ||
|
(_registrationPipeline->isScanRequired() && toS.sensorData().imageCompressed().empty() && toS.sensorData().laserScanCompressed().empty()) ||
|
||||||
(_registrationPipeline->isUserDataRequired() && toS.sensorData().imageCompressed().empty() && toS.sensorData().userDataCompressed().empty()))
|
(_registrationPipeline->isUserDataRequired() && toS.sensorData().imageCompressed().empty() && toS.sensorData().userDataCompressed().empty()))
|
||||||
{
|
{
|
||||||
@@ -2161,27 +2161,27 @@ Transform Memory::computeTransform(
|
|||||||
// uncompress only what we need
|
// uncompress only what we need
|
||||||
cv::Mat imgBuf, depthBuf, laserBuf, userBuf;
|
cv::Mat imgBuf, depthBuf, laserBuf, userBuf;
|
||||||
fromS.sensorData().uncompressData(
|
fromS.sensorData().uncompressData(
|
||||||
(_reextractLoopClosureFeatures || _registrationPipeline->isImageRequired())?&imgBuf:0,
|
(_reextractLoopClosureFeatures && _registrationPipeline->isImageRequired())?&imgBuf:0,
|
||||||
(_reextractLoopClosureFeatures || _registrationPipeline->isImageRequired())?&depthBuf:0,
|
(_reextractLoopClosureFeatures && _registrationPipeline->isImageRequired())?&depthBuf:0,
|
||||||
_registrationPipeline->isScanRequired()?&laserBuf:0,
|
_registrationPipeline->isScanRequired()?&laserBuf:0,
|
||||||
_registrationPipeline->isUserDataRequired()?&userBuf:0);
|
_registrationPipeline->isUserDataRequired()?&userBuf:0);
|
||||||
toS.sensorData().uncompressData(
|
toS.sensorData().uncompressData(
|
||||||
(_reextractLoopClosureFeatures || _registrationPipeline->isImageRequired())?&imgBuf:0,
|
(_reextractLoopClosureFeatures && _registrationPipeline->isImageRequired())?&imgBuf:0,
|
||||||
(_reextractLoopClosureFeatures || _registrationPipeline->isImageRequired())?&depthBuf:0,
|
(_reextractLoopClosureFeatures && _registrationPipeline->isImageRequired())?&depthBuf:0,
|
||||||
_registrationPipeline->isScanRequired()?&laserBuf:0,
|
_registrationPipeline->isScanRequired()?&laserBuf:0,
|
||||||
_registrationPipeline->isUserDataRequired()?&userBuf:0);
|
_registrationPipeline->isUserDataRequired()?&userBuf:0);
|
||||||
|
|
||||||
|
|
||||||
// compute transform fromId -> toId
|
// compute transform fromId -> toId
|
||||||
std::vector<int> inliersV;
|
std::vector<int> inliersV;
|
||||||
if(_reextractLoopClosureFeatures ||
|
if((_reextractLoopClosureFeatures && _registrationPipeline->isImageRequired()) ||
|
||||||
(fromS.getWords().size() && toS.getWords().size()) ||
|
(fromS.getWords().size() && toS.getWords().size()) ||
|
||||||
(!guess.isNull() && !_registrationPipeline->isImageRequired()))
|
(!guess.isNull() && !_registrationPipeline->isImageRequired()))
|
||||||
{
|
{
|
||||||
Signature tmpFrom = fromS;
|
Signature tmpFrom = fromS;
|
||||||
Signature tmpTo = toS;
|
Signature tmpTo = toS;
|
||||||
|
|
||||||
if(_reextractLoopClosureFeatures)
|
if(_reextractLoopClosureFeatures && _registrationPipeline->isImageRequired())
|
||||||
{
|
{
|
||||||
UDEBUG("");
|
UDEBUG("");
|
||||||
tmpFrom.setWords(std::multimap<int, cv::KeyPoint>());
|
tmpFrom.setWords(std::multimap<int, cv::KeyPoint>());
|
||||||
|
|||||||
Reference in New Issue
Block a user