maplab虽然使用的是binary的描述符。但是比较的时候,其实是把高维的binary(512 bytes)描述符映射到低维的float(10×4 bytes)描述符。这样大大压缩了描述符的存储大小,不知道在比较方面会不会加快,毕竟维度下降了很多。
这个binary到float的映射是通过一个学习出来的变换矩阵实现的,所以每次运行前需要加载这个变换矩阵。
ProjectedImage是在映射描述符的任务中使用的数据交换接口。其中包含了一张二维图片的所有信息,同时还有到landmark的连接关系。也就是track信息。
- int64_t timestamp_nanoseconds
- 因为是一帧的信息,所以可以对应这一帧的时间戳
- vi_map::VisualFrameIdentifier keyframe_id
- 这一帧的一个id
- vi_map::VisualFrameIdentifier中包含了graph的vertex_id和多相机的frame_id
- DatasetId dataset_id
- 对应mission_id
- Eigen::MatrixXf projected_descriptors
- 每个kp对应的float描述符
- Eigen::Matrix2Xd measurements
- 每个kp对应的uv值
- std::vector<PointLandmarkId> landmarks
- 每个kp对应的landmark,是vi::map的landmarks_id
- 这里是个vector,说明允许一个kp对应多个landmark