The mapping part of visual SLAM can indeed be divided into two components: photometric and geometric. These components leverage different types of information to build and refine the map.
Photometric Mapping
Photometric mapping involves using the intensity and color information from images to aid in the mapping process. This typically includes feature extraction, matching, and visual descriptor management.
Relevant Parts in ORB-SLAM3:
-
Feature Extraction:
- ORB features (Oriented FAST and Rotated BRIEF) are extracted from the images.
- Classes and Methods:
ORBextractor
,Frame::ExtractORB
.
-
Feature Matching:
- Matching features between frames to find correspondences.
- Classes and Methods:
ORBmatcher
,Frame::SearchByProjection
,Frame::SearchForInitialization
.
-
Descriptors Storage:
- Storage and comparison of ORB descriptors for keyframes and map points.
- Classes and Methods:
KeyFrame::mDescriptors
,Frame::mDescriptors
.
-
KeyFrame Database:
- Storing and retrieving keyframes based on visual information for loop closure and relocalization.
- Classes and Methods:
KeyFrameDatabase
,KeyFrameDatabase::add
,KeyFrameDatabase::DetectLoopCandidates
.
Geometric Mapping
Geometric mapping involves the spatial and structural aspects of the environment. It includes the representation and optimization of the 3D structure of the environment, such as the positions of keyframes and map points.
Relevant Parts in ORB-SLAM3:
-
MapPoints:
- 3D points in the environment that are observed by multiple keyframes.
- Classes and Methods:
MapPoint
,Map::mspMapPoints
.
-
KeyFrames:
- Keyframes that store the camera poses and observed map points.
- Classes and Methods:
KeyFrame
,Map::mspKeyFrames
.
-
Pose Graph Optimization:
- Optimizing the poses of keyframes and the positions of map points to minimize reprojection error.
- Classes and Methods:
Optimizer::PoseOptimization
,Optimizer::GlobalBundleAdjustment
.
-
Covisibility Graph:
- Graph representing the co-visibility relationship between keyframes.
- Classes and Methods:
KeyFrame::mConnectedKeyFrameWeights
,KeyFrame::AddConnection
.
-
Spanning Tree:
- A minimum spanning tree used for efficient loop closures.
- Classes and Methods:
KeyFrame::mspChildrens
,KeyFrame::mpParent
.
-
Local Mapping:
- Managing the addition of new keyframes and map points, and performing local bundle adjustment.
- Classes and Methods:
LocalMapping
,LocalMapping::Run
,LocalMapping::ProcessNewKeyFrame
.
Summary
By dividing the mapping tasks into photometric and geometric components, we can better understand the specific roles and data types involved in ORB-SLAM3:
- Photometric Mapping: Deals with image-based data such as features and descriptors to establish correspondences and build the map incrementally.
- Geometric Mapping: Focuses on the 3D spatial relationships, optimizing the structure of the map, and maintaining the integrity of the overall map.
Here is a breakdown of the relevant parts in ORB-SLAM3:
Photometric Mapping | Geometric Mapping |
---|---|
ORB Extractor | MapPoints |
Feature Matching | KeyFrames |
Descriptors Storage | Pose Graph Optimization |
KeyFrame Database | Covisibility Graph |
Spanning Tree | |
Local Mapping |
By understanding these components, developers can more effectively optimize and enhance the mapping processes in ORB-SLAM3, potentially integrating advanced data structures like VDB for the geometric component to improve efficiency and scalability.