CN111928861B - 地图构建方法及装置 - Google Patents
地图构建方法及装置 Download PDFInfo
- Publication number
- CN111928861B CN111928861B CN202010791507.9A CN202010791507A CN111928861B CN 111928861 B CN111928861 B CN 111928861B CN 202010791507 A CN202010791507 A CN 202010791507A CN 111928861 B CN111928861 B CN 111928861B
- Authority
- CN
- China
- Prior art keywords
- image frame
- map
- information
- line
- current image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000010276 construction Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 50
- 239000013598 vector Substances 0.000 claims description 72
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 239000011159 matrix material Substances 0.000 description 22
- 230000001133 acceleration Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000000007 visual effect Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000033001 locomotion Effects 0.000 description 8
- 238000005259 measurement Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/26—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
- G01C21/28—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
- G01C21/30—Map- or contour-matching
- G01C21/32—Structuring or formatting of map data
Landscapes
- Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Automation & Control Theory (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Image Analysis (AREA)
Abstract
本申请公开了一种地图构建方法及装置,属于计算机视觉技术领域。所述方法包括:确定当前图像帧的特征点信息、特征线信息和结构线信息。基于当前图像帧的结构线信息和参考图像帧的结构线信息,确定当前图像帧对应的第一姿态信息。基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,确定当前图像帧对应的至少包括第二姿态信息的位姿。若第一姿态信息与第二姿态信息之间的误差大于第二阈值,确定当前图像帧为关键图像帧,基于第一姿态信息和位姿,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。如此,可以提高定位的准确性。
Description
技术领域
本申请涉及计算机视觉技术领域,特别涉及一种地图构建方法及装置。
背景技术
SLAM(simultaneous localization and mapping,实时定位与地图构建)算法的目的是让包括图像采集设备的智能移动设备在未知环境中可以实时构建环境的全局地图并且对自身进行定位。相关技术中,图像采集设备可以采集图像,然后提取当前图像帧中的特征点信息和特征线信息,基于特征点信息和特征线信息、以及上一个图像帧对应的地图点信息和地图线信息,确定当前图像帧对应的位姿,即位置和姿态。若当前图像帧为关键图像帧,可以在全局地图中新建当前图像帧对应的地图点和地图线,直到确定图像采集设备到达了之前经过的位置,可以对全局地图中所有关键图像帧的姿态信息、对应的地图点位置和地图线位置进行更新,基于更新后的地图点位置和地图线位置在全局地图中重新确定地图点和地图线。
但仅仅基于特征点信息和特征线信息确定的位姿可能不准确,会产生定位误差,若长时间未对全局地图中的地图点位置和地图线位置进行更新,基于有定位误差的全局地图继续进行定位,会导致定位误差不断累积,降低定位的准确性。
发明内容
本申请提供了一种地图构建方法及装置,可以解决相关技术定位准确性低的问题。所述技术方案如下:
一方面,提供了一种地图构建方法,所述方法包括:
确定当前图像帧的特征点信息、特征线信息和结构线信息;
基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,所述参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且所述参考图像帧的图像采集时间位于当前图像帧的图像采集时间之前;
基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,所述位姿至少包括第二姿态信息,所述当前图像帧对应的位姿指的是采集所述当前图像帧时图像采集设备的位姿;
若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,确定所述全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。
在本申请一种可能的实现方式中,所述当前图像帧的结构线包括三个方向的结构线,所述基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,包括:
基于所述当前图像帧的结构线信息,确定所述当前图像帧中每个方向的结构线在所述当前图像帧对应的相机坐标系下的方向向量,得到所述当前图像帧中三个方向的结构线的方向向量;
基于所述参考图像帧的结构线信息,获取所述参考图像帧中三个方向的结构线的方向向量;
获取所述参考图像帧对应的第四姿态信息;
基于所述当前图像帧中结构线的方向向量和所述参考图像帧中结构线的方向向量、以及所述第四姿态信息,确定所述当前图像帧对应的第一姿态信息。
在本申请一种可能的实现方式中,所述基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,包括:
基于所述上一个图像帧的位姿,确定所述当前图像帧的初始位姿;
确定所述当前图像帧的特征点信息指示的特征点和特征线信息指示的特征线,以及确定所述上一个图像帧对应的地图点信息指示的地图点和地图线信息指示的地图线;
基于所述当前图像帧的初始位姿,确定所述上一个图像帧对应的地图点在所述当前图像帧中的第一投影点,以及所述上一个图像帧对应的地图线在所述当前图像帧中的第一投影线;
确定所述当前图像帧的特征点中与所述第一投影点匹配的观测点,以及确定所述当前图像帧的特征线中与所述第一投影线匹配的观测线;
基于所述初始位姿、所述第一投影点、所述观测点、所述第一投影线、所述观测线、以及所述第一姿态信息,确定所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述基于所述初始位姿、所述第一投影点、所述观测点、所述第一投影线、所述观测线、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,包括:
基于所述第一投影点和所述观测点,确定所述当前图像帧对应的点的第一重投影误差;
基于所述第一投影线和所述观测线,确定所述当前图像帧对应的线的第二重投影误差;
基于所述当前图像帧中三个方向的结构线的方向向量、所述参考图像帧中三个方向的结构线的方向向量、所述第四姿态信息、以及所述第一姿态信息,确定所述当前图像帧对应的第一结构线约束值;
基于所述点的第一重投影误差、所述线的第二重投影误差和所述第一结构线约束值,对所述初始位姿进行迭代运算,得到所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,确定所述全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线,包括:
基于所述当前图像帧中除所述观测点之外的特征点和所述位姿,在所述全局地图中构建所述当前图像帧对应的地图点,以及基于所述当前图像帧中除所述观测线之外的特征线和所述位姿,在所述全局地图中构建所述当前图像帧对应的地图线;
基于所述第一姿态信息,在所述全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定所述全局地图中所有关键图像帧的第三姿态信息。
在本申请一种可能的实现方式中,所述基于所述第一姿态信息,在所述全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定所述全局地图中所有关键图像帧的第三姿态信息,包括:
获取所述全局地图中除所述当前图像帧之外的其他关键图像帧对应的点的第三重投影误差、线的第四重投影误差和第二结构线约束值;
基于所述第一姿态信息、所述点的第三重投影误差、所述线的第四重投影误差、所述第二结构线约束值、所述点的第一重投影误差、所述线的第二重投影误差、以及所述第一结构线约束值,对所述全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行迭代运算,得到更新后的所述全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置;
基于所述更新后的所述全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置,在所述全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
在本申请一种可能的实现方式中,所述基于所述初始位姿、所述第一投影点、所述观测点、所述第一投影线、所述观测线、以及所述第一姿态信息,确定所述当前图像帧对应的位姿之后,还包括:
获取共视图像帧对应的地图点信息和地图线信息,所述共视图像帧是指对应的地图点中与所述当前图像帧对应的地图点相同的地图点的第一数量和对应的地图线中与所述当前图像帧对应的地图线相同的地图线的第二数量之和大于第一数量阈值的图像帧;
基于所述当前图像帧的特征点信息和特征线信息、所述共视图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,对所述当前图像帧对应的位姿继续进行迭代运算,重新得到所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述方法还包括:
若所述第一姿态信息与所述第二姿态信息之间的误差不大于所述第二阈值,响应于所述当前图像帧为关键图像帧,在所述全局地图中构建所述当前图像帧对应的地图点和地图线,以及重新确定所述当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线,所述共视关键图像帧是指对应的地图点中与所述当前图像帧对应的地图点相同的地图点的第三数量和对应的地图线中与所述当前图像帧对应的地图线相同的地图线的第四数量之和大于第二数量阈值的关键图像帧。
在本申请一种可能的实现方式中,所述响应于所述当前图像帧为关键图像帧,包括:
基于所述当前图像帧对应的位姿,确定所述上一个图像帧对应的地图点在所述当前图像帧中的第二投影点,以及确定所述上一个图像帧对应的地图线在所述当前图像帧中的第二投影线;
基于所述第二投影点和所述观测点,确定所述当前图像帧对应的点的第五重投影误差,以及基于所述第二投影线和所述观测线,确定所述当前图像帧对应的线的第六重投影误差;
删除所述当前图像帧的观测点中第五重投影误差大于第一误差阈值的观测点,以及删除所述当前图像帧的观测线中第六重投影误差大于第二误差阈值的观测线;
确定所述当前图像帧中执行删除操作后的观测点与观测线的总数量;
若所述总数量小于第三阈值,确定所述当前图像帧为关键图像帧。
在本申请一种可能的实现方式中,所述方法还包括:
若所述当前图像帧为关键图像帧,且基于所述当前图像帧确定所述图像采集设备到达历史位置处,获取与所述当前图像帧对应的历史关键图像帧,所述历史关键图像帧的特征点信息与所述当前图像帧的特征点信息的相似度大于第一相似度阈值,且所述历史关键图像帧的特征线信息与所述当前图像帧的特征线信息的相似度大于第二相似度阈值;
获取所述历史关键图像帧对应的地图点信息和地图线信息,以及所述全局地图中除所述当前图像帧和所述历史关键图像帧之外的其他关键图像帧对应的点的第七重投影误差、线的第八重投影误差和第三结构线约束值;
基于所述当前图像帧的特征点信息和特征线信息、所述历史关键图像帧对应的地图点信息和地图线信息、所述当前图像帧的结构线信息、所述参考图像帧的结构线信息、所述点的第七重投影误差、所述线的第八重投影误差、以及所述第三结构线约束值,在所述全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
另一方面,提供了一种地图构建装置,所述装置包括:
图像采集设备,用于获取当前图像帧;
处理器,用于确定所述当前图像帧的特征点信息、特征线信息和结构线信息;基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,所述参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且所述参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前;基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,所述位姿至少包括第二姿态信息,所述当前图像帧对应的位姿指的是采集所述当前图像帧时图像采集设备的位姿;若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。
在本申请一种可能的实现方式中,所述处理器用于:
所述当前图像帧的结构线包括三个方向的结构线,基于所述当前图像帧的结构线信息,确定所述当前图像帧中每个方向的结构线在所述当前图像帧对应的相机坐标系下的方向向量,得到所述当前图像帧中三个方向的结构线的方向向量;
基于所述参考图像帧的结构线信息,获取所述参考图像帧中三个方向的结构线的方向向量;
获取所述参考图像帧对应的第四姿态信息;
基于所述当前图像帧中结构线的方向向量和所述参考图像帧中结构线的方向向量、以及所述第四姿态信息,确定所述当前图像帧对应的第一姿态信息。
在本申请一种可能的实现方式中,所述装置还包括惯性测量单元IMU,
所述IMU用于获取智能移动设备的IMU测量数据;
所述处理器用于:
基于所述上一个图像帧的位姿,确定所述当前图像帧的初始位姿;
确定所述当前图像帧的特征点信息指示的特征点和特征线信息指示的特征线,以及确定所述上一个图像帧对应的地图点信息指示的地图点和地图线信息指示的地图线;
基于所述当前图像帧的初始位姿,确定所述上一个图像帧对应的地图点在所述当前图像帧中的第一投影点,以及所述上一个图像帧对应的地图线在所述当前图像帧中的第一投影线;
确定所述当前图像帧的特征点中与所述第一投影点匹配的观测点,以及确定所述当前图像帧的特征线中与所述第一投影线匹配的观测线;
基于所述初始位姿、所述第一投影点、所述观测点、所述第一投影线、所述观测线、以及所述第一姿态信息,确定所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述处理器用于:
基于所述第一投影点和所述观测点,确定所述当前图像帧对应的点的第一重投影误差;
基于所述第一投影线和所述观测线,确定所述当前图像帧对应的线的第二重投影误差;
基于所述当前图像帧中三个方向的结构线的方向向量、所述参考图像帧中三个方向的结构线的方向向量、所述第四姿态信息、以及所述第一姿态信息,确定所述当前图像帧对应的第一结构线约束值;
基于所述点的第一重投影误差、所述线的第二重投影误差和所述第一结构线约束值,对所述初始位姿进行迭代运算,得到所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述处理器用于:
基于所述当前图像帧中除所述观测点之外的特征点和所述位姿,在所述全局地图中构建所述当前图像帧对应的地图点,以及基于所述当前图像帧中除所述观测线之外的特征线和所述位姿,在所述全局地图中构建所述当前图像帧对应的地图线;
基于所述第一姿态信息,在所述全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定所述全局地图中所有关键图像帧的第三姿态信息。
在本申请一种可能的实现方式中,所述处理器用于:
获取所述全局地图中除所述当前图像帧之外的其他关键图像帧对应的点的第三重投影误差、线的第四重投影误差和第二结构线约束值;
基于所述第一姿态信息、所述点的第三重投影误差、所述线的第四重投影误差、所述第二结构线约束值、所述点的第一重投影误差、所述线的第二重投影误差、以及所述第一结构线约束值,对所述全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行迭代运算,得到更新后的所述全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置;
基于所述更新后的所述全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置,在所述全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
在本申请一种可能的实现方式中,所述处理器还用于:
获取共视图像帧对应的地图点信息和地图线信息,所述共视图像帧是指对应的地图点中与所述当前图像帧对应的地图点相同的地图点的第一数量和对应的地图线中与所述当前图像帧对应的地图线相同的地图线的第二数量之和大于第一数量阈值的图像帧;
基于所述当前图像帧的特征点信息和特征线信息、所述共视图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,对所述当前图像帧对应的位姿继续进行迭代运算,重新得到所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述装置还包括行进部件;
所述处理器用于通过所述行进部件控制所述智能移动设备移动。
在本申请一种可能的实现方式中,所述处理器还用于:
若所述第一姿态信息与所述第二姿态信息之间的误差不大于所述第二阈值,响应于所述当前图像帧为关键图像帧,在所述全局地图中构建所述当前图像帧对应的地图点和地图线,以及重新确定所述当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线,所述共视关键图像帧是指对应的地图点中与所述当前图像帧对应的地图点相同的地图点的第三数量和对应的地图线中与所述当前图像帧对应的地图线相同的地图线的第四数量之和大于第二数量阈值的关键图像帧。
在本申请一种可能的实现方式中,所述处理器还用于:
基于所述当前图像帧对应的位姿,确定所述上一个图像帧对应的地图点在所述当前图像帧中的第二投影点,以及确定所述上一个图像帧对应的地图线在所述当前图像帧中的第二投影线;
基于所述第二投影点和所述观测点,确定所述当前图像帧对应的点的第五重投影误差,以及基于所述第二投影线和所述观测线,确定所述当前图像帧对应的线的第六重投影误差;
删除所述当前图像帧的观测点中第五重投影误差大于第一误差阈值的观测点,以及删除所述当前图像帧的观测线中第六重投影误差大于第二误差阈值的观测线;
确定所述当前图像帧中执行删除操作后的观测点与观测线的总数量;
若所述总数量小于第三阈值,确定所述当前图像帧为关键图像帧。
在本申请一种可能的实现方式中,所述处理器还用于:
若所述当前图像帧为关键图像帧,且基于所述当前图像帧确定所述图像采集设备到达历史位置处,获取与所述当前图像帧对应的历史关键图像帧,所述历史关键图像帧的特征点信息与所述当前图像帧的特征点信息的相似度大于第一相似度阈值,且所述历史关键图像帧的特征线信息与所述当前图像帧的特征线信息的相似度大于第二相似度阈值;
获取所述历史关键图像帧对应的地图点信息和地图线信息,以及所述全局地图中除所述当前图像帧和所述历史关键图像帧之外的其他关键图像帧对应的点的第七重投影误差、线的第八重投影误差和第三结构线约束值;
基于所述当前图像帧的特征点信息和特征线信息、所述历史关键图像帧对应的地图点信息和地图线信息、所述当前图像帧的结构线信息、所述参考图像帧的结构线信息、所述点的第七重投影误差、所述线的第八重投影误差、以及所述第三结构线约束值,在所述全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
另一方面,提供了一种地图构建装置,所述装置包括:
第一确定模块,用于确定当前图像帧的特征点信息、特征线信息和结构线信息;
第二确定模块,用于基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,所述参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且所述参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前;
第三确定模块,用于基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,所述位姿至少包括第二姿态信息,所述当前图像帧对应的位姿指的是采集所述当前图像帧时图像采集设备的位姿;
第四确定模块,用于若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。
在本申请一种可能的实现方式中,所述第二确定模块用于:
所述当前图像帧的结构线包括三个方向的结构线,基于所述当前图像帧的结构线信息,确定所述当前图像帧中每个方向的结构线在所述当前图像帧对应的相机坐标系下的方向向量,得到所述当前图像帧中三个方向的结构线的方向向量;
基于所述参考图像帧的结构线信息,获取所述参考图像帧中三个方向的结构线的方向向量;
获取所述参考图像帧对应的第四姿态信息;
基于所述当前图像帧中结构线的方向向量和所述参考图像帧中结构线的方向向量、以及所述第四姿态信息,确定所述当前图像帧对应的第一姿态信息。
在本申请一种可能的实现方式中,所述第三确定模块用于:
基于所述上一个图像帧的位姿,确定所述当前图像帧的初始位姿;
确定所述当前图像帧的特征点信息指示的特征点和特征线信息指示的特征线,以及确定所述上一个图像帧对应的地图点信息指示的地图点和地图线信息指示的地图线;
基于所述当前图像帧的初始位姿,确定所述上一个图像帧对应的地图点在所述当前图像帧中的第一投影点,以及所述上一个图像帧对应的地图线在所述当前图像帧中的第一投影线;
确定所述当前图像帧的特征点中与所述第一投影点匹配的观测点,以及确定所述当前图像帧的特征线中与所述第一投影线匹配的观测线;
基于所述初始位姿、所述第一投影点、所述观测点、所述第一投影线、所述观测线、以及所述第一姿态信息,确定所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述第三确定模块用于:
基于所述第一投影点和所述观测点,确定所述当前图像帧对应的点的第一重投影误差;
基于所述第一投影线和所述观测线,确定所述当前图像帧对应的线的第二重投影误差;
基于所述当前图像帧中三个方向的结构线的方向向量、所述参考图像帧中三个方向的结构线的方向向量、所述第四姿态信息、以及所述第一姿态信息,确定所述当前图像帧对应的第一结构线约束值;
基于所述点的第一重投影误差、所述线的第二重投影误差和所述第一结构线约束值,对所述初始位姿进行迭代运算,得到所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述第四确定模块用于:
基于所述当前图像帧中除所述观测点之外的特征点和所述位姿,在所述全局地图中构建所述当前图像帧对应的地图点,以及基于所述当前图像帧中除所述观测线之外的特征线和所述位姿,在所述全局地图中构建所述当前图像帧对应的地图线;
基于所述第一姿态信息,在所述全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定所述全局地图中所有关键图像帧的第三姿态信息。
在本申请一种可能的实现方式中,所述第四确定模块用于:
获取所述全局地图中除所述当前图像帧之外的其他关键图像帧对应的点的第三重投影误差、线的第四重投影误差和第二结构线约束值;
基于所述第一姿态信息、所述点的第三重投影误差、所述线的第四重投影误差、所述第二结构线约束值、所述点的第一重投影误差、所述线的第二重投影误差、以及所述第一结构线约束值,对所述全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行迭代运算,得到更新后的所述全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置;
基于所述更新后的所述全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置,在所述全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
在本申请一种可能的实现方式中,所述第三确定模块还用于:
获取共视图像帧对应的地图点信息和地图线信息,所述共视图像帧是指对应的地图点中与所述当前图像帧对应的地图点相同的地图点的第一数量和对应的地图线中与所述当前图像帧对应的地图线相同的地图线的第二数量之和大于第一数量阈值的图像帧;
基于所述当前图像帧的特征点信息和特征线信息、所述共视图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,对所述当前图像帧对应的位姿继续进行迭代运算,重新得到所述当前图像帧对应的位姿。
在本申请一种可能的实现方式中,所述第四确定模块还用于:
若所述第一姿态信息与所述第二姿态信息之间的误差不大于所述第二阈值,响应于所述当前图像帧为关键图像帧,在所述全局地图中构建所述当前图像帧对应的地图点和地图线,以及重新确定所述当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线,所述共视关键图像帧是指对应的地图点中与所述当前图像帧对应的地图点相同的地图点的第三数量和对应的地图线中与所述当前图像帧对应的地图线相同的地图线的第四数量之和大于第二数量阈值的关键图像帧。
在本申请一种可能的实现方式中,所述第四确定模块还用于:
基于所述当前图像帧对应的位姿,确定所述上一个图像帧对应的地图点在所述当前图像帧中的第二投影点,以及确定所述上一个图像帧对应的地图线在所述当前图像帧中的第二投影线;
基于所述第二投影点和所述观测点,确定所述当前图像帧对应的点的第五重投影误差,以及基于所述第二投影线和所述观测线,确定所述当前图像帧对应的线的第六重投影误差;
删除所述当前图像帧的观测点中第五重投影误差大于第一误差阈值的观测点,以及删除所述当前图像帧的观测线中第六重投影误差大于第二误差阈值的观测线;
确定所述当前图像帧中执行删除操作后的观测点与观测线的总数量;
若所述总数量小于第三阈值,确定所述当前图像帧为关键图像帧。
在本申请一种可能的实现方式中,所述第四确定模块还用于:
若所述当前图像帧为关键图像帧,且基于所述当前图像帧确定所述图像采集设备到达历史位置处,获取与所述当前图像帧对应的历史关键图像帧,所述历史关键图像帧的特征点信息与所述当前图像帧的特征点信息的相似度大于第一相似度阈值,且所述历史关键图像帧的特征线信息与所述当前图像帧的特征线信息的相似度大于第二相似度阈值;
获取所述历史关键图像帧对应的地图点信息和地图线信息,以及所述全局地图中除所述当前图像帧和所述历史关键图像帧之外的其他关键图像帧对应的点的第七重投影误差、线的第八重投影误差和第三结构线约束值;
基于所述当前图像帧的特征点信息和特征线信息、所述历史关键图像帧对应的地图点信息和地图线信息、所述当前图像帧的结构线信息、所述参考图像帧的结构线信息、所述点的第七重投影误差、所述线的第八重投影误差、以及所述第三结构线约束值,在所述全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
另一方面,提供了一种地图构建系统,所述系统包括:
图像采集设备,用于采集当前图像帧;
智能移动设备,用于获取所述图像采集设备采集的当前图像帧,确定所述当前图像帧的特征点信息、特征线信息和结构线信息;基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,所述参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且所述参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前;基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,所述位姿至少包括第二姿态信息,所述当前图像帧对应的位姿指的是采集所述当前图像帧时图像采集设备的位姿;若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。
另一方面,提供了一种智能移动设备,所述智能移动设备包括处理器、通信接口、存储器和通信总线,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,所述存储器用于存放计算机程序,所述处理器用于执行所述存储器上所存放的程序,以实现上述所述的地图构建方法的步骤。
另一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的地图构建方法的步骤。
另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的地图构建方法的步骤。
本申请提供的技术方案至少可以带来以下有益效果:
确定当前图像帧的特征点信息、特征线信息和结构线信息,然后基于当前图像帧的结构线信息和参考图像帧的结构线信息,可以确定当前图像帧对应的第一姿态信息。参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前,并且参考图像帧包括三个方向的结构线、且包括的结构线的总数量大于第一阈值,从参考图像帧提取的结构线信息可能会比较准确,因此确定的当前图像帧对应的第一姿态信息会比较准确。再基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,可以确定当前图像帧对应的位姿,即采集当前图像帧时图像采集设备的位姿,该位姿至少包括第二姿态信息。如果第一姿态信息与第二姿态信息之间的误差大于第二阈值,可以认为根据视觉跟踪确定的第二姿态信息与直接基于结构线信息确定的第一姿态信息存在偏差,将当前图像帧确定为关键图像帧,然后基于位姿和更加准确的第一姿态信息,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。如此,在确定当前图像帧对应的第二姿态信息存在视觉偏差时,可以直接基于更加准确的第一姿态信息对全局地图中所有关键图像帧的姿态信息、地图点和地图线进行更新,从而降低定位误差,以便于后续基于全局地图进行定位时,可以提高定位的准确性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种执行主体的结构示意图;
图2是根据一示例性实施例示出的一种地图构建方法的流程图;
图3是根据一示例性实施例示出的一种第一投影线和观测线的示意图;
图4是根据一示例性实施例示出的一种结构线的示意图;
图5是根据另一示例性实施例示出的一种地图构建方法的流程图;
图6是根据一示例性实施例示出的一种地图构建装置的结构示意图;
图7是根据另一示例性实施例示出的一种地图构建装置的结构示意图;
图8是根据一示例性实施例示出的一种智能移动设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例提供的地图构建方法进行详细的解释说明之前,先对本申请实施例提供的地图构建方法的执行主体进行介绍。
本申请实施例提供的地图构建方法可以由智能移动设备来执行,作为一种示例,智能移动设备可以为智能机器人、自动驾驶车辆等。
作为一种示例,参见图1,该智能移动设备可以包括图像采集设备101和处理器102。图像采集设备101可以用于采集图像。处理器102用于对采集到的图像进行处理,基于图像构建环境的全局地图,并基于全局地图对图像采集设备进行定位,以实现对智能移动设备的定位。智能移动设备还可以包括IMU(Inertial measurement unit,惯性测量单元)103,IMU可以包括三个单轴的加速度计和三个单轴的陀螺,加速度计用于检测智能移动设备的加速度,而陀螺用于检测智能移动设备的角速度,将智能移动设备的加速度和角速度确定为智能移动设备的IMU测量数据,处理器可以基于该IMU测量数据确定智能移动设备的姿态,即确定图像采集设备的姿态。另外,智能移动设备还可以包括行进部件104,该行进部件104可以为车轮等,该处理器102可以通过控制该行进部件104控制该智能移动设备移动。
本领域技术人员应能理解上述智能移动设备仅为举例,其他现有的或今后可能出现的智能移动设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
介绍完本申请实施例的执行主体后,接下来对本申请实施例提供的地图构建方法进行详细的解释说明。
图2是根据一示例性实施例示出的一种地图构建方法的流程图,该方法应用于上述智能移动设备中。请参考图2,该方法可以包括如下步骤:
步骤201:确定当前图像帧的特征点信息、特征线信息和结构线信息。
其中,结构线是从特征线中筛选出来的在物理空间中三个方向上互相垂直的线段簇,一个方向的线段簇称为一个方向的结构线,每个方向的结构线对应一个灭点。其中,灭点是两条或多条代表平行线向远处地平线延伸直至聚合的交点。
作为一种示例,特征点信息可以包括相应的特征点在当前图像帧中的二维坐标和相应的特征点的描述子,特征点的描述子可以用于描述该特征点的属性。
作为一种示例,特征线信息可以包括相应的特征线的两个端点分别在当前图像帧中的二维坐标和相应的特征线的描述子。特征线的描述子可以用于描述该特征线的属性。
作为一种示例,结构线信息可以包括相应方向的结构线在当前图像帧中的灭点的二维坐标。
在实施中,可以通过ORB(Oriented FAST and Rotated BRIEF,快速特征点提取和描述)算法提取当前图像帧中的特征点,可以提取到多个特征点,并且可以确定每个特征点的二维坐标,即每个特征点的特征点信息。
在实施中,可以通过LSD(Line Segment Detector,直线提取)算法提取当前图像帧中的特征线,可以提取到多个特征线,并且可以确定每个特征线的两个端点的二维坐标,即每个特征线的特征线信息。
在实施中,可以采用灭点提取算法,从多个特征线中提取结构线,并确定每个方向的结构线在当前图像帧中的灭点,以及确定灭点在当前图像帧中的二维坐标。作为一种示例,在提取结构线的过程中,可能只能提取到当前图像帧中两个方向的结构线,也可能可以提取到当前图像帧中三个方向的结构线。
示例性地,灭点提取算法可以为2LINE-ES算法等。
步骤202:基于当前图像帧的结构线信息和参考图像帧的结构线信息,确定当前图像帧对应的第一姿态信息,参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且参考图像帧的图像采集时间位于当前图像帧的图像采集时间之前。
其中,第一阈值可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
其中,当前图像帧对应的第一姿态信息可以用于表示采集当前图像帧时图像采集设备的姿态,或者可以称为图像采集设备的旋转量。示例性地,第一姿态信息可以用3×3的矩阵来表示。
在实施中,基于当前图像帧的结构线信息和参考图像帧的结构线信息,确定当前图像帧对应的第一姿态信息的具体实现可以包括:基于当前图像帧的结构线信息,确定当前图像帧中每个方向的结构线在当前图像帧对应的相机坐标系下的方向向量,得到当前图像帧中三个方向的结构线的方向向量。基于参考图像帧的结构线信息,获取参考图像帧中三个方向的结构线的方向向量。获取参考图像帧对应的第四姿态信息。基于当前图像帧中结构线的方向向量和参考图像帧中结构线的方向向量、以及第四姿态信息,确定当前图像帧对应的第一姿态信息。
也就是说,可以先根据当前图像帧结构线信息确定当前图像帧中三个方向的结构线的方向向量,并根据参考图像帧的结构线信息确定参考图像帧中三个方向的结构线的方向向量,并获取之前确定的参考图像帧对应的第四姿态信息,然后基于同一个方向上当前图像帧中结构线的方向向量、参考图像帧中结构线的方向向量和第四姿态信息,确定当前图像帧对应的第一姿态信息。
在一些实施例中,当前图像帧的结构线信息包括三个方向的结构线在当前图像帧中的灭点的二维坐标,可以基于图像采集设备的内参矩阵,将每个方向的灭点的二维坐标转换为相机坐标系下的三维坐标,并对每个方向的灭点的三维坐标进行归一化处理,可以得到每个方向的灭点的归一化三维坐标,将每个方向的灭点的归一化三维坐标确定为对应方向的结构线的方向向量,可以得到当前图像帧中三个方向的结构线的方向向量。
作为一种示例,若从当前图像帧中提取到两个方向的结构线,可以基于上述方法确定两个方向的结构线的方向向量,然后根据确定的两个方向的结构线的方向向量的叉乘得到第三个方向的结构线的方向向量,从而获得当前图像帧中三个方向的结构线的方向向量。
在一些实施例中,对于参考图像帧来说,参考图像帧已经提取过结构线,可以直接根据结构线信息获取与结构线信息对应的三个方向的结构线的方向向量。
在一些实施例中,基于当前图像帧中结构线的方向向量和参考图像帧中结构线的方向向量、以及第四姿态信息,确定当前图像帧对应的第一姿态信息的具体实现可以包括:基于当前图像帧中三个方向的结构线的方向向量,确定第一矩阵。按照第一矩阵中当前图像帧的三个方向的结构线的方向向量的排列顺序,基于参考图像帧中三个方向的结构线的方向向量,确定第二矩阵。基于第一矩阵、第二矩阵和第四姿态信息,确定当前图像帧对应的第一姿态信息。
作为一种示例,可以基于当前图像帧中结构线的方向向量和参考图像帧中结构线的方向向量、以及第四姿态信息,通过公式(1)确定当前图像帧对应的第一姿态信息。
示例性地,通过上述公式(1),分别在i取1、2和3时,确定可以得到第一矩阵,为第一矩阵的第一列,为第一矩阵的第二列,为第一矩阵的第三列。分别在i取1、2和3时,确定可以得到第二矩阵,为第二矩阵的第一列,为第二矩阵的第二列,为第二矩阵的第三列。然后基于第一矩阵、第二矩阵和第四姿态信息,可以确定当前图像帧对应的第一姿态信息。
步骤203:基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,确定当前图像帧对应的位姿,该位姿至少包括第二姿态信息,当前图像帧对应的位姿指的是采集当前图像帧时图像采集设备的位姿。
其中,位姿可以包括位置信息和姿态信息,用于指示图像采集设备的位置和姿态。示例性地,位置信息可以称为平移量。
其中,上一个图像帧对应的地图点信息为上一个图像帧对应的地图点在世界坐标系下的三维坐标,上一个图像帧对应的地图线信息为上一个图像帧对应的地图线的两个端点分别在世界坐标系下的三维坐标。
作为一种示例,若上一个图像帧是关键图像帧,上一个图像帧对应的地图点包括上一个图像帧的参考特征点在世界坐标系下的投影点。其中,若上一个图像帧是关键图像帧,参考特征点是上一个图像帧中与之前的图像帧对应的地图点匹配的特征点、以及上一个图像帧与之前的地图点不匹配的特征点中上一个左目图像和上一个右目图像均提取到的特征点;若上一个图像帧不是关键图像帧,参考图像帧是上一个图像帧中与之前的图像帧对应的地图点匹配的特征点。
其中,上一个左目图像和上一个右目图像分别由图像采集设备的左目相机和右目相机采集得到,且上一个图像帧由上一个左目图像和上一个右目图像融合得到。
同理,上一个图像帧对应的地图线是上一个图像帧的参考特征线在世界坐标系下的投影线。其中,若上一个图像帧是关键图像帧,参考特征线是上一个图像帧中与之前的图像帧对应的地图线匹配的特征线、以及上一个图像帧中与之前的图像帧对应的地图线不匹配的特征线中上一个左目图像和上一个右目图像均采集到的特征线;若上一个图像帧不是关键图像帧,参考图像帧是上一个图像帧中与之前的图像帧对应的地图线匹配的特征线。
需要说明的是,上一个图像帧的地图点的数量通常为多个,且地图线的数量也为多个。
在实施中,基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,确定当前图像帧对应的位姿的具体实现可以包括如下几个步骤:
(1)基于上一个图像帧的位姿,确定当前图像帧的初始位姿。
在实施中,可以直接获取上一个图像帧的位姿,然后通过运动估计的方法确定当前图像帧的初始位姿。
作为一种示例,智能移动设备可以通过IMU测量数据或轮式里程计记录的数据或其他传感器等记录的数据,确定当前图像帧与上一个图像帧之间的相对位姿,然后基于上一个图像帧对应的位姿和该相对位姿,可以确定当前图像帧的初始位姿。
(2)确定当前图像帧的特征点信息指示的特征点和特征线信息指示的特征线,以及确定上一个图像帧对应的地图点信息指示的地图点和地图线信息指示的地图线。
由于当前图像帧的特征点信息是特征点在当前图像帧中的二维坐标,因此,可以直接根据当前图像帧的特征点信息确定当前图像帧的特征点。同理,可以直接根据当前图像帧的特征线信息确定特征线的两个端点,进而可以确定当前图像帧的特征线。
由于上一个图像帧的地图点信息是地图点在世界坐标系下的三维坐标,因此,可以直接根据上一个图像帧的地图点信息确定上一个图像帧的地图点。同理,可以直接根据上一个图像帧的地图线信息确定地图线的两个端点,进而可以确定上一个图像帧的地图线。
通过上述方式,可以确定当前图像帧的多个特征点和多个特征线,以及上一个图像帧的多个地图线和多个地图线。
(3)基于当前图像帧的初始位姿,确定上一个图像帧对应的地图点在当前图像帧中的第一投影点,以及上一个图像帧对应的地图线在当前图像帧中的第一投影线。
上一个图像帧对应多个地图点和多个地图线,需要基于确定的当前图像帧的初始位姿,将上一个图像帧对应的多个地图点投影到当前图像帧中,得到多个第一投影点,以及将上一个图像帧对应的多个地图线投影到当前图像帧中,确定多个第一投影线。
作为一种示例,对于上一图像帧对应的任一个地图点,可以基于当前图像帧的初始位姿和图像采集设备的内参矩阵,将该任一地图点的三维坐标转换为在当前图像帧中的二维坐标,将转换得到的二维坐标对应的点确定为该任一地图点在当前图像帧中的第一投影点。
同理,对于上一个图像帧对应的任一地图线,可以基于当前图像帧的初始位姿和图像采集设备的内参矩阵,将该任一地图线的两个端点的三维坐标分别转换为在当前图像帧中的二维坐标,将转换得到的两个端点的二维坐标对应的点确定为该任一地图点在当前图像帧中的第一投影线的两个端点,将转换得到的两个端点的连线确定为该任一地图线在当前图像帧中的第一投影线。
(4)确定当前图像帧的特征点中与第一投影点匹配的观测点,以及确定当前图像帧的特征线中与第一投影线匹配的观测线。
当前图像帧中有多个特征点,有些特征点是上一个图像帧中也有的,可以与上一个图像帧对应的地图点匹配,这些特征点对应的地图点即是当前图像帧追踪到的地图点,而有些特征点是当前图像帧中有而上一个图像帧中没有的,为了确定当前图像帧追踪到的地图点,可以将当前图像帧中的特征点与第一投影点进行匹配,确定当前图像帧中与第一投影点匹配的观测点。
在一些实施例中,可以根据第一投影点的描述子与特征点的描述子之间的距离,以及第一投影点与特征点之间的像素距离,确定当前图像帧的特征点中与第一投影点匹配的观测点。
作为一种示例,对于多个第一投影点中的任一第一投影点,可以先确定在当前图像帧中,以该任一第一投影点为中心,以第一数值为半径的范围内的多个第一候选特征点,然后确定该任一第一投影点的描述子,并确定该任一第一投影点的描述子分别与该多个第一候选特征点的描述子之间的距离,得到第一距离,将第一距离小于第一距离阈值的特征点确定为第二候选特征点。然后基于该任一第一投影点的二维坐标和多个第二候选特征点的二维坐标,确定该任一第一投影点分别与每个第二候选特征点之间的像素距离,将最小像素距离对应的第二候选特征点确定为与该任一第一投影点匹配的观测点。对每个第一投影点均进行上述操作后,可以确定当前图像帧中与每个第一投影点匹配的观测点,得到多个观测点。
需要说明的是,第一数值和第一距离阈值均可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
当前图像帧中有多个特征线,有些特征线是上一个图像帧中也有的,可以与上一个图像帧对应的地图线匹配,这些特征线对应的地图线即是当前图像帧追踪到的地图线,而有些特征线是当前图像帧中有而上一个图像帧中没有的,为了确定当前图像帧追踪到的地图线,可以将当前图像帧中的特征线与第一投影线进行匹配,确定当前图像帧中与第一投影线匹配的观测线。
在一些实施例中,可以根据第一投影线的描述子与特征线的描述子之间的距离,以及第一投影线与特征线之间的像素距离,确定当前图像帧的特征线中与第一投影线匹配的观测线。
作为一种示例,对于多个第一投影线中的任一第一投影线,可以先确定该第一投影线的中点,然后确定在当前图像帧中,以该任一第一投影线的中点为中心,以第二数值为半径的范围内的多个第一候选特征线,然后确定该任一第一投影线的描述子,并确定该任一第一投影线的描述子分别与该多个第一候选特征线的描述子之间的距离,得到第二距离,将第二距离小于第二距离阈值的特征线确定为第二候选特征线。然后,可以将该任一第一投影线的两个端点分别确定为第一端点和第二端点,对于任一第二候选特征线,可以确定第一端点与该任一第二候选特征线的距离和第二端点与该任一第二候选特征线的距离之和,将该距离和确定为该任一第一投影线与该任一第二候选特征线之间的像素距离,以此方式,可以确定该任一第一投影线与每个第二候选特征线之间的像素距离,将最小像素距离对应的第二候选特征线确定为与该任一第一投影线匹配的观测线。对每个第一投影线均进行上述操作后,可以确定当前图像帧中与每个第一投影线匹配的观测线,得到多个观测线。
需要说明的是,第二数值和第二距离阈值均可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
在另一些实施例中,可以根据第一投影线的描述子与特征线的描述子之间的距离、第一投影线与特征线之间的夹角、第一投影线与特征线的重叠率、以及第一投影线与特征线之间的像素距离,确定当前图像帧的特征线中与第一投影点匹配的观测线。
作为一种示例,对于多个第一投影线中的任一第一投影线,可以先确定该第一投影线的中点,然后确定在当前图像帧中,以该任一第一投影线的中点为中心,以第二数值为半径的范围内的多个第一候选特征线,然后确定该任一第一投影线的描述子,并确定该任一第一投影线的描述子分别与该多个第一候选特征线的描述子之间的距离,得到第二距离,将第二距离小于第二距离阈值的特征线确定为第二候选特征线。然后确定该任一第一投影线分别与每个第二候选特征线之间的夹角,将夹角小于角度阈值的第二候选特征线确定为第三候选特征线,再确定第三候选特征线中与该第一投影线有重叠的候选特征线,确定每个重叠部分的线段长度与对应的候选特征线的总长度的比例,将该比例确定为重叠率,将重叠率大于重叠率阈值的第三候选特征线确定为第四候选特征线。最后,可以将该任一第一投影线的两个端点分别确定为第一端点和第二端点,对于任一第四候选特征线,可以确定第一端点与该任一第四候选特征线的距离和第二端点与该任一第四候选特征线的距离之和,将该距离和确定为该任一第一投影线与该任一第四候选特征线之间的像素距离,以此方式,可以确定该任一第一投影线与每个第四候选特征线之间的像素距离,将最小像素距离对应的第四候选特征线确定为与该任一第一投影线匹配的观测线。对每个第一投影线均进行上述操作后,可以确定当前图像帧中与每个第一投影线匹配的观测线,得到多个观测线。
需要说明的是,角度阈值和重叠率阈值均可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
(5)基于初始位姿、第一投影点、观测点、第一投影线、观测线、以及第一姿态信息,确定当前图像帧对应的位姿。
其中,第一投影点、观测点、第一投影线和观测线的数量均为多个,且一个第一投影点与一个观测点对应,一个第一投影线与一个观测线对应。
在一些实施例中,基于初始位姿、第一投影点、观测点、第一投影线、观测线、以及第一姿态信息,确定当前图像帧对应的位姿的具体实现可以包括如下步骤:
a、基于第一投影点和观测点,确定当前图像帧对应的点的第一重投影误差。
在实施中,可以基于第一投影点和观测点,通过下述公式(2)确定任一地图点在当前图像帧上的第一重投影误差。
其中,表示第j个地图点在第k个图像帧上的第一重投影误差,e=pproj-pobs,pproj表示第j个地图点在第k个图像帧上的第一投影点的二维坐标,pobs表示第k个图像帧中与该第一投影点匹配的观测点的二维坐标,W为该观测点的信息矩阵,为2×2的对角矩阵,该矩阵可以由用户根据该观测点与图像采集设备之间的距离来设置。
其中,观测点与图像采集设备之间的距离可以在提取图像帧中的特征点的过程中确定。
作为一种示例,在确定当前图像帧对应的位姿的过程中,公式(2)中的第k个图像帧为当前图像帧。通过上述公式(2)可以确定每个地图点在当前图像帧上的第一重投影误差,将多个地图点在当前图像帧上的第一重投影误差求和,可以得到当前图像帧对应的点的第一重投影误差。
b、基于第一投影线和观测线,确定当前图像帧对应的线的第二重投影误差。
在实施中,可以基于第一投影线和观测线,通过公式(3)确定任一地图线在当前图像帧上的第二重投影误差。
其中,表示第j个地图线在第k个图像帧上的第二重投影误差,L为第j个地图线在当前图像帧中对应的第一投影线的参数表达式中的参数向量,L=(a,b,c)T,L1为a,L2为b,qi为与该第一投影线匹配的观测线的第i个端点的二维坐标。
其中,|ei|等于图3中的di。也即是,|ei|表示观测线的第i个端点与第一投影线之间的距离。
参见图3,p1表示观测线的第一个端点,p2表示观测线的第二个端点,d1表示观测线的第一个端点与第一投影线之间的距离,d2表示观测线的第二个端点与第一投影线之间的距离。
作为一种示例,上一个图像帧对应的地图线在世界坐标系下有对应的参数表达式,基于当前图像帧的初始位姿和图像采集设备的内参矩阵,可以将地图线在世界坐标系下的参数表达式转换成在第一投影线在当前图像帧中的参数表达式。假设第一投影线的参数表达式为ax+by+c=0,则L=(a,b,c)T。
作为一种示例,在确定当前图像帧对应的位姿的过程中,公式(3)中的第k个图像帧为当前图像帧。通过上述公式(3)可以确定每个地图线在当前图像帧上的第二重投影误差,将多个地图线在当前图像帧上的第二重投影误差求和,可以得到当前图像帧对应的线的第二重投影误差。
c、基于当前图像帧中三个方向的结构线的方向向量、参考图像帧中三个方向的结构线的方向向量、第四姿态信息、以及第一姿态信息,确定当前图像帧对应的第一结构线约束值。
在一些实施例中,可以根据灭点提取算法和当前图像帧中每个方向的结构线的数量确定当前图像帧中每个方向的结构线的置信度,然后可以基于当前图像帧中三个方向的结构线的方向向量、参考图像帧中三个方向的结构线的方向向量、第四姿态信息、第一姿态信息、以及当前图像帧中每个方向的结构线的置信度,通过公式(4)确定当前图像帧对应的第一结构线约束值。
其中,表示当前图像帧对应的第一结构线约束值,wi表示当前图像帧中第i个方向的结构线的置信度, 为当前图像帧的第一姿态信息,为参考图像帧的第四姿态信息,为参考图像帧中第i个方向的结构线的方向向量,为当前图像帧第i个方向的结构线的方向向量。
参见图4,图4是参考图像帧和当前图像帧分别对应的世界坐标系下三个方向的结构线的示意图。
d、基于点的第一重投影误差、线的第二重投影误差和第一结构线约束值,对初始位姿进行迭代运算,得到当前图像帧对应的位姿。
作为一种示例,该迭代运算可以是梯度下降方式的迭代运算,也可以是其他的迭代优化算法,本申请实施例对此不做限定。
在实施中,可以基于点的第一重投影误差、线的第二重投影误差和第一结构线约束值,然后通过公式(5)对初始位姿进行迭代运算,得到当前图像帧对应的位姿。
其中,Pk表示当前图像帧中观测点的集合,Lk表示当前图像帧中观测线的集合,Tk是一个变量,在未进行迭代运算之前,Tk表示初始位姿,在迭代运算的过程中,Tk表示更新过程中的初始位姿,直到迭代结束,Tk表示当前图像帧对应的位姿。
进一步地,由于仅根据上一个图像帧的地图点信息和地图线信息确定的当前图像帧对应的位姿可能准确性不高,因此,确定当前图像帧对应的位姿之后,还可以包括:获取共视图像帧对应的地图点信息和地图线信息,共视图像帧是指对应的地图点中与当前图像帧对应的地图点相同的地图点的第一数量和对应的地图线中与当前图像帧对应的地图线相同的地图线的第二数量之和大于第一数量阈值的图像帧。基于当前图像帧的特征点信息和特征线信息、共视图像帧对应的地图点信息和地图线信息、以及第一姿态信息,对当前图像帧对应的位姿继续进行迭代运算,重新得到当前图像帧对应的位姿。
其中,第一数量阈值可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
也就是说,可以确定与当前图像帧追踪到相同的地图点的第一数量以及相同的地图线的第二数量之和大于第一数量阈值的共视图像帧,获取共视图像帧对应的地图点信息和地图线信息,然后基于当前图像帧的特征点信息和特征线信息、共视图像帧对应的地图点信息和地图线信息、以及第一姿态信息,对确定的当前图像帧对应的位姿进行更新,得到更新后的位姿,将更新后的位姿重新确定为当前图像帧对应的位姿。
作为一种示例,可以先基于当前图像帧的特征点信息和特征线信息、以及共视图像帧对应的地图点信息和地图线信息,确定当前图像帧的特征点与共视图像帧对应的地图点的匹配关系,以及当前图像帧的特征线与共视图像帧对应的地图线的匹配关系。即确定共视图像帧的地图点在当前图像帧中的第三投影点和与该第三投影点匹配的观测点,以及确定共视图像帧的地图线在当前图像帧中的第三投影线和与该第三投影线匹配的观测线。然后基于第三投影点、与该第三投影点匹配的观测点、第三投影线、与该第三投影线匹配的观测线、以及第一姿态信息,对当前图像帧对应的位姿继续进行迭代运算,重新得到当前图像帧对应的位姿。
需要说明的是,上述基于第三投影点、与该第三投影点匹配的观测点、第三投影线、与该第三投影线匹配的观测线、以及第一姿态信息,对当前图像帧对应的位姿继续进行迭代运算,重新得到当前图像帧对应的位姿的具体实现与上述实施例中基于初始位姿、第一投影点、观测点、第一投影线、观测线、以及第一姿态信息,确定当前图像帧对应的位姿的具体实现类似,具体描述可参见上述实施例,本申请实施例在此不再赘述。
步骤204:若第一姿态信息与第二姿态信息之间的误差大于第二阈值,确定当前图像帧为关键图像帧,基于第一姿态信息和位姿,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。
其中,第二阈值可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
也就是说,如果第一姿态信息和第二姿态信息之间的误差大于第二阈值,可以认为根据视觉跟踪确定的第二姿态信息与直接基于结构线信息确定的第一姿态信息存在偏差,可以将当前图像帧确定为关键图像帧。然后基于更加准确的第一姿态信息对全局地图中所有关键图像帧的姿态信息、对应的地图点的位置和地图线的位置进行更新,确定更新后的第三姿态信息、地图点位置和地图线位置。
在实施中,若第一姿态信息与第二姿态信息之间的误差大于第二阈值,确定当前图像帧为关键图像帧,基于第一姿态信息确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线的具体实现可以包括:基于当前图像帧中除观测点之外的特征点和位姿,在全局地图中构建当前图像帧对应的地图点,以及基于当前图像帧中除观测线之外的特征线和位姿,在全局地图中构建当前图像帧对应的地图线。基于第一姿态信息,在全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定全局地图中所有关键图像帧对应的第三姿态信息。
其中,重新确定的当前图像帧对应的第三姿态信息是对第一姿态信息进行迭代优化后得到的。
也就是说,如果第一姿态信息和第二姿态信息之间的误差大于第二阈值,可以认为确定的当前图像帧的位姿可能不准确,可以将当前图像帧确定为关键图像帧,然后在全局地图中构建当前图像帧对应的地图点和地图线,并基于第一姿态信息和位姿,对全局地图中所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
在一些实施例中,可以基于当前图像帧对应的位姿,将当前图像帧中除观测点之外的特征点投影到全局地图中,确定当前图像帧除观测点之外的特征点在世界坐标系下的地图点,得到当前图像帧对应的地图点。同理,可以基于当前图像帧对应的位姿,将当前图像帧中除观测线之外的特征线投影到全局地图中,确定当前图像帧除观测线之外的特征线在世界坐标系下的地图线,得到当前图像帧对应的地图线。
在一些实施例中,基于第一姿态信息,在全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定全局地图中所有关键图像帧对应的第三姿态信息的具体实现可以包括:
(1)获取全局地图中除当前图像帧之外的其他关键图像帧对应的点的第三重投影误差、线的第四重投影误差和第二结构线约束值。
作为一种示例,由于除当前图像帧之外的其他关键图像帧在之前均进行过位姿更新,因此,可以直接获取其他关键图像帧对应的点的第三重投影误差、线的第四重投影误差和第二结构线约束值。
作为另一种示例,对于其他关键图像帧中的任一关键图像帧,可以基于之前确定的该任一关键图像帧中的特征点和特征线与别的关键图像帧的特征点和特征线的匹配关系,通过上述相关公式可以确定点的第三重投影误差、线的第四重投影误差和第二结构线约束值。
(2)基于第一姿态信息、点的第三重投影误差、线的第四重投影误差、第二结构线约束值、点的第一重投影误差、线的第二重投影误差、以及第一结构线约束值,对全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行迭代运算,得到更新后的全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置。
作为一种示例,可以基于第一姿态信息、点的第三重投影误差、线的第四重投影误差、第二结构线约束值、点的第一重投影误差、线的第二重投影误差、以及第一结构线约束值,通过公式(6)对全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行梯度下降的迭代运算。
其中,表示第一姿态信息,表示将当前图像帧对应的位姿中的第二姿态信息更换为第一姿态信息,D表示全局地图中所有关键图像帧的集合,Ω表示全局地图中视觉与结构线观测不一致的关键图像帧的集合,X表示更新后的全局地图中所有关键图像帧的第三姿态信息、对应的地图点位置和地图线位置。
(3)基于更新后的全局地图中所有关键图像帧的第三姿态信息、地图点位置和更新后的全局地图中所有关键图像帧的地图线位置,在全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
通过上述公式(6)可以得到更新后的全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置,将全局地图中所有关键图像帧的姿态信息更换为第三姿态信息,然后在全局地图中相应的地图点位置处重新构建地图点,以及在相应的地图线位置处重新构建地图线,可以实现对所有关键图像帧的姿态信息、对应的地图点和地图线的更新。
进一步地,若第一姿态信息与第二姿态信息之间的误差不大于第二阈值,响应于当前图像帧为关键图像帧,在全局地图中构建当前图像帧对应的地图点和地图线,以及重新确定当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线,共视关键图像帧是指对应的地图点中与当前图像帧对应的地图点相同的地图点的第三数量和对应的地图线中与当前图像帧对应的地图线相同的地图线的第四数量大于第二数量阈值的关键图像帧。
其中,共视关键图像帧是共视图像帧中的关键图像帧。
需要说明的是,第二数量阈值可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
也就是说,如果第一姿态信息和第二姿态信息之间的误差不大于第二阈值,可以认为当前图像帧不存在视觉与结构线观测不一致的情况。若当前图像帧为关键图像帧,可以在全局地图中构建当前图像帧对应的地图点和地图线,并重新确定当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线。
在实施中,响应于当前图像帧为关键图像帧的具体实现可以包括:基于当前图像帧对应的位姿,确定上一个图像帧对应的地图点在当前图像帧中的第二投影点,以及确定上一个图像帧对应的地图线在当前图像帧中的第二投影线。基于第二投影点和观测点,确定当前图像帧对应的点的第五重投影误差,以及基于第二投影线和观测线,确定当前图像帧对应的线的第六重投影误差。删除当前图像帧的观测点中第五重投影误差大于第一误差阈值的观测点,以及删除当前图像帧的观测线中第六重投影误差大于第二误差阈值的观测线。确定当前图像帧中执行删除操作后的观测点与观测线的总数量,若总数量小于第三阈值,确定当前图像帧为关键图像帧。
其中,第一误差阈值、第二误差阈值和第三阈值均可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
也就是说,由于基于当前图像帧的初始位姿建立的观测点与第一投影点的匹配关系,以及观测线与第一投影线的匹配关系可能不准确,因此,在确定当前图像帧对应的位姿后,可以基于当前图像帧对应的位姿,重新确定上一个图像帧对应的地图点的第二投影点,以及上一个图像帧对应的地图线的第二投影线。然后基于重新确定的第二投影点和观测点,确定第五重投影误差,以及基于重新确定的第二投影线和观测线,确定第六重投影误差。由于第五重投影误差大于第一误差阈值的观测点可能并不是当前图像帧追踪到的地图点对应的特征点,因此可以删除第五重投影误差小于第一误差阈值的观测点。同理,由于第六重投影误差大于第二误差阈值的观测线可能并不是当前图像帧追踪到的地图线对应的特征线,因此可以删除第六重投影误差大于第二误差阈值的观测线。然后确定当前图像帧对应的执行删除操作后的观测点和观测线的总数量,若总数量小于第三阈值,可以认为当前图像帧追踪到的地图点和地图线比较少,说明该当前图像帧中还有之前的图像帧没有追踪到的地图点和地图线,因此,可以将当前图像帧确定为关键图像帧。
需要说明的是,确定第二投影点的方法与确定第一投影点相同,确定第二投影线的方法与确定第一投影线相同,基于第二投影点和观测点,确定当前图像帧对应的点的第五重投影误差的方法与确定当前图像帧对应的点的第一重投影误差的方法相同,以及基于第二投影线和观测线,确定当前图像帧对应的线的第六重投影误差的方法与确定当前图像帧对应的线的第二重投影误差的方法相同,具体实施过程可以参见上述实施例的相关描述,本实施例在此不再赘述。
在实施中,在全局地图中确定当前图像帧对应的地图点和地图线,以及重新确定当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线的具体实现可以包括:
基于当前图像帧中除观测点之外的特征点,在全局地图中构建当前图像帧对应的地图点,以及基于当前图像帧中除观测线之外的特征线,在全局地图中构建当前图像帧对应的地图线。直接获取共视关键图像帧对应的点的第九重投影误差、线的第十重投影误差和第四结构线约束值。然后基于点的第九重投影误差、线的第十重投影误差、第四结构线约束值、点的第一重投影误差、线的第二重投影误差、以及第一结构线约束值,对全局地图中当前图像帧和共视关键图像帧的姿态信息、地图点位置和地图线位置进行迭代计算,得到更新后的当前图像帧和共视图像帧的第四姿态信息、地图点位置和地图线位置。再将全局地图中当前图像帧的姿态信息和共视图像帧的姿态信息更换为相应的第四姿态信息,基于更新后的当前图像帧的地图点位置和更新后的当前图像帧的地图线位置,在全局地图中重新构建当前图像帧对应的地图点和地图线,以及基于更新后的共视图像帧的地图点位置和更新后的共视图像帧的地图线位置,在全局地图中重新构建共视图像帧对应的地图点和地图线。
需要说明的是,在全局地图中构建当前图像帧对应的地图点和地图线,以及重新构建共视关键图像帧对应的地图点和地图线的具体方法与上述实施例基于第一姿态信息在全局地图中确定当前图像帧对应的地图点和地图线,以及重新确定除当前图像帧之外的其他关键图像帧的第三姿态信息、对应的地图点和地图线的具体方法相似,具体实现过程可以参见上述实施例的相关描述,本实施例在此不再赘述。
进一步地,若当前图像帧为关键图像帧,且基于当前图像帧确定图像采集设备到达历史位置处,获取与当前图像帧对应的历史关键图像帧,历史关键图像帧的特征点信息与当前图像帧的特征点信息的相似度大于第一相似度阈值,且历史关键图像帧的特征线信息与当前图像帧的特征线信息的相似度大于第二相似度阈值。获取历史关键图像帧对应的地图点信息和地图线信息,以及全局地图中除当前图像帧和历史关键图像帧之外的其他关键图像帧对应的点的第七重投影误差、线的第八重投影误差和第三结构线约束值。基于当前图像帧的特征点信息和特征线信息、历史关键图像帧对应的地图点信息和地图线信息、当前图像帧的结构线信息、参考图像帧的结构线信息、点的第七重投影误差、线的第八重投影误差、以及第三结构线约束值,在全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
其中,第一相似度阈值和第二相似度阈值均可以由用户根据实际需求进行设置,也可以由智能移动设备默认设置,本申请实施例对此不做限定。
其中,历史位置可以为图像采集设备之前经过的任一位置。
也就是说,如果当前图像帧为关键帧且基于当前图像帧确定智能移动设备回到了之前经过的位置,可以在全局地图中重新确定所有关键图像帧的姿态信息、对应的地图点和地图线。
作为一种示例,可以获取与当前图像帧提取到的特征点信息和特征线信息均很相似的历史关键图像帧,直接获取该历史关键图像帧的地图点信息和地图线信息。并且直接获取全局地图中除当前图像帧和历史关键图像帧之外的其他关键图像帧对应的点的第七重投影误差、线的第八重投影误差和第三结构线约束值。然后基于当前图像帧的特征点信息和特征线信息、历史关键图像帧对应的地图点信息和地图线信息、当前图像帧的结构线信息、参考图像帧的结构线信息、点的第七重投影误差、线的第八重投影误差、以及第三结构线约束值,对全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行迭代计算,得到更新后的全局地图中所有关键图像帧的第五姿态信息、地图点位置和地图线位置。将全局地图中所有关键图像帧的姿态信息更换为第五姿态信息,再基于更新后的全局地图中所有关键图像帧的地图点位置和更新后的全局地图中所有关键图像帧的地图线位置,在全局地图中更新所有关键图像帧的地图点和地图线。
示例性地,可以通过公式(7)确定更新后的全局地图中所有关键图像帧的地图点位置和地图线位置。
其中,公式(7)中参数的意义与公式(6)中参数的意义相同。
通过公式(7)可以确定更新后的所有关键图像帧的第五姿态信息、对应的地图点位置和地图线位置。
在本申请实施例中,确定当前图像帧的特征点信息、特征线信息和结构线信息,然后基于当前图像帧的结构线信息和参考图像帧的结构线信息,可以确定当前图像帧对应的第一姿态信息。参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前,并且参考图像帧包括三个方向的结构线、且包括的结构线的总数量大于第一阈值,从参考图像帧提取的结构线信息可能会比较准确,因此确定的当前图像帧对应的第一姿态信息会比较准确。再基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,可以确定当前图像帧对应的位姿,即采集当前图像帧时图像采集设备的位姿,该位姿至少包括第二姿态信息。如果第一姿态信息与第二姿态信息之间的误差大于第二阈值,可以认为根据视觉跟踪确定的第二姿态信息与直接基于结构线信息确定的第一姿态信息存在偏差,将当前图像帧确定为关键图像帧,然后基于位姿和更加准确的第一姿态信息,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。如此,在确定当前图像帧对应的第二姿态信息存在视觉偏差时,可以直接基于更加准确的第一姿态信息对全局地图中所有关键图像帧的姿态信息、地图点和地图线进行更新,从而降低定位误差,以便于后续基于全局地图进行定位时,可以提高定位的准确性。
为了便于理解,接下来结合图5对本申请实施例提供的地图构建方法进行说明。
获取到当前图像帧之后,可以确定当前图像帧的特征点信息和特征线信息,并基于特征线信息确定结构线信息,然后将当前图像帧与上一个图像帧进行匹配。基于当前图像帧的结构线信息和参考图像帧的结构线信息可以确定当前图像帧对应的第一姿态信息,以及基于当前图像帧与上一个图像帧的匹配关系,确定点的第一重投影误差、线的第二重投影误差和第一结构线约束值,进而确定当前图像帧对应的位姿,该位姿包括第二姿态信息。
判断第一姿态信息与第二姿态信息的误差是否大于第二阈值,若是,基于第一姿态信息、点的第三重投影误差、线的第四重投影误差、第二结构线约束值、点的第一重投影误差、线的第二重投影误差、以及第一结构线约束值,重新确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点位置和地图线位置。
若否,判断当前图像帧是否为关键图像帧,若否,返回第一步确定特征点信息和特征信息,若是,基于点的第七重投影误差、线的第八重投影误差、第四结构线约束值、点的第一重投影误差、线的第二重投影误差、以及第一结构线约束值,确定全局地图中当前图像帧对应的地图点和地图线,以及重新确定共视关键图像帧的第四姿态信息、对应的地图点位置和地图线位置。
若当前图像帧为关键图像帧,且基于当前图像帧确定智能移动设备回到了之前经过的位置,可以基于当前图像帧的特征点信息和特征线信息、历史关键图像帧对应的地图点信息和地图线信息、当前图像帧的结构线信息、参考图像帧的结构线信息、点的第七重投影误差、线的第八重投影误差、以及第三结构线约束值,确定全局地图中所有关键图像帧的第五姿态信息、对应的地图点位置和地图线位置。
图6是根据一示例性实施例示出的一种地图构建装置的结构示意图,该装置可以包括图像采集设备601、处理器602、IMU603和行进部件604。
图像采集设备601,用于获取当前图像帧;
处理器602,用于确定当前图像帧的特征点信息、特征线信息和结构线信息;基于当前图像帧的结构线信息和参考图像帧的结构线信息,确定当前图像帧对应的第一姿态信息,参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且参考图像帧的图像采集时间位于当前图像帧的图像采集时间之前;基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,确定当前图像帧对应的位姿,位姿至少包括第二姿态信息,当前图像帧对应的位姿指的是采集当前图像帧时图像采集设备的位姿;若第一姿态信息与第二姿态信息之间的误差大于第二阈值,确定当前图像帧为关键图像帧,基于第一姿态信息和位姿,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。
在本申请一种可能的实现方式中,处理器602用于:
当前图像帧的结构线包括三个方向的结构线,基于当前图像帧的结构线信息,确定当前图像帧中每个方向的结构线在当前图像帧对应的相机坐标系下的方向向量,得到当前图像帧中三个方向的结构线的方向向量;
基于参考图像帧的结构线信息,获取参考图像帧中三个方向的结构线的方向向量;
获取参考图像帧对应的第四姿态信息;
基于当前图像帧中结构线的方向向量和参考图像帧中结构线的方向向量、以及第四姿态信息,确定当前图像帧对应的第一姿态信息。
在本申请一种可能的实现方式中,装置还包括惯性测量单元IMU603,
IMU603用于获取智能移动设备的IMU测量数据;
处理器602用于:
基于上一个图像帧的位姿,确定当前图像帧的初始位姿;
确定当前图像帧的特征点信息指示的特征点和特征线信息指示的特征线,以及确定上一个图像帧对应的地图点信息指示的地图点和地图线信息指示的地图线;
基于当前图像帧的初始位姿,确定上一个图像帧对应的地图点在当前图像帧中的第一投影点,以及上一个图像帧对应的地图线在当前图像帧中的第一投影线;
确定当前图像帧的特征点中与第一投影点匹配的观测点,以及确定当前图像帧的特征线中与第一投影线匹配的观测线;
基于初始位姿、第一投影点、观测点、第一投影线、观测线、以及第一姿态信息,确定当前图像帧对应的位姿。
在本申请一种可能的实现方式中,处理器602用于:
基于第一投影点和观测点,确定当前图像帧对应的点的第一重投影误差;
基于第一投影线和观测线,确定当前图像帧对应的线的第二重投影误差;
基于当前图像帧中三个方向的结构线的方向向量、参考图像帧中三个方向的结构线的方向向量、第四姿态信息、以及第一姿态信息,确定当前图像帧对应的第一结构线约束值;
基于点的第一重投影误差、线的第二重投影误差和第一结构线约束值,对初始位姿进行迭代运算,得到当前图像帧对应的位姿。
在本申请一种可能的实现方式中,处理器602用于:
基于当前图像帧中除观测点之外的特征点和位姿,在全局地图中构建当前图像帧对应的地图点,以及基于当前图像帧中除观测线之外的特征线和位姿,在全局地图中构建当前图像帧对应的地图线;
基于第一姿态信息,在全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定全局地图中所有关键图像帧的第三姿态信息。
在本申请一种可能的实现方式中,处理器602用于:
获取全局地图中除当前图像帧之外的其他关键图像帧对应的点的第三重投影误差、线的第四重投影误差和第二结构线约束值;
基于第一姿态信息、点的第三重投影误差、线的第四重投影误差、第二结构线约束值、点的第一重投影误差、线的第二重投影误差、以及第一结构线约束值,对全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行迭代运算,得到更新后的全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置;
基于更新后的全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置,在全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
在本申请一种可能的实现方式中,处理器602还用于:
获取共视图像帧对应的地图点信息和地图线信息,共视图像帧是指对应的地图点中与当前图像帧对应的地图点相同的地图点的第一数量和对应的地图线中与当前图像帧对应的地图线相同的地图线的第二数量之和大于第一数量阈值的图像帧;
基于当前图像帧的特征点信息和特征线信息、共视图像帧对应的地图点信息和地图线信息、以及第一姿态信息,对当前图像帧对应的位姿继续进行迭代运算,重新得到当前图像帧对应的位姿。
在本申请一种可能的实现方式中,装置还包括行进部件604;
处理器602用于通过行进部件604控制智能移动设备移动。
在本申请一种可能的实现方式中,处理器602还用于:
若第一姿态信息与第二姿态信息之间的误差不大于第二阈值,响应于当前图像帧为关键图像帧,在全局地图中构建当前图像帧对应的地图点和地图线,以及重新确定当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线,共视关键图像帧是指对应的地图点中与当前图像帧对应的地图点相同的地图点的第三数量和对应的地图线中与当前图像帧对应的地图线相同的地图线的第四数量之和大于第二数量阈值的关键图像帧。
在本申请一种可能的实现方式中,处理器602还用于:
基于当前图像帧对应的位姿,确定上一个图像帧对应的地图点在当前图像帧中的第二投影点,以及确定上一个图像帧对应的地图线在当前图像帧中的第二投影线;
基于第二投影点和观测点,确定当前图像帧对应的点的第五重投影误差,以及基于第二投影线和观测线,确定当前图像帧对应的线的第六重投影误差;
删除当前图像帧的观测点中第五重投影误差大于第一误差阈值的观测点,以及删除当前图像帧的观测线中第六重投影误差大于第二误差阈值的观测线;
确定当前图像帧中执行删除操作后的观测点与观测线的总数量;
若总数量小于第三阈值,确定当前图像帧为关键图像帧。
在本申请一种可能的实现方式中,处理器602还用于:
若当前图像帧为关键图像帧,且基于当前图像帧确定图像采集设备到达历史位置处,获取与当前图像帧对应的历史关键图像帧,历史关键图像帧的特征点信息与当前图像帧的特征点信息的相似度大于第一相似度阈值,且历史关键图像帧的特征线信息与当前图像帧的特征线信息的相似度大于第二相似度阈值;
获取历史关键图像帧对应的地图点信息和地图线信息,以及全局地图中除当前图像帧和历史关键图像帧之外的其他关键图像帧对应的点的第七重投影误差、线的第八重投影误差和第三结构线约束值;
基于当前图像帧的特征点信息和特征线信息、历史关键图像帧对应的地图点信息和地图线信息、当前图像帧的结构线信息、参考图像帧的结构线信息、点的第七重投影误差、线的第八重投影误差、以及第三结构线约束值,在全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
在本申请实施例中,确定当前图像帧的特征点信息、特征线信息和结构线信息,然后基于当前图像帧的结构线信息和参考图像帧的结构线信息,可以确定当前图像帧对应的第一姿态信息。参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前,并且参考图像帧包括三个方向的结构线、且包括的结构线的总数量大于第一阈值,从参考图像帧提取的结构线信息可能会比较准确,因此确定的当前图像帧对应的第一姿态信息会比较准确。再基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,可以确定当前图像帧对应的位姿,即采集当前图像帧时图像采集设备的位姿,该位姿至少包括第二姿态信息。如果第一姿态信息与第二姿态信息之间的误差大于第二阈值,可以认为根据视觉跟踪确定的第二姿态信息与直接基于结构线信息确定的第一姿态信息存在偏差,将当前图像帧确定为关键图像帧,然后基于位姿和更加准确的第一姿态信息,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。如此,在确定当前图像帧对应的第二姿态信息存在视觉偏差时,可以直接基于更加准确的第一姿态信息对全局地图中所有关键图像帧的姿态信息、地图点和地图线进行更新,从而降低定位误差,以便于后续基于全局地图进行定位时,可以提高定位的准确性。
需要说明的是:上述实施例提供的地图构建装置在构建地图时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的地图构建装置与地图构建方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图7是根据另一示例性实施例示出的一种地图构建装置的结构示意图,该地图构建装置可以由软件、硬件或者两者的结合实现成为智能移动设备的部分或者全部,该智能移动设备可以为图1所示的智能移动设备。请参考图7,该装置包括:第一确定模块701、第二确定模块702、第三确定模块703和第四确定模块704。
第一确定模块701,用于确定当前图像帧的特征点信息、特征线信息和结构线信息;
第二确定模块702,用于基于当前图像帧的结构线信息和参考图像帧的结构线信息,确定当前图像帧对应的第一姿态信息,参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且参考图像帧的图像采集时间位于当前图像帧的图像采集时间之前;
第三确定模块703,用于基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,确定当前图像帧对应的位姿,位姿至少包括第二姿态信息,当前图像帧对应的位姿指的是采集当前图像帧时图像采集设备的位姿;
第四确定模块704,用于若第一姿态信息与第二姿态信息之间的误差大于第二阈值,确定当前图像帧为关键图像帧,基于第一姿态信息和位姿,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。
在本申请一种可能的实现方式中,第二确定模块702用于:
当前图像帧的结构线包括三个方向的结构线,基于当前图像帧的结构线信息,确定当前图像帧中每个方向的结构线在当前图像帧对应的相机坐标系下的方向向量,得到当前图像帧中三个方向的结构线的方向向量;
基于参考图像帧的结构线信息,获取参考图像帧中三个方向的结构线的方向向量;
获取参考图像帧对应的第四姿态信息;
基于当前图像帧中结构线的方向向量和参考图像帧中结构线的方向向量、以及第四姿态信息,确定当前图像帧对应的第一姿态信息。
在本申请一种可能的实现方式中,第三确定模块703用于:
基于上一个图像帧的位姿,确定当前图像帧的初始位姿;
确定当前图像帧的特征点信息指示的特征点和特征线信息指示的特征线,以及确定上一个图像帧对应的地图点信息指示的地图点和地图线信息指示的地图线;
基于当前图像帧的初始位姿,确定上一个图像帧对应的地图点在当前图像帧中的第一投影点,以及上一个图像帧对应的地图线在当前图像帧中的第一投影线;
确定当前图像帧的特征点中与第一投影点匹配的观测点,以及确定当前图像帧的特征线中与第一投影线匹配的观测线;
基于初始位姿、第一投影点、观测点、第一投影线、观测线、以及第一姿态信息,确定当前图像帧对应的位姿。
在本申请一种可能的实现方式中,第三确定模块704用于:
基于第一投影点和观测点,确定当前图像帧对应的点的第一重投影误差;
基于第一投影线和观测线,确定当前图像帧对应的线的第二重投影误差;
基于当前图像帧中三个方向的结构线的方向向量、参考图像帧中三个方向的结构线的方向向量、第四姿态信息、以及第一姿态信息,确定当前图像帧对应的第一结构线约束值;
基于点的第一重投影误差、线的第二重投影误差和第一结构线约束值,对初始位姿进行迭代运算,得到当前图像帧对应的位姿。
在本申请一种可能的实现方式中,第四确定模块704用于:
基于当前图像帧中除观测点之外的特征点和位姿,在全局地图中构建当前图像帧对应的地图点,以及基于当前图像帧中除观测线之外的特征线和位姿,在全局地图中构建当前图像帧对应的地图线;
基于第一姿态信息,在全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定全局地图中所有关键图像帧的第三姿态信息。
在本申请一种可能的实现方式中,第四确定模块704用于:
获取全局地图中除当前图像帧之外的其他关键图像帧对应的点的第三重投影误差、线的第四重投影误差和第二结构线约束值;
基于第一姿态信息、点的第三重投影误差、线的第四重投影误差、第二结构线约束值、点的第一重投影误差、线的第二重投影误差、以及第一结构线约束值,对全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行迭代运算,得到更新后的全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置;
基于更新后的全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置,在全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
在本申请一种可能的实现方式中,第三确定模块703还用于:
获取共视图像帧对应的地图点信息和地图线信息,共视图像帧是指对应的地图点中与当前图像帧对应的地图点相同的地图点的第一数量和对应的地图线中与当前图像帧对应的地图线相同的地图线的第二数量之和大于第一数量阈值的图像帧;
基于当前图像帧的特征点信息和特征线信息、共视图像帧对应的地图点信息和地图线信息、以及第一姿态信息,对当前图像帧对应的位姿继续进行迭代运算,重新得到当前图像帧对应的位姿。
在本申请一种可能的实现方式中,第四确定模块704还用于:
若第一姿态信息与第二姿态信息之间的误差不大于第二阈值,响应于当前图像帧为关键图像帧,在全局地图中构建当前图像帧对应的地图点和地图线,以及重新确定当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线,共视关键图像帧是指对应的地图点中与当前图像帧对应的地图点相同的地图点的第三数量和对应的地图线中与当前图像帧对应的地图线相同的地图线的第四数量之和大于第二数量阈值的关键图像帧。
在本申请一种可能的实现方式中,第四确定模块704还用于:
基于当前图像帧对应的位姿,确定上一个图像帧对应的地图点在当前图像帧中的第二投影点,以及确定上一个图像帧对应的地图线在当前图像帧中的第二投影线;
基于第二投影点和观测点,确定当前图像帧对应的点的第五重投影误差,以及基于第二投影线和观测线,确定当前图像帧对应的线的第六重投影误差;
删除当前图像帧的观测点中第五重投影误差大于第一误差阈值的观测点,以及删除当前图像帧的观测线中第六重投影误差大于第二误差阈值的观测线;
确定当前图像帧中执行删除操作后的观测点与观测线的总数量;
若总数量小于第三阈值,确定当前图像帧为关键图像帧。
在本申请一种可能的实现方式中,第四确定模块704还用于:
若当前图像帧为关键图像帧,且基于当前图像帧确定图像采集设备到达历史位置处,获取与当前图像帧对应的历史关键图像帧,历史关键图像帧的特征点信息与当前图像帧的特征点信息的相似度大于第一相似度阈值,且历史关键图像帧的特征线信息与当前图像帧的特征线信息的相似度大于第二相似度阈值;
获取历史关键图像帧对应的地图点信息和地图线信息,以及全局地图中除当前图像帧和历史关键图像帧之外的其他关键图像帧对应的点的第七重投影误差、线的第八重投影误差和第三结构线约束值;
基于当前图像帧的特征点信息和特征线信息、历史关键图像帧对应的地图点信息和地图线信息、当前图像帧的结构线信息、参考图像帧的结构线信息、点的第七重投影误差、线的第八重投影误差、以及第三结构线约束值,在全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
在本申请实施例中,确定当前图像帧的特征点信息、特征线信息和结构线信息,然后基于当前图像帧的结构线信息和参考图像帧的结构线信息,可以确定当前图像帧对应的第一姿态信息。参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前,并且参考图像帧包括三个方向的结构线、且包括的结构线的总数量大于第一阈值,从参考图像帧提取的结构线信息可能会比较准确,因此确定的当前图像帧对应的第一姿态信息会比较准确。再基于当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及第一姿态信息,可以确定当前图像帧对应的位姿,即采集当前图像帧时图像采集设备的位姿,该位姿至少包括第二姿态信息。如果第一姿态信息与第二姿态信息之间的误差大于第二阈值,可以认为根据视觉跟踪确定的第二姿态信息与直接基于结构线信息确定的第一姿态信息存在偏差,将当前图像帧确定为关键图像帧,然后基于位姿和更加准确的第一姿态信息,确定全局地图中所有关键图像帧的第三姿态信息、对应的地图点和地图线。如此,在确定当前图像帧对应的第二姿态信息存在视觉偏差时,可以直接基于更加准确的第一姿态信息对全局地图中所有关键图像帧的姿态信息、地图点和地图线进行更新,从而降低定位误差,以便于后续基于全局地图进行定位时,可以提高定位的准确性。
需要说明的是:上述实施例提供的地图构建装置在构建地图时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的地图构建装置与地图构建方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是根据一示例性实施例示出的一种智能移动设备800的结构框图。该智能移动设备800可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。智能移动设备800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,智能移动设备800包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本申请中方法实施例提供的地图构建方法。
在一些实施例中,智能移动设备800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:射频电路804、触摸显示屏805、摄像头806、音频电路807、定位组件808和电源809中的至少一种。
外围设备接口803可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路804用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏805用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置智能移动设备800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在智能移动设备800的不同表面或呈折叠设计;在再一些实施例中,显示屏805可以是柔性显示屏,设置在智能移动设备800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在智能移动设备的前面板,后置摄像头设置在智能移动设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在智能移动设备800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。
定位组件808用于定位智能移动设备800的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件808可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源809用于为智能移动设备800中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,智能移动设备800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。
加速度传感器811可以检测以智能移动设备800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制触摸显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器812可以检测智能移动设备800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对智能移动设备800的3D动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器813可以设置在智能移动设备800的侧边框和/或触摸显示屏805的下层。当压力传感器813设置在智能移动设备800的侧边框时,可以检测用户对智能移动设备800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在触摸显示屏805的下层时,由处理器801根据用户对触摸显示屏805的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置智能移动设备800的正面、背面或侧面。当智能移动设备800上设置有物理按键或厂商Logo时,指纹传感器814可以与物理按键或厂商Logo集成在一起。
光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制触摸显示屏805的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏805的显示亮度;当环境光强度较低时,调低触摸显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。
接近传感器816,也称距离传感器,通常设置在智能移动设备800的前面板。接近传感器816用于采集用户与智能移动设备800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与智能移动设备800的正面之间的距离逐渐变小时,由处理器801控制触摸显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与智能移动设备800的正面之间的距离逐渐变大时,由处理器801控制触摸显示屏805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图8中示出的结构并不构成对智能移动设备800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在一些实施例中,还提供了一种计算机可读存储介质,该存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中地图构建方法的步骤。例如,所述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机指令可以存储在上述计算机可读存储介质中。
也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的地图构建方法的步骤。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种地图构建方法,其特征在于,所述方法包括:
确定当前图像帧的特征点信息、特征线信息和结构线信息;
基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,所述参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且所述参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前;
基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,所述位姿至少包括第二姿态信息,所述当前图像帧对应的位姿指的是采集所述当前图像帧时图像采集设备的位姿;
若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,对全局地图中所有关键图像帧的姿态信息、对应的地图点位置和地图线位置进行更新,确定更新后的第三姿态信息、对应的地图点位置和地图线位置。
2.如权利要求1所述的方法,其特征在于,所述当前图像帧的结构线包括三个方向的结构线,所述基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,包括:
基于所述当前图像帧的结构线信息,确定所述当前图像帧中每个方向的结构线在所述当前图像帧对应的相机坐标系下的方向向量,得到所述当前图像帧中三个方向的结构线的方向向量;
基于所述参考图像帧的结构线信息,获取所述参考图像帧中三个方向的结构线的方向向量;
获取所述参考图像帧对应的第四姿态信息;
基于所述当前图像帧中结构线的方向向量和所述参考图像帧中结构线的方向向量、以及所述第四姿态信息,确定所述当前图像帧对应的第一姿态信息。
3.如权利要求2所述的方法,其特征在于,所述基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,包括:
基于所述上一个图像帧的位姿,确定所述当前图像帧的初始位姿;
确定所述当前图像帧的特征点信息指示的特征点和特征线信息指示的特征线,以及确定所述上一个图像帧对应的地图点信息指示的地图点和地图线信息指示的地图线;
基于所述当前图像帧的初始位姿,确定所述上一个图像帧对应的地图点在所述当前图像帧中的第一投影点,以及所述上一个图像帧对应的地图线在所述当前图像帧中的第一投影线;
确定所述当前图像帧的特征点中与所述第一投影点匹配的观测点,以及确定所述当前图像帧的特征线中与所述第一投影线匹配的观测线;
基于所述初始位姿、所述第一投影点、所述观测点、所述第一投影线、所述观测线、以及所述第一姿态信息,确定所述当前图像帧对应的位姿。
4.如权利要求3所述的方法,其特征在于,所述基于所述初始位姿、所述第一投影点、所述观测点、所述第一投影线、所述观测线、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,包括:
基于所述第一投影点和所述观测点,确定所述当前图像帧对应的点的第一重投影误差;
基于所述第一投影线和所述观测线,确定所述当前图像帧对应的线的第二重投影误差;
基于所述当前图像帧中三个方向的结构线的方向向量、所述参考图像帧中三个方向的结构线的方向向量、所述第四姿态信息、以及所述第一姿态信息,确定所述当前图像帧对应的第一结构线约束值;
基于所述点的第一重投影误差、所述线的第二重投影误差和所述第一结构线约束值,对所述初始位姿进行迭代运算,得到所述当前图像帧对应的位姿。
5.如权利要求4所述的方法,其特征在于,所述若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,对全局地图中所有关键图像帧的姿态信息、对应的地图点位置和地图线位置进行更新,确定更新后的第三姿态信息、对应的地图点位置和地图线位置,包括:
基于所述当前图像帧中除所述观测点之外的特征点和所述位姿,在所述全局地图中构建所述当前图像帧对应的地图点,以及基于所述当前图像帧中除所述观测线之外的特征线和所述位姿,在所述全局地图中构建所述当前图像帧对应的地图线;
基于所述第一姿态信息,在所述全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定所述全局地图中所有关键图像帧的第三姿态信息。
6.如权利要求5所述的方法,其特征在于,所述基于所述第一姿态信息,在所述全局地图中对所有关键图像帧对应的地图点和地图线进行更新,并重新确定所述全局地图中所有关键图像帧的第三姿态信息,包括:
获取所述全局地图中除所述当前图像帧之外的其他关键图像帧对应的点的第三重投影误差、线的第四重投影误差和第二结构线约束值;
基于所述第一姿态信息、所述点的第三重投影误差、所述线的第四重投影误差、所述第二结构线约束值、所述点的第一重投影误差、所述线的第二重投影误差、以及所述第一结构线约束值,对所述全局地图中所有关键图像帧的姿态信息、地图点位置和地图线位置进行迭代运算,得到更新后的所述全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置;
基于所述更新后的所述全局地图中所有关键图像帧的第三姿态信息、地图点位置和地图线位置,在所述全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
7.如权利要求3所述的方法,其特征在于,所述基于所述初始位姿、所述第一投影点、所述观测点、所述第一投影线、所述观测线、以及所述第一姿态信息,确定所述当前图像帧对应的位姿之后,还包括:
获取共视图像帧对应的地图点信息和地图线信息,所述共视图像帧是指对应的地图点中与所述当前图像帧对应的地图点相同的地图点的第一数量和对应的地图线中与所述当前图像帧对应的地图线相同的地图线的第二数量之和大于第一数量阈值的图像帧;
基于所述当前图像帧的特征点信息和特征线信息、所述共视图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,对所述当前图像帧对应的位姿继续进行迭代运算,重新得到所述当前图像帧对应的位姿。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一姿态信息与所述第二姿态信息之间的误差不大于所述第二阈值,响应于所述当前图像帧为关键图像帧,在所述全局地图中构建所述当前图像帧对应的地图点和地图线,以及重新确定所述当前图像帧和共视关键图像帧的第四姿态信息、对应的地图点和地图线,所述共视关键图像帧是指对应的地图点中与所述当前图像帧对应的地图点相同的地图点的第三数量和对应的地图线中与所述当前图像帧对应的地图线相同的地图线的第四数量之和大于第二数量阈值的关键图像帧。
9.如权利要求8所述的方法,其特征在于,所述响应于所述当前图像帧为关键图像帧,包括:
基于所述当前图像帧对应的位姿,确定所述上一个图像帧对应的地图点在所述当前图像帧中的第二投影点,以及确定所述上一个图像帧对应的地图线在所述当前图像帧中的第二投影线;
基于所述第二投影点和观测点,确定所述当前图像帧对应的点的第五重投影误差,以及基于所述第二投影线和观测线,确定所述当前图像帧对应的线的第六重投影误差;
删除所述当前图像帧的观测点中第五重投影误差大于第一误差阈值的观测点,以及删除所述当前图像帧的观测线中第六重投影误差大于第二误差阈值的观测线;
确定所述当前图像帧中执行删除操作后的观测点与观测线的总数量;
若所述总数量小于第三阈值,确定所述当前图像帧为关键图像帧。
10.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述当前图像帧为关键图像帧,且基于所述当前图像帧确定所述图像采集设备到达历史位置处,获取与所述当前图像帧对应的历史关键图像帧,所述历史关键图像帧的特征点信息与所述当前图像帧的特征点信息的相似度大于第一相似度阈值,且所述历史关键图像帧的特征线信息与所述当前图像帧的特征线信息的相似度大于第二相似度阈值;
获取所述历史关键图像帧对应的地图点信息和地图线信息,以及所述全局地图中除所述当前图像帧和所述历史关键图像帧之外的其他关键图像帧对应的点的第七重投影误差、线的第八重投影误差和第三结构线约束值;
基于所述当前图像帧的特征点信息和特征线信息、所述历史关键图像帧对应的地图点信息和地图线信息、所述当前图像帧的结构线信息、所述参考图像帧的结构线信息、所述点的第七重投影误差、所述线的第八重投影误差、以及所述第三结构线约束值,在所述全局地图中对所有关键图像帧的姿态信息、对应的地图点和地图线进行更新。
11.一种地图构建装置,其特征在于,所述装置包括:
图像采集设备,用于获取当前图像帧;
处理器,用于确定所述当前图像帧的特征点信息、特征线信息和结构线信息;基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,所述参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且所述参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前;基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,所述位姿至少包括第二姿态信息,所述当前图像帧对应的位姿指的是采集所述当前图像帧时图像采集设备的位姿;若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,对全局地图中所有关键图像帧的姿态信息、对应的地图点位置和地图线位置进行更新,确定更新后的第三姿态信息、对应的地图点位置和地图线位置。
12.一种地图构建系统,其特征在于,所述系统包括:
图像采集设备,用于采集当前图像帧;
智能移动设备,用于获取所述图像采集设备采集的当前图像帧,确定所述当前图像帧的特征点信息、特征线信息和结构线信息;基于所述当前图像帧的结构线信息和参考图像帧的结构线信息,确定所述当前图像帧对应的第一姿态信息,所述参考图像帧为包括三个方向的结构线、且包括的结构线的总数量大于第一阈值的图像帧,且所述参考图像帧的图像采集时间位于所述当前图像帧的图像采集时间之前;基于所述当前图像帧的特征点信息和特征线信息、上一个图像帧对应的地图点信息和地图线信息、以及所述第一姿态信息,确定所述当前图像帧对应的位姿,所述位姿至少包括第二姿态信息,所述当前图像帧对应的位姿指的是采集所述当前图像帧时图像采集设备的位姿;若所述第一姿态信息与所述第二姿态信息之间的误差大于第二阈值,确定所述当前图像帧为关键图像帧,基于所述第一姿态信息和所述位姿,对全局地图中所有关键图像帧的姿态信息、对应的地图点位置和地图线位置进行更新,确定更新后的第三姿态信息、对应的地图点位置和地图线位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010791507.9A CN111928861B (zh) | 2020-08-07 | 2020-08-07 | 地图构建方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010791507.9A CN111928861B (zh) | 2020-08-07 | 2020-08-07 | 地图构建方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111928861A CN111928861A (zh) | 2020-11-13 |
CN111928861B true CN111928861B (zh) | 2022-08-09 |
Family
ID=73306601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010791507.9A Active CN111928861B (zh) | 2020-08-07 | 2020-08-07 | 地图构建方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111928861B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112734841B (zh) * | 2020-12-31 | 2023-04-28 | 华南理工大学 | 一种用轮式里程计-imu和单目相机实现定位的方法 |
CN115077467B (zh) * | 2022-06-10 | 2023-08-08 | 追觅创新科技(苏州)有限公司 | 清洁机器人的姿态估计方法、装置及清洁机器人 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106688013A (zh) * | 2014-09-19 | 2017-05-17 | 高通股份有限公司 | 姿态估算的系统和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6503906B2 (ja) * | 2015-06-10 | 2019-04-24 | 富士通株式会社 | 画像処理装置、画像処理方法および画像処理プログラム |
CN107392964B (zh) * | 2017-07-07 | 2019-09-17 | 武汉大学 | 基于室内特征点和结构线结合的室内slam方法 |
CN108090958B (zh) * | 2017-12-06 | 2021-08-27 | 上海阅面网络科技有限公司 | 一种机器人同步定位和地图构建方法和系统 |
CN110631554B (zh) * | 2018-06-22 | 2021-11-30 | 北京京东乾石科技有限公司 | 机器人位姿的确定方法、装置、机器人和可读存储介质 |
CN110657803B (zh) * | 2018-06-28 | 2021-10-29 | 深圳市优必选科技有限公司 | 机器人定位方法、装置以及存储装置 |
CN109579847B (zh) * | 2018-12-13 | 2022-08-16 | 歌尔股份有限公司 | 同步定位与地图构建中关键帧提取方法、装置和智能设备 |
CN111369571B (zh) * | 2020-02-27 | 2023-06-23 | 北京百度网讯科技有限公司 | 三维物体位姿准确性判断方法、装置及电子设备 |
-
2020
- 2020-08-07 CN CN202010791507.9A patent/CN111928861B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106688013A (zh) * | 2014-09-19 | 2017-05-17 | 高通股份有限公司 | 姿态估算的系统和方法 |
Non-Patent Citations (3)
Title |
---|
"Keyframes Global Map Establishing Method for Robot Localization through Content-Based Image Matching";Cao, TY 等;《Journal of Robotics》;20171230;正文第1-16页 * |
基于Vision-IMU的机器人同时定位与地图创建算法;姚二亮等;《仪器仪表学报》;20180415(第04期);正文第230-238页 * |
基于图优化的单目线特征SLAM算法;董蕊芳等;《东南大学学报(自然科学版)》;20171120(第06期);正文第1094-1100页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111928861A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11158083B2 (en) | Position and attitude determining method and apparatus, smart device, and storage medium | |
CN110555883B (zh) | 相机姿态追踪过程的重定位方法、装置及存储介质 | |
CN108682036B (zh) | 位姿确定方法、装置及存储介质 | |
CN108682038B (zh) | 位姿确定方法、装置及存储介质 | |
CN109947886B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN110148178B (zh) | 相机定位方法、装置、终端及存储介质 | |
CN111768454B (zh) | 位姿确定方法、装置、设备及存储介质 | |
CN110986930B (zh) | 设备定位方法、装置、电子设备及存储介质 | |
CN108876854B (zh) | 相机姿态追踪过程的重定位方法、装置、设备及存储介质 | |
JP2022511427A (ja) | 画像特徴点の動き情報の決定方法、タスク実行方法およびデバイス | |
CN109166150B (zh) | 获取位姿的方法、装置存储介质 | |
CN110570465B (zh) | 实时定位与地图构建方法、装置及计算机可读存储介质 | |
CN114170349A (zh) | 图像生成方法、装置、电子设备及存储介质 | |
CN111784841B (zh) | 重建三维图像的方法、装置、电子设备及介质 | |
CN110570460A (zh) | 目标跟踪方法、装置、计算机设备及计算机可读存储介质 | |
CN114092655A (zh) | 构建地图的方法、装置、设备及存储介质 | |
CN112150560A (zh) | 确定消失点的方法、装置及计算机存储介质 | |
CN111928861B (zh) | 地图构建方法及装置 | |
CN110633336B (zh) | 激光数据搜索范围的确定方法、装置及存储介质 | |
CN113160031B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN111179628B (zh) | 自动驾驶车辆的定位方法、装置、电子设备及存储介质 | |
CN118135255A (zh) | 图像匹配模型的训练方法、图像匹配的方法及计算机设备 | |
CN111597285B (zh) | 路网拼接方法、装置、电子设备及存储介质 | |
CN113033590B (zh) | 图像特征匹配方法、装置、图像处理设备及存储介质 | |
CN111583339A (zh) | 获取目标位置的方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |