bugfix in getCloseKeyframes(). fixes #52
This commit is contained in:
+11
-11
@@ -103,23 +103,23 @@ void Map::addKeyframe(FramePtr new_keyframe)
|
|||||||
keyframes_.push_back(new_keyframe);
|
keyframes_.push_back(new_keyframe);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Map::getCloseKeyframes(const FramePtr& frame, list< pair<FramePtr,double> >& close_kfs) const
|
void Map::getCloseKeyframes(
|
||||||
|
const FramePtr& frame,
|
||||||
|
std::list< std::pair<FramePtr,double> >& close_kfs) const
|
||||||
{
|
{
|
||||||
const Vector3d frame_pos(frame->pos());
|
for(auto kf : keyframes_)
|
||||||
for(auto it_kf=keyframes_.begin(), ite_kf=keyframes_.end(); it_kf!=ite_kf; ++it_kf)
|
|
||||||
{
|
{
|
||||||
// check first if Point is visible in the Keyframe, use therefore KeyPoints
|
// check if kf has overlaping field of view with frame, use therefore KeyPoints
|
||||||
for(auto it=(*it_kf)->key_pts_.begin(), ite=(*it_kf)->key_pts_.end(); it!=ite; ++it)
|
for(auto keypoint : kf->key_pts_)
|
||||||
{
|
{
|
||||||
if(*it == NULL)
|
if(keypoint == nullptr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
assert((*it)->point != NULL);
|
if(frame->isVisible(keypoint->point->pos_))
|
||||||
|
|
||||||
if((*it_kf)->isVisible((*it)->point->pos_))
|
|
||||||
{
|
{
|
||||||
close_kfs.push_back(pair<FramePtr,double>(*it_kf,
|
close_kfs.push_back(
|
||||||
(frame->T_f_w_.translation()-(*it_kf)->T_f_w_.translation()).norm()));
|
std::make_pair(
|
||||||
|
kf, (frame->T_f_w_.translation()-kf->T_f_w_.translation()).norm()));
|
||||||
break; // this keyframe has an overlapping field of view -> add to close_kfs
|
break; // this keyframe has an overlapping field of view -> add to close_kfs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user