CN116958251A - 视觉定位方法、装置、电子设备及存储介质 - Google Patents
视觉定位方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116958251A CN116958251A CN202310255495.1A CN202310255495A CN116958251A CN 116958251 A CN116958251 A CN 116958251A CN 202310255495 A CN202310255495 A CN 202310255495A CN 116958251 A CN116958251 A CN 116958251A
- Authority
- CN
- China
- Prior art keywords
- dimensional
- feature
- point
- points
- plane
- 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.)
- Pending
Links
- 230000000007 visual effect Effects 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 239000013598 vector Substances 0.000 claims description 98
- 230000015654 memory Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 21
- 238000013507 mapping Methods 0.000 claims description 19
- 230000004807 localization Effects 0.000 claims description 13
- 230000003190 augmentative effect Effects 0.000 claims description 10
- 238000000605 extraction Methods 0.000 claims description 9
- 230000003287 optical effect Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004422 calculation algorithm Methods 0.000 description 29
- 238000005516 engineering process Methods 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000010276 construction Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 230000036544 posture Effects 0.000 description 4
- 238000012216 screening Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012015 optical character recognition Methods 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/762—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using clustering, e.g. of similar faces in social networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Image Analysis (AREA)
Abstract
本申请提供了一种视觉定位方法、装置、电子设备及存储介质;方法包括:从待定位图像中提取出多个第一平面特征点;从多叉树的多个叶子节点中查找出与任一第一平面特征点匹配的目标叶子节点;从目标场景的三维地图中获取与目标叶子节点对应的多个第一立体特征点;从多个第一立体特征点中确定出目标立体特征点,以与任一第一平面特征点组合为一组匹配点对;从三维地图中获取与目标立体特征点之间的距离小于距离阈值的第二立体特征点;将每个第二立体特征点、以及待定位图像中与第二立体特征点匹配的第一平面特征点组合为一组匹配点对;基于多组匹配点对进行解算位姿操作,得到待定位图像对应的位姿。通过本申请,能够提高视觉定位的效率和精确度。
Description
技术领域
本申请涉及计算机视觉技术领域,尤其涉及一种视觉定位方法、装置、电子设备及存储介质。
背景技术
图像位姿是指相机在拍摄图像时所处的位置和姿态。图像位姿可以应用于增强现实(AR,Augmented Reality)、虚拟现实(VR,Virtual Reality)、混合现实(MR,MixedReality)等场景中,例如可以用于增强现实技术中的地图导航、或者虚拟现实技术中的三维重建等场景。
相关技术中,通常是通过局部特征计算出整张图片的全局特征,例如可以采用词袋模型,通过局部特征出现的频率计算整张图片的得分;或者,采用残差向量,构建局部特征的特征分布,再通过分布直方图的相似性得到两张图片是否相似的得分。然而,这些方法均对二维(2D,2-Dimensions)局部特征(例如2D特征点)进行了一定的近似和整合,以此得到整张图片的特征向量,在过程中损失了较多信息,从而造成获得的相似图片不准确,进而造成最终的图片位姿解算错误;同时,这种先检索相似图片,再进行局部特征匹配的方式,计算量也较大,导致视觉定位的效率较低。
发明内容
本申请实施例提供一种视觉定位方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够提高视觉定位的效率和精确度。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种视觉定位方法,包括:
从待定位图像中提取出多个第一平面特征点,其中,所述待定位图像是针对目标场景进行拍摄得到的;
从预构建的多叉树包括的多个叶子节点中,查找出与任一所述第一平面特征点匹配的目标叶子节点,其中,每个所述叶子节点是与所述目标场景对应的多个第二平面特征点的聚类中心;
从针对所述目标场景预构建的三维地图中,获取与所述目标叶子节点对应的多个第一立体特征点;
从所述多个第一立体特征点中确定出目标立体特征点,以与任一所述第一平面特征点组合为一组匹配点对,其中,所述目标立体特征点是所述三维地图中与任一所述第一平面特征点匹配的立体特征点;
从所述三维地图中获取与所述目标立体特征点之间的距离小于距离阈值的第二立体特征点;
将每个所述第二立体特征点、以及所述待定位图像中与所述第二立体特征点匹配的所述第一平面特征点组合为一组匹配点对;
基于多组所述匹配点对进行解算位姿操作,得到所述待定位图像对应的位姿。
本申请实施例提供一种视觉定位装置,包括:
提取模块,用于从待定位图像中提取出多个第一平面特征点,其中,所述待定位图像是针对目标场景进行拍摄得到的;
查找模块,用于从预构建的多叉树包括的多个叶子节点中,查找出与任一所述第一平面特征点匹配的目标叶子节点,其中,每个所述叶子节点是与所述目标场景对应的多个第二平面特征点的聚类中心;
获取模块,用于从针对所述目标场景预构建的三维地图中,获取与所述目标叶子节点对应的多个第一立体特征点;
确定模块,用于从所述多个第一立体特征点中确定出目标立体特征点,以与任一所述第一平面特征点组合为一组匹配点对,其中,所述目标立体特征点是所述三维地图中与任一所述第一平面特征点匹配的立体特征点;
所述获取模块,还用于从所述三维地图中获取与所述目标立体特征点之间的距离小于距离阈值的第二立体特征点;
组合模块,用于将每个所述第二立体特征点、以及所述待定位图像中与所述第二立体特征点匹配的所述第一平面特征点组合为一组匹配点对;
解算模块,用于基于多组所述匹配点对进行解算位姿操作,得到所述待定位图像对应的位姿。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的视觉定位方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,用于被处理器执行时,实现本申请实施例提供的视觉定位方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或计算机可执行指令,用于被处理器执行时,实现本申请实施例提供的视觉定位方法。
本申请实施例具有以下有益效果:
在将从待定位图像中提取出的平面特征点与从三维地图中提取出的立体特征点进行匹配时,采用多叉树的数据结构进行查找,可以批量获取与任一平面特征点存在匹配可能的多个第一立体特征点,以实现加速匹配,同时还采用了平面特征点和立体特征点之间的交叉筛选匹配的策略,由于第二立体特征点是分布在已经匹配成功的目标立体特征点周围的,因此它在待定位图像中存在匹配的平面特征点的可能性较大,降低了错误匹配的概率,使得匹配结果更加准确,从而在保证了视觉定位求解的位姿准确率的前提下,减少了计算量,提高了视觉定位的效率和精确度。
附图说明
图1是本申请实施例提供的视觉定位系统100的架构示意图;
图2是本申请实施例提供的电子设备500的结构示意图;
图3是本申请实施例提供的视觉定位方法的流程示意图;
图4是本申请实施例提供的视觉定位方法的流程示意图;
图5是本申请实施例提供的视觉定位方法的流程示意图;
图6是本申请实施例提供的视觉定位方法的原理示意图;
图7是本申请实施例提供的视觉定位方法的应用场景示意图;
图8是本申请实施例提供的视觉定位方法的原理示意图;
图9是本申请实施例提供的视觉定位匹配算法的原理示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
可以理解的是,在本申请实施例中,涉及到用户信息等相关的数据(例如用户在三维地图中创建的虚拟对象、或者用户针对目标场景进行拍摄得到的待定位图像),当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
在以下的描述中,所涉及的术语“第一\第二\...”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\...”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)待定位图像对应的位姿:简称图像位姿,也称相机位姿,是指图像采集设备(例如相机)在拍摄图像时所处的位置和姿态。具体是指相机在拍摄图像时,相机坐标系相较于世界坐标系的位置和姿态的变化。其中,位置的变化包括沿世界坐标系的各个轴(例如x轴、y轴、z轴)的位移,位置的变化可以用平移向量t来表示。姿态的变化包括绕世界坐标系的各个轴(例如x轴、y轴、z轴)的角度变化,即俯仰角、偏航角、滚动角的变化,姿态的变化可以用旋转矩阵R来表示。
2)多叉数:又称K叉树,是一种特殊的数据结构。从图的角度看,多叉树等价于连通无环图。因此与一般的图相同,多叉树也由一组叶子节点以及连接的若干条边组成,其中,每个叶子节点是与目标场景对应的多个第二平面特征点(即二维特征点)的聚类中心,且不同的叶子节点对应的聚类中心不同。
3)PnP:全称为Perspective-n-Point,是求解三维(3D)到2D点对运动的方法,PnP是给定待定位图像中2D特征点pi(例如p1,p2,p3……)在相机坐标系下的坐标,和与2D特征点对应的3D特征点Pi(例如P1,P2,P3……)在世界坐标系中的坐标,以及相机的内参数(简称为相机内参),计算待定位图像对应的位姿。其中,相机内参通常用矩阵表示,用于描述相机焦距、光轴和图像交点的位置等属性。
4)即时定位与地图构建(SLAM,Simultaneous Localization and Mapping):也称并发定位与建图(CML,Concurrent Mapping and Localization),它主要的作用是让机器人在未知的环境中,完成定位(Localization),建图(Mapping)和路径规划(Navigation)。目前,SLAM技术被广泛应用于机器人、无人机、无人驾驶、AR、VR等领域,依靠传感器可实现机器的自主定位、建图、路径规划等功能。SLAM系统一般包括前端视觉里程计、后端优化、闭环检测和构图四个主要部分,其中,视觉里程计(Visual Odometry)仅有视觉输入的姿态估计;后端优化(Optimization)是指后端接收不同时刻视觉里程计测量的相机位姿,以及闭环检测的信息,对它们进行优化,得到全局一致的轨迹和地图;闭环检测(Loop Closing)是指机器人在地图构建过程中,通过视觉等传感器信息检测是否发生了轨迹闭环,即判断自身是否进入历史同一地点;建图(Mapping)是指根据估计的轨迹,建立与任务要求对应的地图。
计算机视觉技术(CV,Computer Vision)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、文字识别(OCR,Optical Character Recognition)、视频处理、视频语义理解、视频内容/行为识别、三维(3D,3-Dimensions)物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
相关技术提供的视觉定位方法,通常首先需要通过局部特征计算出整张图片的全局特征,再通过全局特征的匹配,检索出与当前图片最相似的几张图片,接着通过图片之间的二维(2D)局部特征(例如2D特征点)的匹配,映射到二维局部特征与三维地图点特征(例如3D特征点)之间的匹配关系,最后通过空间计算PnP方法,解算出图片对应的位姿(例如相机在拍摄图片时所处的位置和姿态)。
然而,申请人在实施本申请实施例的过程中发现:相关技术提供的方案是通过局部特征计算出整张图片的全局特征,例如采用词袋模型,通过局部特征出现的频率计算整张图片的得分;另一种方法是采用残差向量,构建局部特征的特征分布,再通过分布直方图的相似性得到两张图片是否相似的得分。但是,这些方法均对二维局部特征进行了一定的近似和整合,以此得到整张图片的特征向量,在过程中损失了较多信息,从而造成获得的相似图片不准确,进而造成最终的图片位姿解算操作;同时,这种先检索相似图片,再进行局部特征匹配的方式,计算量较大,导致视觉定位的效率也较低。
鉴于此,本申请实施例提供一种视觉定位方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够提高视觉定位的效率和精确度。下面对本申请实施例提供的电子设备进行说明。本申请实施例提供的电子设备可以实施为终端设备,也可以实施为服务器,或者由终端设备和服务器协同实施。下面以由终端设备和服务器协同实施本申请实施例提供的视觉定位方法为例进行说明。
示例的,参见图1,图1是本申请实施例提供的视觉定位系统100的架构示意图,为实现支撑提高视觉定位的效率和精确度的应用,如图1所示,视觉定位系统100包括:服务器200、网络300和终端设备400,其中,网络300可以是局域网或者广域网,又或者是二者的组合,终端设备400是用户关联的终端设备,在终端设备400上运行有客户端410,客户端410可以是各种类型的客户端,例如包括地图导航客户端、虚拟场景客户端等。
在一些实施例中,用户可以通过终端设备400自带的(或者外接的)图像采集设备(例如相机)对目标场景进行拍摄,得到待定位图像,客户端410在接收到用户输入的待定位图像之后,可以通过网络300向服务器200发送用户输入的待定位图像,服务器200在接收到终端设备400发送的待定位图像之后,可以采用本申请实施例提供的视觉定位方法,确定出待定位图像对应的位姿,随后,服务器200可以通过网络300将确定出的位姿返回给终端设备400。
在另一些实施例中,本申请实施例提供的视觉定位方法也可以由终端设备单独实现,例如以图1中示出的终端设备400为例,客户端410在接收到用户输入的待定位图像之后,可以基于终端设备400自身的运算能力,采用本申请实施例提供的视觉定位方法,确定出待定位图像对应的位姿。
需要说明的是,本申请实施例提供的视觉定位方法也可以应用于游戏场景,例如3D游戏,例如玩家A在3D游戏的虚拟场景中创建了虚拟内容(例如虚拟建筑),玩家B在采用本申请实施例提供的视觉定位方法,得到相机在虚拟场景中所处的位姿之后,可以在3D游戏的虚拟场景的相应位置重现玩家A所创建的虚拟建筑,实现了虚拟内容在不同玩家之间的共享,本申请实施例不对视觉定位方法的应用场景进行具体限定。
在一些实施例中,本申请实施例还可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。
示例的,图1中的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,ContentDelivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端、增强现实设备、虚拟现实设备、混合现实设备、车载终端、无人车、无人机等,但并不局限于此。终端设备400以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
下面继续对本申请实施例提供的电子设备的结构进行说明。以电子设备为服务器为例,参见图2,图2是本申请实施例提供的电子设备500的结构示意图,图2所示的电子设备500包括:至少一个处理器510、存储器540、至少一个网络接口520。电子设备500中的各个组件通过总线系统530耦合在一起。可理解,总线系统530用于实现这些组件之间的连接通信。总线系统530除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统530。
处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器540可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器540可选地包括在物理位置上远离处理器510的一个或多个存储设备。
存储器540包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器540旨在包括任意适合类型的存储器。
在一些实施例中,存储器540能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统541,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块542,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器540中的视觉定位装置543,其可以是程序和插件等形式的软件,包括以下软件模块:提取模块5431、查找模块5432、获取模块5433、确定模块5434、组合模块5435、解算模块5436、聚类模块5437和构建模块5438、,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。需要指出的是,在图2中为了方便表达,一次性示出了上述所有模块,但是不应视为在视觉定位装置543排除了可以只包括提取模块5431、查找模块5432、获取模块5433、确定模块5434、组合模块5435和解算模块5436的实施,将在下文中说明各个模块的功能。
下面将结合本申请实施例提供的服务器的示例性应用和实施,对本申请实施例提供的视觉定位方法进行具体说明。
示例的,参见图3,图3是本申请实施例提供的视觉定位方法的流程示意图,将结合图3示出的步骤进行说明。
在步骤101中,从待定位图像中提取出多个第一平面特征点。
这里,待定位图像是针对目标场景进行拍摄得到的,其中,目标场景可以根据实际应用需要进行设置,可以是室内场景或者室外场景。例如,当需要在室内实现视觉定位的情况下,目标场景可以包含室内;或者,当需要在商业街实现视觉定位的情况下,目标场景可以包括商业街;又或者,当需要在工业园实现视觉定位的情况下,目标场景可以包括工业园,本申请实施例不对目标场景的类型进行具体限定。
在一些实施例中,待定位图像可以是以任意视角针对目标场景进行拍摄得到的,例如,待定位图像可以是针对目标场景进行仰拍得到的;或者,待定位图像也可以是针对目标场景进行俯拍得到的;又或者,待定位图像还可以是针对目标场景进行平拍得到的。
示例的,为了提高后续视觉定位的准确性,在针对目标场景进行拍摄时,相机光轴与水平面之间的夹角可以小于预设的角度阈值,即待定位图像应尽可能包含目标场景,而尽可能少的包含地面、天空等无效区域。
在另一些实施例中,第一平面特征点是指从待定位图像中提取出的二维特征点(即2D特征点),例如,可以采用尺度不变特征变换算法(SIFT,Scale Invariant FeatureTransform)、快速特征点提取和描述算法(ORB,Oriented FAST and Rotated BRIEF)或者加速稳健特征算法(SURF,Speeded-Up Robust Features)等特征提取算法来完成第一平面特征点的提取。其中,第一平面特征点(也可以称为待定位图像的二维局部特征)可以是待定位图像中的角点、边缘点、暗区的亮点、以及亮区的暗点等具有辨识性的点。
在步骤102中,从预构建的多叉树包括的多个叶子节点中,查找出与任一第一平面特征点匹配的目标叶子节点。
这里,多叉树的每个叶子节点是与目标场景对应的多个第二平面特征点的聚类中心,且不同的叶子节点对应的聚类中心不同。
在一些实施例中,参见图4,图4是本申请实施例提供的视觉定位方法的流程示意图,如图4所示,在执行图3示出的步骤102之前,还可以执行图4示出的步骤108至步骤112,将结合图4示出的步骤进行说明。
在步骤108中,获取针对目标场景预先拍摄的多张图像。
在一些实施例中,在执行步骤102之前,需要先构建多叉树,例如可以首先获取针对目标场景预先拍摄的多张图像,并基于从多张图像中提取出的多个第二平面特征点,构建对应的多叉树。例如以目标场景为室内场景为例,可以获取针对室内场景预先拍摄的多张图像,以构建与室内场景对应的多叉树。
在步骤109中,从多张图像中提取出多个第二平面特征点。
这里,第二平面特征点是指从针对目标场景预先拍摄的图像中提取出的二维特征点。此外,从多张图像中提取出多个第二平面特征点的过程,与从待定位图像中提取出多个第一平面特征点的过程类似,即步骤109可以参考上述的步骤101实现,本申请实施例在此不再赘述。
在步骤110中,对多个第二平面特征点进行聚类处理,得到多个簇。
在一些实施例中,可以通过以下方式实现步骤110:从多个第二平面特征点中选取一个第二平面特征点,以作为初始聚类中心;针对每个第二平面特征点,确定第二平面特征点与初始聚类中心之间的特征距离,并根据特征距离确定第二平面特征点作为下一个初始聚类中心的概率,其中,概率与特征距离正相关;基于多个第二平面特征点分别对应的多个概率,获取多个初始聚类中心;确定每个第二平面特征点与多个初始聚类中心之间的特征距离,并将第二平面特征点划分到最小特征距离对应的初始聚类中心所对应的簇中。
示例的,可以从多个第二平面特征点中随机选取出任意一个第二平面特征点,以作为初始聚类中心。
示例的,上述的特征距离可以是指两个特征向量之间的二范数(或者其他范数),或者是指两个特征向量之间的欧式距离,其中,范数是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,范数是一个函数,其为矢量空间内所有矢量赋予非零的正长度或大小,二范数是指空间上两个特征向量之间的直线距离。本申请实施例可以使用二范数、或者欧式距离来衡量两个特征向量之间的相似性。
示例的,可以通过以下方式实现上述的基于多个第二平面特征点分别对应的多个概率,获取多个初始聚类中心:按照概率值从高到低的顺序,对多个第二平面特征点进行排序,并将排序靠前的N个第二平面特征点,作为对应的N个初始聚类中心,其中,N为大于1的正整数,例如当N的取值为10时,可以将排序靠前的10个第二平面特征点,作为对应的10个初始聚类中心。
需要说明的是,除了可以采用K-Means算法对多个第二平面特征点进行聚类处理之外,还可以采用其他聚类算法对多个第二平面特征点进行聚类处理,例如基于密度的空间聚类算法(DBSCAN,Density-Based Spatial Clustering of Applications withNoise)、均值偏移(Mean Shift)聚类算法等,本申请实施例不对多个第二平面特征点进行聚类处理时所采用的聚类算法进行具体限定。
在步骤111中,针对每个簇,确定簇包括的至少一个第二平面特征点对应的中心点,并将中心点作为簇对应的聚类中心。
在一些实施例中,以多个簇中的簇A为例,可以计算簇A包括的至少一个第二平面特征点对应的中心点,以作为簇A对应的聚类中心。
示例的,以簇A为例,可以计算簇A包括的至少一个第二平面特征点的平均值,并将平均值作为簇A对应的聚类中心。
在步骤112中,以每个聚类中心作为对应的一个叶子节点,构建多叉树。
在一些实施例中,在得到多个簇分别对应的多个聚类中心之后,可以将每个聚类中心作为多叉树中的一个叶子节点,以构建对应的多叉树。
在另一些实施例中,可以通过以下方式实现上述的步骤102:对任一第一平面特征点进行编码处理,得到任一第一平面特征点对应的二维特征向量;分别对多个叶子节点一一对应的多个聚类中心进行编码处理,得到每个叶子节点对应的二维特征向量;依次确定任一第一平面特征点对应的二维特征向量,与每个叶子节点对应的二维特征向量之间的特征距离;将最小特征距离对应的叶子节点,作为与任一第一平面特征点匹配的目标叶子节点。
示例的,在从待定位图像中提取出多个第一平面特征点之后,可以从多个第一平面特征点中随机选择出一个第一平面特征点,例如以任一第一平面特征点为2D特征点A为例,可以首先对2D特征点A进行编码处理(例如可以采用多层感知机、或者卷积神经网络等对2D特征点A进行编码处理),得到2D特征点A对应的二维特征向量;接着,可以分别对多叉树的多个叶子节点(例如假设多叉树有10个叶子节点,分别为叶子节点1至叶子节点10)一一对应的多个聚类中心(例如10个聚类中心)进行编码处理,得到这10个叶子节点分别对应的二维特征向量;随后,可以依次计算2D特征点A对应的二维特征向量,与这10个叶子节点分别对应的二维特征向量之间的特征距离(例如依次计算2D特征点A对应的二维特征向量,与这10个叶子节点分别对应的二维特征向量之间的二范数,或者欧式距离);最后,将最小特征距离对应的叶子节点(假设为叶子节点3),作为与2D特征点A匹配的目标叶子节点,即多叉树中的叶子节点3是与2D特征点A匹配的目标叶子节点。
在步骤103中,从针对目标场景预构建的三维地图中,获取与目标叶子节点对应的多个第一立体特征点。
在一些实施例中,参见图5,图5是本申请实施例提供的视觉定位方法的流程示意图,如图5所示,在执行图3示出的步骤103之前,还可以执行图5示出的步骤113至步骤115,将结合图5示出的步骤进行说明。
在步骤113中,构建目标场景的三维地图。
在一些实施例中,可以采用SLAM技术来构建目标场景的三维地图,例如在采用SLAM技术构建目标场景的三维地图的过程中,可以针对目标场景拍摄多张图像,得到图像序列,然后根据图像序列来构建目标场景的三维地图。
下面对SLAM技术的原理进行具体说明。
示例的,SLAM技术包括定位和建图,其中,定位是定位机体在世界坐标系下的位姿。单传感器机体一般指相机光心、激光雷达扫描(Scan)中心、惯性测量单元(IMU,Inertial Measurement Unit)中心、编码器两轮轴心,多传感器一般使用IMU中心,可以避免离心力的影响。位姿包括3个自由度的位置和3个自由度的姿态。世界坐标系的原点和姿态可以由第一帧关键帧、已有的全局地图或者路标点、全球定位系统(GPS,GlobalPositioning System)得到。建图是建立机器人所感知周围环境的地图,地图基本几何元素是点,点没有方向,只有3个自由度的位置。可以是稀疏点、稠密点、栅格地图、八叉树地图和拓扑地图等。地图的主要作用是定位、导航等。
SLAM系统一般由前端、后端和回环检测组成,其中,前端的频率为传感器的帧率,数据关联(例如特征点匹配、光流法等)、初始化、通过几何方法或很小范围优化,即可快速得到当前帧的机体姿态的较准确的初值、重定位(跟丢时)和全局定位(开机或者机器人被绑架时)。当前帧一般只参照前一帧或者前几帧,故随着关键帧增多累积误差会变大。后端的频率为关键帧率,关键帧需要在保证跟随质量的同时,尽量减少帧的数量,帧的时间间隔主要与机器人的运动线速度、角速度(速度越快越容易跟随丢失)、视野(距离太近更容易跟随丢失)和环境中的特征结构(特征点稀疏或者拐角更容易丢失)有关。回环检测的频率不确定,一般远远低于前两个,与回环数量有关,会设置最高频率使得不在短距离内检测闭环。通过数据关联找到之前到过的地方,发现回环之后先使用相似变换的方法调整与闭环帧关联的关键帧的位姿,然后优化回环内的所有关键帧和点,最后再进行一次全局优化。通过上述步骤可以得到稀疏点地图,根据不同需求可以建立其他格式的地图,例如3D地图。
在步骤114中,从三维地图中提取出多个立体特征点。
这里,立体特征点是指从三维地图中提取出的三维特征点(即3D特征点)。例如,可以采用尺度不变特征变换算法、或者加速稳健特征算法从三维地图中提取出多个三维特征点,其中,三维特征点是三维地图中具有辨识性的点,例如可以是三维地图中的边缘点、或者像素值发生突变的点等。
在步骤115中,将每个立体特征点与多叉树中匹配的叶子节点进行绑定,以构建多个叶子节点与多个立体特征点之间的映射关系。
在一些实施例中,可以通过以下方式实现上述的将每个立体特征点与多叉树中匹配的叶子节点进行绑定:针对每个立体特征点,执行以下处理:对立体特征点进行编码处理,得到立体特征点对应的三维特征向量;分别对多个叶子节点一一对应的多个聚类中心进行编码处理,得到每个叶子节点对应的二维特征向量;依次确定立体特征点对应的三维特征向量,与每个叶子节点对应的二维特征向量之间的特征距离;将最小特征距离对应的叶子节点,作为与立体特征点匹配的叶子节点,并建立立体特征点与匹配的叶子节点之间的绑定关系。
示例的,以多个立体特征点中的3D特征点A为例,可以首先采用多层感知机对3D特征点A进行编码处理,得到3D特征点A对应的三维特征向量,接着分别对多叉树中的多个叶子节点(假设多叉树有10个叶子节点,分别为叶子节点1至叶子节点10)一一对应的多个聚类中心(例如10个聚类中心)进行编码处理,得到这10个聚类中心分别对应的二维特征向量,随后可以依次计算3D特征点A对应的三维特征向量,与这10个叶子节点分别对应的二维特征向量之间的二范数(或者欧式距离),并将最小二范数对应的叶子节点(假设为叶子节点4),作为与3D特征点A匹配的叶子节点,并建立3D特征点A与叶子节点4之间的绑定关系,即将3D特征点A分配到多叉树的叶子节点4上。
在一些实施例中,在构建多个立体特征点与多个叶子节点之间的映射关系之后,可以通过以下方式实现上述的步骤103:基于映射关系,获取三维地图中与目标叶子节点具有绑定关系的多个立体特征点;将与目标叶子节点具有绑定关系的多个立体特征点,作为与目标叶子节点对应的多个第一立体特征点。
示例的,以目标叶子节点为多叉树中的叶子节点4为例,可以基于预先构建的映射关系,查找三维地图中与叶子节点4具有绑定关系的3D特征点,例如假设包括3D特征点A、3D特征点B、3D特征点C,则可以将3D特征点A、3D特征点B、以及3D特征点C作为与叶子节点4对应的多个第一立体特征点。
在步骤104中,从多个第一立体特征点中确定出目标立体特征点,以与任一第一平面特征点组合为一组匹配点对。
这里,第一立体特征点是指三维地图中与目标叶子节点具有绑定关系的三维特征点,目标立体特征点是三维地图中与任一第一平面特征点匹配的三维特征点。
在一些实施例中,可以通过以下方式实现上述的从多个第一立体特征点中确定出目标立体特征点:对任一第一平面特征点进行编码处理,得到任一第一平面特征点对应的二维特征向量;分别对多个第一立体特征点进行编码处理,得到每个第一立体特征点对应的三维特征向量;依次确定任一第一平面特征点对应的二维特征向量,与每个第一立体特征点对应的三维特征向量之间的特征距离;获取多个特征距离中的最小特征距离与次特征距离之间的比值,其中,次特征距离在多个特征距离中仅次于最小特征距离;当比值小于或等于比值阈值(例如假设为0.1)时,将最小特征距离对应的第一立体特征点作为目标立体特征点。
示例的,以任一第一平面特征点为2D特征点A、多个第一立体特征点为3D特征点A、3D特征点B、以及3D特征点C为例,可以首先采用多层感知机、或者卷积神经网络等对2D特征点A进行编码处理,得到2D特征点A对应的二维特征向量,以及采用多层感知机、或者卷积神经网络等分别对3D特征点A、3D特征点B、以及3D特征点C进行编码处理,对应得到3D特征点A对应的三维特征向量、3D特征点B对应的三维特征向量、以及3D特征点C对应的三维特征向量,接着可以依次计算2D特征点A对应的二维特征向量,与3D特征点A对应的三维特征向量、3D特征点B对应的三维特征向量、以及3D特征点C对应的三维特征向量之间的二范数,随后可以获取多个二范数中的最小二范数与第二小二范数的比值,当该比值小于设定的比值阈值时(即与2D特征点A最相似的3D特征点,和与2D特征点A第二相似的3D特征点之间的差别较大),说明最小二范数对应的3D特征点(假设为3D特征点B)很独特,则可以将3D特征点B作为与2D特征点A匹配的目标三维特征点,并将从待定位图像中提取的2D特征点A和从三维地图中提取的3D特征点B组合为一组匹配点对。也就是说,2D特征点A和3D特征点B对应目标场景中的同一个点。
在另一些实施例中,承接上述示例,当上述的比值大于比值阈值时,说明这3个3D特征点中均不存在与2D特征点A匹配的3D特征点,则可以舍弃2D特征点A,并从基于步骤101得到的多个第一平面特征点中,选取其他的第一平面特征点(例如2D特征点B),并重新执行上述的步骤102至步骤104,直至成功找到一组匹配点对。
在步骤105中,从三维地图中获取与目标立体特征点之间的距离小于距离阈值的第二立体特征点。
这里,第二立体特征点是指三维地图中与目标立体特征点之间的距离小于距离阈值的三维特征点。
在一些实施例中,在从多个第一立体特征点中确定出目标立体特征点之后,可以进一步从三维地图中获取与目标立体特征点之间的距离小于距离阈值的第二立体特征点,例如以目标立体特征点为3D特征点C为例,假设从三维地图提取的多个3D特征点中,3D特征点D和3D特征点E与3D特征点C之间的距离小于距离阈值,则可以将3D特征点D和3D特征点E作为第二立体特征点。
需要说明的是,由于第二立体特征点是三维地图中靠近目标立体特征点的立体特征点,因此,在待定位图像中找到与第二立体特征点匹配的第一平面特征点的可能性较大,从而可以提高匹配速度,进而提高视觉定位的效率。
在步骤106中,将每个第二立体特征点、以及待定位图像中与第二立体特征点匹配的第一平面特征点组合为一组匹配点对。
在一些实施例中,可以通过以下方式实现步骤106:针对每个第二立体特征点,执行以下处理:对第二立体特征点进行编码处理,得到第二立体特征点对应的三维特征向量;分别对多个第一平面特征点进行编码处理,得到每个第一平面特征点对应的二维特征向量;依次确定第二立体特征点对应的三维特征向量,与每个第一平面特征点对应的二维特征向量之间的特征距离;将最小特征距离对应的第一平面特征点,作为与第二立体特征点匹配的第一平面特征点,并与第二立体特征点组合为一组匹配点对。
示例的,以多个第一平面特征点为2D特征点A、2D特征点B、2D特征点C、以及以第二立体特征点为3D特征点E为例,可以首先采用多层感知机、或者卷积神经网络等对3D特征点E进行编码处理,得到3D特征点E对应的三维特征向量;接着可以采用多层感知机、或者卷积神经网络等分别对2D特征点A、2D特征点B、2D特征点C进行编码处理,对应得到2D特征点A对应的二维特征向量、2D特征点B对应的二维特征向量、以及2D特征点C对应的二维特征向量,随后可以依次计算3D特征点E对应的三维特征向量,与2D特征点A对应的二维特征向量、2D特征点B对应的二维特征向量、以及2D特征点C对应的二维特征向量之间的二范数,并将最小二范数对应的2D特征点(例如假设为2D特征点B),作为与3D特征点E匹配的2D特征点,并将2D特征点B和3D特征点E组合为一组匹配点对。
在另一些实施例中,承接上述示例,在依次计算出3D特征点E对应的三维特征向量,与2D特征点A对应的二维特征向量、2D特征点B对应的二维特征向量、以及2D特征点C对应的二维特征向量之间的二范数之后,还可以进一步获取多个二范数中最小二范数与第二小二范数之间的比值,当该比值小于设定的比值阈值(例如0.1)时,说明最小二范数对应的2D特征点是比较独特的,则可以将最小二范数对应的2D特征点(例如假设为2D特征点B)作为与3D特征点E匹配的2D特征点;当该比值大于设定的比值阈值时,说明这3个2D特征点之间的区别不大,则可以确定这3个2D特征点中不存在与3D特征点E匹配的2D特征点。此时,可以舍弃3D特征点E,并对其他的第二立体特征点(例如3D特征点F)编码处理,得到3D特征点F对应的三维特征向量,并依次计算3D特征点F对应的三维特征向量,与2D特征点A对应的二维特征向量、2D特征点B对应的二维特征向量、以及2D特征点C对应的二维特征向量之间的二范数,以从这3个2D特征点中确定出与3D特征点F匹配的2D特征点(例如假设为2D特征点B),并将2D特征点B和3D特征点F组合为一组匹配点对,从而得到多组匹配点对。
在步骤107中,基于多组匹配点对进行解算位姿操作,得到待定位图像对应的位姿。
这里,待定位图像对应的位姿为图像采集设备在拍摄待定位图像时所处的位姿(包括位置和姿态)。
在一些实施例中,可以通过以下方式实现上述的步骤107:获取图像采集设备的内参数,其中,内参数用于描述图像采集设备的焦距、光轴、以及图像交点的位置;基于多组匹配点对、以及图像采集设备的内参数进行解算位姿操作,得到图像采集设备在拍摄待定位图像时在目标场景中所处的位姿。
示例的,以图像采集设备为相机为例,在获取到多组匹配点对之后,可以基于多组匹配点对、以及相机内参进行解算位姿操作,得到相机在拍摄待定位图像时所处的位置和姿态。例如,可以将待定位图像中的2D特征点pi用图6中的空心圆圈表示,其在相机坐标系中的坐标为[u,v]T,齐次坐标表示为[u,v,1]T;与2D特征点对应的3D特征点Pi用图6中的实心圆圈表示,其在世界坐标系中的坐标为[Xw,Yw,Zw]T,齐次坐标可以表示为[Xw,Yw,Zw,1]T,假设相机内参矩阵为K,求解相机的位置t和姿态R。
举例来说,一组匹配点对(例如由2D特征点A和对应的3D特征点A组合成的匹配点对)的投影变换方程可以表示为如下的方程1:
其中,Zc表示相机坐标系下的深度值。
将方程1进行展开即可得到如下的方程2:
其中,fij表示K得到的变换矩阵中的一个元素。
将上述方程2写成方程组的形式,可得到如下的方程组1:
Zc·u=f11·Xw+f12·Yw+f13·Zw+f14
Zc·v=f21·Xw+f22·Yw+f23·Zw+f24 方程组1
Zc=f31·Xw+f32·Yw+f33·Zw+f34
将上述方程组1消去Zc,即可得到如下的方程组2:
可以看出,一组匹配点对对应方程组2中的两个方程,共12个(即f11至f34)未知数,因此需要至少6组匹配点对才能解算出相机的位置t和姿态R。
需要说明的是,上述示例仅说明了需要6组匹配点对来解算出相机的位置t和姿态R的实现原理。但是,可以采用优化的PnP算法,此时可以仅需3组匹配点对即可求解出相机的位置t和姿态R。也就是说,在采用PnP算法解算相机的位姿时,需要N组匹配点对来进行求解,其中,N为大于或者等于3的正整数。
在另一些实施例中,还可以结合随机抽样一致算法(RANSAC,Random Sample Consensus)来进行相机位姿的解算,其中,RANSAC算法是根据一组包含异常数据的样本数据集,计算出数据的数学模型参数,得到有效样本数据的算法。以采用PnP算法求解相机的位姿为例,则数据集是指N组匹配点对,模型是指相机的位置t和姿态R。例如可以将RANS AC算法用于PnP求解相机位姿的场景,即可以反复选择(例如随机选择)N组匹配点对来进行位姿解算,直至得到比较好的位置t和姿态R才结束计算。如此,通过反复选择2D特征点和对应的3D特征点来求解相机的位置t和姿态R,可以避免因为将对应关系不准确的2D特征点和3D特征点用于计算,而导致最终求解得到的位置t和姿态R不合理的情况,从而进一步提升位姿解算的准确性。
示例的,以多组匹配点对为5组匹配点对为例(假设2D特征点pi和3D特征点Pi一一对应),分别为匹配点对1(假设为p1和P1)、匹配点对2(假设为p2和P2)、匹配点对3(假设为p3和P3)、匹配点对4(假设为p4和P4)和匹配点对5(假设为p5和P5),则第一次可以选择匹配点对1(即p1和P1)、匹配点对2(即p2和P2)和匹配点对3(即p3和P3)这三组匹配点对来进行相机位姿的解算。在第一次计算得到相机的位置t和姿态R之后,可以评估位置t和姿态R的质量,若质量不满足要求,则可以从上述5组匹配点对中重新选择3组匹配点对来求解位置t和姿态R,例如可以选择匹配点对2(即p2和P2)、匹配点对3(即p3和P3)和匹配点对5(即p5和P5)进行相机位姿的解算。在第二次计算得到相机的位置t和姿态R之后,可以再次评估位置t和姿态R的质量,若质量仍不满足要求,则可以第三次选择匹配点对进行相机位姿的解算,以此类推,直至计算得到的位置t和姿态R满足质量要求,则结束计算。
在一些实施例中,在采用RANSAC算法和PnP算法来进行位姿解算操作时,每一轮迭代过程中,可以按照均匀分布从多组匹配点对中随机选择出N组匹配点对进行计算,也就是说,每组匹配点对被选中的概率是相同的。当然,也可以采用其他分布从多组匹配点对中随机选择出N组匹配点对进行计算,本申请实施例对此不做具体限定。
在另一些实施例中,在得到待定位图像对应的位姿之后,还可以执行以下处理:从目标场景的增强现实数据中查询与位姿关联的虚拟对象数据,其中,虚拟对象数据用于在目标场景的位置叠加显示对应的虚拟对象。
示例的,以目标场景为室内场景为例,假设用户A针对室内场景预先构建了增强现实数据,则用户B在基于本申请实施例提供的视觉定位方法,得到待定位图像对应的位姿之后,可以从用户A针对目标场景构建的增强现实数据中查询与位姿关联的虚拟对象数据(例如虚拟对象A的数据),随后用户B在得到虚拟对象数据之后,可以基于虚拟对象数据在室内场景的位置叠加显示虚拟对象A,从而实现了场景的重建。
本申请实施例提供的视觉定位方法,在将从待定位图像中提取出的平面特征点与从三维地图中提取出的立体特征点进行匹配时,采用多叉树的数据结构进行查找,可以批量获取与任一平面特征点存在匹配可能的多个第一立体特征点,以实现加速,同时还采用了平面特征点和立体特征点之间的交叉筛选匹配的策略,由于第二立体特征点是分布在已经匹配成功的目标立体特征点周围的,因此它在待定位图像中存在匹配的平面特征点的可能性较大,降低了错误匹配的概率,使得匹配结果更加准确,从而在保证了视觉定位求解的位姿准确率的前提下,减少了计算量,提高了视觉定位的效率和精确度。
下面,以虚拟现实场景为例,说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例提供一种视觉定位方法,可以应用于虚拟现实设备。在虚拟现实设备(例如包括头显或者手柄)上,通常会安装多个用于拍摄周围空间环境的相机,利用这些相机,可以感知周围的环境。通过相机首先对周边环境进行地图构建,再通过相机的视觉定位方法可以实现在空间中进行持久化的定位能力。同时,在此空间中的多台设备可以共享构建的地图,并在同一坐标系下完成视觉定位,以此完成不同设备之间的交互。
下面对本申请实施例提供的视觉定位方法进行具体说明。
本申请实施例提供的视觉定位方法,通常直接匹配需要定位的图片(对应于上述的待定位图像)的二维局部特征(对应于上述的第一平面特征点,例如从需要定位的图片中提取出的2D特征点)和构建的三维地图点(对应于上述的立体特征点,例如从三维地图中提取出的3D特征点)之间的对应关系,并通过空间位姿计算PnP方法,解算出图片对应的位姿(例如相机在拍摄图片时在空间中所处的位置和姿态)。在将图片的二维局部特征和三维地图点之间进行匹配时,采用K叉树的数据结构进行加速,同时为了平衡计算效率和匹配准确性,本申请实施例提供的技术方案还设计了一种二维局部特征和三维地图点之间交叉筛选匹配的策略。本申请实施例在计算过程中灵活使用了多种特征匹配策略,保证了视觉定位求解的位姿准确率的同时,减少了计算量,相较于相关技术提供的视觉定位方法,在虚拟现实设备上取得了更好的效果。
在一些实施例中,参见图7,图7是本申请实施例提供的视觉定位方法的应用场景示意图,如图7所示,本申请实施例提供的技术方案可以应用于虚拟现实设备(例如包括头显或者手柄)在预先构建三维地图的空间(对应于上述的目标场景)中进行位姿解算。本申请实施例主要提供了2类应用场景,第一是场景的持久化。例如以用户A为例,用户A首次体验并对空间进行地图构建之后,3D地图以及在3D地图中用户创建的虚拟内容(例如虚拟对象)会被保存;在后续用户A进入相同的空间时,利用本申请实施例提供的视觉定位方法,即可重新在之前的3D地图中获得虚拟现实设备当前的6DoF(即6个自由度,包括三个方向上的平移运动和旋转运动)位置和姿态,进而完成之前创建的虚拟内容及其空间位置的重现。第二,场景在不同用户间的虚拟空间的实时共享。如图7所示,用户A在对空间进行地图构建,并在所构建的3D地图中创建虚拟内容后,可以将3D地图以及虚拟内容共享给其他用户(例如包括用户B、用户C、用户D等),以用户B为例,用户B可以利用本申请实施例提供的视觉定位方法,即可在用户A创建的3D地图中获得虚拟现实设备当前的6DoF位置和姿态,进而进行用户A创建的虚拟内容及其空间位置的显示,从而完成用户A和用户B之间虚拟空间的实时共享。
示例的,参见图8,图8是本申请实施例提供的视觉定位方法的原理示意图,如图8所示,本申请实施例提供的视觉定位方法,通过匹配图片上的二维局部特征和三维地图中的三维地图点,得到多组匹配点对(例如包括由二维局部特征801和三维地图点802组合成的匹配点对1、由二维局部特征803和三维地图点804组合成的匹配点对2等),再基于多组匹配点对,解算相机在拍摄图片时在空间中所处的位姿。
本申请实施例提供的视觉定位方法主要包括训练K叉树、建图、视觉定位匹配算法、以及PnP解算位姿四个步骤,下面分别对每个步骤进行具体说明。
第一步,训练K叉树:首先挑选一个图片数据集,例如可以选择开源的Bovisa数据集,对其中所有的图片进行局部特征的提取,然后对这些提取得到的二维局部特征(例如2D特征点)利用K-Means算法进行聚类处理,形成一个K叉树,其中,每个聚类中心可以作为K叉树对应的一个叶子节点,如图9所示,假设k=10,d=4。这里采用的是K-Means算法,针对K叉树的层数会层级式地使用K-Means算法,例如这里使用了4层的K叉树,那么每一层均会使用K-Means算法将每层的节点切分为k个聚类中心。K-Means算法的具体步骤如下:首先从所有图片的2D局部特征中随机选择一个样本点(即2D局部特征)作为初始聚类中心,接着根据每个2D局部特征与初始聚类中心之间的特征距离,计算它被选为下一个聚类中心的概率,距离越远,则概率越高。重复选择,直至选取出10个初始聚类中心。接下来计算每个2D局部特征与这10个初始聚类中心之间的特征距离,并将每个2D局部特征划分到距离最小的聚类中心所对应的簇中,最终重新计算各聚类中心所对应的簇中所有2D局部特征的平均值,以作为新的聚类中心,依次执行此步骤,直至聚类中心不再变化。
需要说明的是,本申请实施例除了可以构建K叉树来加速检索外,还可以构建其他种类的树,或者其他数据结构,例如随机排序(Random Grids)来进行加速检索,本申请实施例对此不做具体限定。
第二步,建图:例如可以通过SLAM相关算法,构建场景的三维地图,并将三维地图中的三维地图点保存下来,这里需要保存的信息包括三维地图点在场景中的空间坐标(假设记为Pw),三维地图点被哪些2D局部特征观测到、以及这些2D局部特征的局部特征向量(假设记为vDesc)。接着可以利用第一步训练得到的K叉树,将每个三维地图点依次分配到K叉树对应的叶子节点上(由于每个叶子节点对应一个聚类中心,即将三维地图点与对应的聚类中心进行绑定),以此可以得到叶子节点和各个三维地图点之间的映射关系。
第三步,视觉定位匹配算法:如图9所示,对于需要定位的图片,在从图片中提取出2D特征点之后,可以通过第一步训练得到的K叉树,快速得到与当前2D特征点匹配的聚类中心(即K叉树中与当前2D特征点之间的特征距离最小的叶子节点,即上述的目标叶子节点),接着可以通过第二步构建的聚类中心与三维地图点之间的映射关系,筛选出与当前2D特征点有匹配可能的Nm个三维地图点(对应于上述的多个第一立体特征点),随后可以比较Nm个三维地图点和当前2D特征点之间的特征距离(例如特征向量之间的二范数),筛选出距离足够近(例如小于距离阈值Th0),并且与距离第二近的三维地图点之间的比值足够小(例如小于比值阈值Th1)的三维地图点;若不存在这样的三维地图点,则跳过该2D特征点,直至找到一组2D-3D匹配点对。接下来,通过找到的三维地图点(对应于上述的目标立体特征点),找到在空间中距离最近的Nn个三维地图点(对应于上述的第二立体特征点)。对于Nn个三维地图点中的每个三维地图点,和图片中的2D特征点进行3D-2D匹配。由于这Nn个三维地图点分布在之前找到的三维地图点周围,因此它在图片中有匹配的2D特征点可能性较大,从而可以加速找到更多的匹配点对。同时,由于存在空间上临近的关系,也降低了错误匹配的概率。也就是说,通过这种2D-3D,再进行3D-2D的交叉匹配方式,可以在保证匹配准确率的基础上,极大提升匹配速度。
第四步,PnP解算位姿:在得到多组2D-3D匹配点对之后,可以采用位姿解算算法,例如PnP算法,计算出相机在拍摄图片时所处的位姿,其中,PnP是Perspective-n-Point的缩写,在给定三维地图点的坐标Pw,对应匹配的2D特征点坐标Pxy、以及相机的内参矩阵K之后,就可以计算出相机在空间中所处的位姿。
本申请实施例提供的视觉定位方法,相较于相关技术提供的方案(例如词袋方案,或者VLAD方案,这些方案均需要首先利用图像检索,得到与当前图片相似的几张图片后,进行图片之间2D局部特征的匹配,最终映射为2D局部特征和3D地图点之间的匹配,存在相似图片检索错误率高、以及计算量大的缺点),无需进行图像检索的中间步骤,直接匹配图片中的2D局部特征和三维地图点,从而可以快速获得准确率高的匹配关系,保证最终得到的位姿更加精确。这不仅保障了虚拟空间坐标系的一致,而且可以用于多个用户之间虚拟空间的共享。
下面继续说明本申请实施例提供的视觉定位装置543的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器540的视觉定位装置543中的软件模块可以包括:提取模块5431、查找模块5432、获取模块5433、确定模块5434、组合模块5435和解算模块5436。
提取模块5431,用于从待定位图像中提取出多个第一平面特征点,其中,待定位图像是针对目标场景进行拍摄得到的;查找模块5432,用于从预构建的多叉树包括的多个叶子节点中,查找出与任一第一平面特征点匹配的目标叶子节点,其中,每个叶子节点是与目标场景对应的多个第二平面特征点的聚类中心;获取模块5433,用于从针对目标场景预构建的三维地图中,获取与目标叶子节点对应的多个第一立体特征点;确定模块5434,用于从多个第一立体特征点中确定出目标立体特征点,以与任一第一平面特征点组合为一组匹配点对,其中,目标立体特征点是三维地图中与任一第一平面特征点匹配的立体特征点;获取模块5433,还用于从三维地图中获取与目标立体特征点之间的距离小于距离阈值的第二立体特征点;组合模块5435,用于将每个第二立体特征点、以及待定位图像中与第二立体特征点匹配的第一平面特征点组合为一组匹配点对;解算模块5436,用于基于多组匹配点对进行解算位姿操作,得到待定位图像对应的位姿。
在一些实施例中,获取模块5433,还用于获取针对目标场景预先拍摄的多张图像;提取模块5431,还用于从多张图像中提取出多个第二平面特征点;视觉定位装置543还包括聚类模块5437,用于对多个第二平面特征点进行聚类处理,得到多个簇;确定模块5434,还用于针对每个簇,确定簇包括的至少一个第二平面特征点对应的中心点,并将中心点作为簇对应的聚类中心;视觉定位装置543还包括构建模块5438,用于以每个聚类中心作为对应的一个叶子节点,构建多叉树。
在一些实施例中,聚类模块5437,还用于从多个第二平面特征点中选取一个第二平面特征点,以作为初始聚类中心;针对每个第二平面特征点,确定第二平面特征点与初始聚类中心之间的特征距离,并根据特征距离确定第二平面特征点作为下一个初始聚类中心的概率,其中,概率与特征距离正相关;基于多个第二平面特征点分别对应的多个概率,获取多个初始聚类中心;确定每个第二平面特征点与多个初始聚类中心之间的特征距离,并将第二平面特征点划分到最小特征距离对应的初始聚类中心所对应的簇中。
在一些实施例中,查找模块5432,还用于对任一第一平面特征点进行编码处理,得到任一第一平面特征点对应的二维特征向量;分别对多个叶子节点一一对应的多个聚类中心进行编码处理,得到每个叶子节点对应的二维特征向量;依次确定任一第一平面特征点对应的二维特征向量,与每个叶子节点对应的二维特征向量之间的特征距离;将最小特征距离对应的叶子节点,作为与任一第一平面特征点匹配的目标叶子节点。
在一些实施例中,构建模块5438,还用于构建目标场景的三维地图;提取模块5431,还用于从三维地图中提取出多个立体特征点;构建模块5438,还用于将每个立体特征点与多叉树中匹配的叶子节点进行绑定,以构建多个叶子节点与多个立体特征点之间的映射关系。
在一些实施例中,构建模块5438,还用于针对每个立体特征点,执行以下处理:对立体特征点进行编码处理,得到立体特征点对应的三维特征向量;分别对多个叶子节点一一对应的多个聚类中心进行编码处理,得到每个叶子节点对应的二维特征向量;依次确定立体特征点对应的三维特征向量,与每个叶子节点对应的二维特征向量之间的特征距离;将最小特征距离对应的叶子节点,作为与立体特征点匹配的叶子节点,并将立体特征点与匹配的叶子节点之间进行绑定。
在一些实施例中,获取模块5433,还用于基于映射关系,获取三维地图中与目标叶子节点绑定的多个立体特征点;将与目标叶子节点绑定的多个立体特征点,作为与目标叶子节点对应的多个第一立体特征点。
在一些实施例中,确定模块5434,还用于对任一第一平面特征点进行编码处理,得到任一第一平面特征点对应的二维特征向量;分别对多个第一立体特征点进行编码处理,得到每个第一立体特征点对应的三维特征向量;依次确定任一第一平面特征点对应的二维特征向量,与每个第一立体特征点对应的三维特征向量之间的特征距离;获取多个特征距离中的最小特征距离与次特征距离之间的比值,其中,次特征距离在多个特征距离中仅次于最小特征距离;当比值小于或等于比值阈值时,将最小特征距离对应的第一立体特征点作为目标立体特征点。
在一些实施例中,组合模块5435,还用于针对每个第二立体特征点,执行以下处理:对第二立体特征点进行编码处理,得到第二立体特征点对应的三维特征向量;分别对多个第一平面特征点进行编码处理,得到每个第一平面特征点对应的二维特征向量;依次确定第二立体特征点对应的三维特征向量,与每个第一平面特征点对应的二维特征向量之间的特征距离;将最小特征距离对应的第一平面特征点,作为与第二立体特征点匹配的第一平面特征点,并与第二立体特征点组合为一组匹配点对。
在一些实施例中,待定位图像对应的位姿为图像采集设备在拍摄待定位图像时所处的位姿;获取模块5433,还用于获取图像采集设备的内参数,其中,内参数用于描述图像采集设备的焦距、光轴、以及图像交点的位置;解算模块5436,还用于基于多组匹配点对、以及图像采集设备的内参数进行解算位姿操作,得到图像采集设备在拍摄待定位图像时,在目标场景中所处的位置和姿态。
在一些实施例中,查找模块5432,还用于从目标场景的增强现实数据中查询与位姿关联的虚拟对象数据,其中,虚拟对象数据用于在目标场景的位置叠加显示对应的虚拟对象。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本申请实施例提供的视觉定位装置中未尽的技术细节,可以根据图3、图4、或图5任一附图的说明而理解。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机可执行指令,该计算机程序或计算机可执行指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该计算机设备执行本申请实施例上述的视觉定位方法。
本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的视觉定位方法,例如,如图3、图4、或图5示出的视觉定位方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEP ROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (15)
1.一种视觉定位方法,其特征在于,所述方法包括:
从待定位图像中提取出多个第一平面特征点,其中,所述待定位图像是针对目标场景进行拍摄得到的;
从预构建的多叉树包括的多个叶子节点中,查找出与任一所述第一平面特征点匹配的目标叶子节点,其中,每个所述叶子节点是与所述目标场景对应的多个第二平面特征点的聚类中心;
从针对所述目标场景预构建的三维地图中,获取与所述目标叶子节点对应的多个第一立体特征点;
从所述多个第一立体特征点中确定出目标立体特征点,以与任一所述第一平面特征点组合为一组匹配点对,其中,所述目标立体特征点是所述三维地图中与任一所述第一平面特征点匹配的立体特征点;
从所述三维地图中获取与所述目标立体特征点之间的距离小于距离阈值的第二立体特征点;
将每个所述第二立体特征点、以及所述待定位图像中与所述第二立体特征点匹配的所述第一平面特征点组合为一组匹配点对;
基于多组所述匹配点对进行解算位姿操作,得到所述待定位图像对应的位姿。
2.根据权利要求1所述的方法,其特征在于,在从预构建的多叉树包括的多个叶子节点中,查找出与任一所述第一平面特征点匹配的目标叶子节点之前,所述方法还包括:
获取针对所述目标场景预先拍摄的多张图像;
从所述多张图像中提取出所述多个第二平面特征点;
对所述多个第二平面特征点进行聚类处理,得到多个簇;
针对每个所述簇,确定所述簇包括的至少一个所述第二平面特征点对应的中心点,并将所述中心点作为所述簇对应的聚类中心;
以每个所述聚类中心作为对应的一个叶子节点,构建所述多叉树。
3.根据权利要求2所述的方法,其特征在于,所述对所述多个第二平面特征点进行聚类处理,得到多个簇,包括:
从所述多个第二平面特征点中选取一个所述第二平面特征点,以作为初始聚类中心;
针对每个所述第二平面特征点,确定所述第二平面特征点与所述初始聚类中心之间的特征距离,并根据所述特征距离确定所述第二平面特征点作为下一个初始聚类中心的概率,其中,所述概率与所述特征距离正相关;
基于所述多个第二平面特征点分别对应的多个所述概率,获取多个所述初始聚类中心;
确定每个所述第二平面特征点与多个所述初始聚类中心之间的特征距离,并将所述第二平面特征点划分到最小特征距离对应的所述初始聚类中心所对应的簇中。
4.根据权利要求1所述的方法,其特征在于,所述从预构建的多叉树包括的多个叶子节点中,查找出与任一所述第一平面特征点匹配的目标叶子节点,包括:
对任一所述第一平面特征点进行编码处理,得到任一所述第一平面特征点对应的二维特征向量;
分别对所述多个叶子节点一一对应的多个所述聚类中心进行编码处理,得到每个所述叶子节点对应的二维特征向量;
依次确定任一所述第一平面特征点对应的二维特征向量,与每个所述叶子节点对应的二维特征向量之间的特征距离;
将最小特征距离对应的所述叶子节点,作为与任一所述第一平面特征点匹配的目标叶子节点。
5.根据权利要求1至4任一项所述的方法,其特征在于,在从针对所述目标场景预构建的三维地图中,获取与所述目标叶子节点对应的多个第一立体特征点之前,所述方法还包括:
构建所述目标场景的三维地图;
从所述三维地图中提取出多个立体特征点;
将每个所述立体特征点与所述多叉树中匹配的叶子节点进行绑定,以构建所述多个叶子节点与所述多个立体特征点之间的映射关系。
6.根据权利要求5所述的方法,其特征在于,所述将每个所述立体特征点与所述多叉树中匹配的叶子节点进行绑定,包括:
针对每个所述立体特征点,执行以下处理:
对所述立体特征点进行编码处理,得到所述立体特征点对应的三维特征向量;
分别对所述多个叶子节点一一对应的多个所述聚类中心进行编码处理,得到每个所述叶子节点对应的二维特征向量;
依次确定所述立体特征点对应的三维特征向量,与每个所述叶子节点对应的二维特征向量之间的特征距离;
将最小特征距离对应的所述叶子节点,作为与所述立体特征点匹配的叶子节点,并将所述立体特征点与所述匹配的叶子节点之间进行绑定。
7.根据权利要求5或6所述的方法,其特征在于,所述从所述目标场景的三维地图中获取与所述目标叶子节点对应的多个第一立体特征点,包括:
基于所述映射关系,获取所述三维地图中与所述目标叶子节点绑定的多个立体特征点;
将所述与所述目标叶子节点绑定的多个立体特征点,作为与所述目标叶子节点对应的多个第一立体特征点。
8.根据权利要求1至4任一项所述的方法,其特征在于,所述从所述多个第一立体特征点中确定出目标立体特征点,包括:
对任一所述第一平面特征点进行编码处理,得到任一所述第一平面特征点对应的二维特征向量;
分别对所述多个第一立体特征点进行编码处理,得到每个所述第一立体特征点对应的三维特征向量;
依次确定任一所述第一平面特征点对应的二维特征向量,与每个所述第一立体特征点对应的三维特征向量之间的特征距离;
获取多个所述特征距离中的最小特征距离与次特征距离之间的比值,其中,所述次特征距离在多个所述特征距离中仅次于所述最小特征距离;
当所述比值小于或等于比值阈值时,将最小特征距离对应的所述第一立体特征点作为所述目标立体特征点。
9.根据权利要求1至4任一项所述的方法,其特征在于,所述将每个所述第二立体特征点、以及所述待定位图像中与所述第二立体特征点匹配的所述第一平面特征点组合为一组匹配点对,包括:
针对每个所述第二立体特征点,执行以下处理:
对所述第二立体特征点进行编码处理,得到所述第二立体特征点对应的三维特征向量;
分别对所述多个第一平面特征点进行编码处理,得到每个所述第一平面特征点对应的二维特征向量;
依次确定所述第二立体特征点对应的三维特征向量,与每个所述第一平面特征点对应的二维特征向量之间的特征距离;
将最小特征距离对应的所述第一平面特征点,作为与所述第二立体特征点匹配的所述第一平面特征点,并与所述第二立体特征点组合为一组匹配点对。
10.根据权利要求1至4任一项所述的方法,其特征在于,
所述待定位图像对应的位姿为图像采集设备在拍摄所述待定位图像时所处的位姿;
所述基于多组所述匹配点对进行解算位姿操作,得到所述待定位图像对应的位姿,包括:
获取所述图像采集设备的内参数,其中,所述内参数用于描述所述图像采集设备的焦距、光轴、以及图像交点的位置;
基于多组所述匹配点对、以及所述图像采集设备的内参数进行解算位姿操作,得到所述图像采集设备在拍摄所述待定位图像时,在所述目标场景中所处的位置和姿态。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
从所述目标场景的增强现实数据中查询与所述位姿关联的虚拟对象数据,其中,所述虚拟对象数据用于在所述目标场景的所述位置叠加显示对应的虚拟对象。
12.一种视觉定位装置,其特征在于,所述装置包括:
提取模块,用于从待定位图像中提取出多个第一平面特征点,其中,所述待定位图像是针对目标场景进行拍摄得到的;
查找模块,用于从预构建的多叉树包括的多个叶子节点中,查找出与任一所述第一平面特征点匹配的目标叶子节点,其中,每个所述叶子节点是与所述目标场景对应的多个第二平面特征点的聚类中心;
获取模块,用于从针对所述目标场景预构建的三维地图中,获取与所述目标叶子节点对应的多个第一立体特征点;
确定模块,用于从所述多个第一立体特征点中确定出目标立体特征点,以与任一所述第一平面特征点组合为一组匹配点对,其中,所述目标立体特征点是所述三维地图中与任一所述第一平面特征点匹配的立体特征点;
所述获取模块,还用于从所述三维地图中获取与所述目标立体特征点之间的距离小于距离阈值的第二立体特征点;
组合模块,用于将每个所述第二立体特征点、以及所述待定位图像中与所述第二立体特征点匹配的所述第一平面特征点组合为一组匹配点对;
解算模块,用于基于多组所述匹配点对进行解算位姿操作,得到所述待定位图像对应的位姿。
13.一种电子设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至11任一项所述的视觉定位方法。
14.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令被处理器执行时,实现权利要求1至11任一项所述的视觉定位方法。
15.一种计算机程序产品,包括计算机程序或计算机可执行指令,其特征在于,所述计算机程序或计算机可执行指令被处理器执行时,实现权利要求1至11任一项所述的视觉定位方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310255495.1A CN116958251A (zh) | 2023-03-10 | 2023-03-10 | 视觉定位方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310255495.1A CN116958251A (zh) | 2023-03-10 | 2023-03-10 | 视觉定位方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116958251A true CN116958251A (zh) | 2023-10-27 |
Family
ID=88457073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310255495.1A Pending CN116958251A (zh) | 2023-03-10 | 2023-03-10 | 视觉定位方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116958251A (zh) |
-
2023
- 2023-03-10 CN CN202310255495.1A patent/CN116958251A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110568447B (zh) | 视觉定位的方法、装置及计算机可读介质 | |
US11313684B2 (en) | Collaborative navigation and mapping | |
Carozza et al. | Markerless vision‐based augmented reality for urban planning | |
CN108401461A (zh) | 三维建图方法、装置、系统、云端平台、电子设备和计算机程序产品 | |
EP3274964B1 (en) | Automatic connection of images using visual features | |
CN110853075A (zh) | 一种基于稠密点云与合成视图的视觉跟踪定位方法 | |
US12008740B2 (en) | Feature matching using features extracted from perspective corrected image | |
WO2023056544A1 (en) | Object and camera localization system and localization method for mapping of the real world | |
CN109255749A (zh) | 自主和非自主平台中的地图构建优化 | |
CN102607532B (zh) | 一种利用飞控数据的低空影像快速匹配方法 | |
US10977810B2 (en) | Camera motion estimation | |
Alam et al. | A review of recurrent neural network based camera localization for indoor environments | |
CN116503474A (zh) | 位姿获取方法、装置、电子设备、存储介质及程序产品 | |
CN115375836A (zh) | 基于多元置信度滤波的点云融合三维重建方法和系统 | |
Bao et al. | Robust tightly-coupled visual-inertial odometry with pre-built maps in high latency situations | |
Alam et al. | Pose estimation algorithm for mobile augmented reality based on inertial sensor fusion. | |
Marelli et al. | ENRICH: Multi-purposE dataset for beNchmaRking In Computer vision and pHotogrammetry | |
CN113877210A (zh) | 游戏场景的转换方法、系统、服务器及计算机可读存储介质 | |
EP4413325A1 (en) | Object and camera localization system and localization method for mapping of the real world | |
CN116958251A (zh) | 视觉定位方法、装置、电子设备及存储介质 | |
Simon | Automatic online walls detection for immediate use in AR tasks | |
CN113409473A (zh) | 实现虚实融合的方法、装置、电子设备及存储介质 | |
Hwang et al. | 3D modeling and accuracy assessment-a case study of photosynth | |
CN117057086B (zh) | 基于目标识别与模型匹配的三维重建方法、装置及设备 | |
Al Baghdadi et al. | Unmanned aerial vehicles and machine learning for detecting objects in real time |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |