特征点匹配方法及装置、设备、存储介质与流程

文档序号:21460432发布日期:2020-07-10 18:01阅读:221来源:国知局
特征点匹配方法及装置、设备、存储介质与流程

本申请实施例涉及计算机视觉技术,涉及但不限于特征点匹配方法及装置、设备、存储介质。



背景技术:

随着人工智能的发展和计算机算力的提升,三维重建领域的研究在近几年吸引了很多研究人员的加入。其中,基于图像的三维模型重建(也称为多视图重建)已成为计算机视觉的一个重要研究方向。

然而,多视图重建方案都面临一个同样的缺陷:对于大场景环境的模型重建,存在运行缓慢和计算机内存不够的问题。其中,特征点匹配作为多视图重建方案的第一个环节,对整个流程起着至关重要的作用。但是,对于运算能力有限的计算设备来讲,对海量的图像进行特征点匹配处理,需要耗费大量的时间,甚至可能导致无法实现大场景环境的模型重建。



技术实现要素:

本申请实施例提供特征点匹配方法及装置、设备、存储介质。本申请实施例的技术方案是这样实现的:

第一方面,本申请实施例提供一种特征点匹配方法,所述方法应用于分布式计算架构中的管理节点,所述方法包括:发送控制指令给所述分布式计算架构中的多个执行节点,所述控制指令用于指示所述多个执行节点对各自的图像子集中的多张图像进行特征点匹配;接收每一所述执行节点发送的匹配结果;将接收的所述匹配结果进行汇总,得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

第二方面,本申请实施例提供一种特征点匹配方法,所述方法应用于分布式计算架构中的多个执行节点的任一节点,所述方法包括:接收所述分布式计算架构中的管理节点发送的控制指令,所述控制指令用于指示所述执行节点对对应的图像子集中的多张图像进行特征点匹配;根据所述控制指令,对所述图像子集中的多张图像进行特征点匹配,得到匹配结果;其中,所述图像子集为图像集合的多个图像子集中的一个子集;将所述匹配结果发送给所述分布式计算架构中的管理节点,以使所述管理节点将每一所述执行节点发送的匹配结果进行汇总,从而得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

第三方面,本申请实施例提供一种特征点匹配装置,所述装置应用于分布式计算架构中的管理节点,所述装置包括:第一发送模块,用于发送控制指令给所述分布式计算架构中的多个执行节点,所述控制指令用于指示所述多个执行节点对各自的图像子集中的多张图像进行特征点匹配;第一接收模块,用于接收每一所述执行节点发送的匹配结果;汇总模块,用于将接收的所述匹配结果进行汇总,得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

第四方面,本申请实施例提供一种特征点匹配装置,所述装置应用于分布式计算架构中的多个执行节点中的任一节点,所述装置包括:第二接收模块,用于接收所述分布式计算架构中的管理节点发送的控制指令,所述控制指令用于指示所述执行节点对对应的图像子集中的多张图像进行特征点匹配;特征点匹配模块,用于根据所述控制指令,对所述图像子集中的多张图像进行特征点匹配,得到匹配结果;其中,所述图像子集为图像集合的多个图像子集中的一个子集;第二发送模块,用于将所述匹配结果发送给所述分布式计算架构中的管理节点,以使所述管理节点将每一所述执行节点发送的匹配结果进行汇总,从而得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

第五方面,本申请实施例提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请实施例任一所述特征点匹配方法中的步骤。

第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本申请实施例任一所述特征点匹配方法中的步骤。

本申请实施例中,分布式计算架构中的管理节点发送控制指令给该架构中的多个执行节点,以触发所述多个执行节点对各自的图像子集中的多张图像进行特征点匹配;并将每一执行节点上报的匹配结果进行汇总,得到匹配结果集合,以用于模型重建;如此,利用分布式计算架构对图像集合进行分布式处理,能够节省特征点匹配的时间,从而提升图像集合的特征点匹配的处理效率,进而提高模型重建的整体速度。

附图说明

图1为分布式的数据存储框架示意图;

图2为分布式的计算框架示意图;

图3a为基于hadoop系统的分布式计算架构示意图;

图3b为另一基于hadoop系统的分布式计算架构示意图;

图4为本申请实施例特征点匹配方法的实现流程示意图;

图5为本申请实施例另一特征点匹配方法的实现流程示意图;

图6为本申请实施例又一特征点匹配方法的实现流程示意图;

图7a为本申请实施例再一特征点匹配方法的实现流程示意图;

图7b为本申请实施例确定相匹配的目标图像的方法实现流程示意图;

图8为本申请实施例另一特征点匹配方法的实现流程示意图;

图9为本申请实施例再一特征点匹配方法的实现流程示意图;

图10a为本申请实施例特征点匹配装置的结构示意图;

图10b为本申请实施例另一特征点匹配装置的结构示意图;

图11为本申请实施例又一特征点匹配装置的结构示意图;

图12为本申请实施例电子设备的一种硬件实体示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似或不同的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

为了便于对本申请实施例提供的特征点匹配方法的理解,首先描述两种分布式计算架构。但是,特征点匹配方法不局限于在这两种计算架构上实现,也可以在其他分布式计算架构上实现,这里只是一种示例而已。

在描述示例性的两种分布式计算架构之前,先对云数据处理系统hadhoop进行说明。hadhoop系统包括分布式的数据存储框架(hdfs)和分布式的计算框架(mapreduce)。

其中,hdfs作为分布式的数据存储框架,如图1所示,该框架10包括三个部分:namenode、secondarynamenode和datanode。其中,namenode是数据管理者,secondarynamenode是协从数据管理者,datanode是实际数据的存储者和工作者,用于存储客户端采集的数据。datanode需要定期向namenode发送“心跳”指令来确保工作运行正常。

namenode:用于存储文件系统的元数据,元数据可理解为所有电脑(节点)文件系统的全景图或架构图,用于存储文件与数据的映射关系。

secondarynamenode:负责定期备份namenode,生成数据镜像文件。并负责镜像文件与namenode日志数据的定期合并,删除冗余数据。

datanode:数据的实际存储节点,用于存储块数据。

mapreduce作为分布式的计算框架,是一种面向大规模数据处理的并行计算框架。顾名思义,其计算框架包括map和reduce,其中map代表工作的分发,reduce代表工作的汇总。

通过map结构,将数据分成若干个节点,然后再分别处理每个节点。每个节点处理后产生一个结果,然后再通过reduce结构,将每个节点的处理结果进行汇总,生成最终的计算结果。

如图2所示,mapreduce框架20包括两个部分:jobtracker和tasktracker。其中,jobtracker是工作的管理者,tasktracker是工作的执行者。jobtracker负责分发工作和监控tasktracker,tasktracker需要定时向jobtracker发送“心跳”指令来确保工作运行正常。

对于分布式系统hadhoop的部署方法,datanode和tasktracker需要配对并部署在同一节点上,但namenode和jobtracker可以部署在同一节点上,也可以部署在不同的节点上。hdfs框架与mapreduce框架结合形成了完整的hadoop系统。如图3a和图3b所示,其示出了hadoop系统的两种部署方式。其中图3a所示的基于hadoop系统的分布式计算架构30中,namenode和jobtracker部署在同一节点上,该节点可以被称为管理节点。datanode和tasktracker部署在同一节点上,该节点可以被称为执行节点。另外,分布式计算架构30还包括客户端,主要负责场景中的图像采集。客户端可以是各种各样具有图像采集功能的电子设备,例如,客户端为智能手机、机器人、无人机、平板电脑、增强现实头盔等。

在图3b所示的基于hadoop系统的分布式计算架构31中,namenode和jobtracker部署在不同的节点上,jobtracker所在的节点可以被称为管理节点,namenode所在的节点可以被称为数据分配节点。datanode和tasktracker部署在同一节点上,该节点可以被称为执行节点。另外,分布式计算架构30还包括客户端,主要负责场景中的图像采集。客户端可以是各种各样具有图像采集功能的电子设备,例如,客户端为智能手机、机器人、无人机、平板电脑、增强现实头盔等。

需要说明的是,分布式计算架构中的节点可以是任意具有信息处理能力的电子设备,例如为服务器、台式计算机、笔记本电脑、智能终端(例如手机、平板电脑)等。

本申请实施例提供一种特征点匹配方法,所述方法可以应用于分布式计算架构中的管理节点,所述管理节点可以是任意具有图像处理的电子设备。例如为服务器、台式计算机、笔记本电脑、智能终端(例如手机、平板电脑)等。特征点匹配方法所实现的功能可以通过管理节点中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,管理节点至少包括处理器和存储介质。

图4为本申请实施例特征点匹配方法的实现流程示意图,如图4所示,所述方法可以至少包括以下步骤401至步骤403:

步骤401,管理节点发送控制指令给分布式计算架构中的多个执行节点,所述控制指令用于指示所述多个执行节点对各自的图像子集中的多张图像进行特征点匹配。

图像子集为图像集合的多个图像子集中的一个子集。执行节点在接收控制指令之前,可以接收并存储管理节点或者数据分配节点发送的图像子集;执行节点也可以从控制指令中获得携带的图像子集。也就是说,在执行节点没有预先接收和存储图像子集的情况下,管理节点可以生成携带图像子集的控制指令。

以执行节点预先存储了图像子集为例,对于基于hadoop系统的分布式计算架构来讲,在实现时,可以由管理节点中的jobtracker发送控制指令给执行节点中的tasktracker,以使tasktracker对datanode存储的图像子集中的多张图像进行特征点匹配,以及后续其他工作。比如,将匹配结果上报给管理节点;再如,tasktracker定时向jobtracker发送“心跳”指令,以确保工作运行正常。

需要说明的是,分布式计算架构中的多个执行节点中的一个节点可以既作为执行节点,从而执行对应的执行任务,同时也可以兼作管理节点,从而执行对应的管理任务。

当然,在一些实施例中,管理节点也可以是独立于执行节点的其他节点,即执行节点不承担管理节点的工作,管理节点的工作由单独的一台电子设备来执行。

在一些实施例中,图像子集是由管理节点或者数据分配节点根据每一执行节点的信息处理能力,对图像集合进行拆分得到的部分图像。对于hadoop系统,在实现时,各个客户端可以将采集的图像发送给namenode,由namenode将接收的图像进行合并得到图像集合之后,将图像集合拆分为多个图像子集,并将每一图像子集分发给对应的执行节点。

步骤402,管理节点接收每一所述执行节点发送的匹配结果。

在一些实施例中,匹配结果包括每两张相匹配的图像的标识(id)和匹配点数。

步骤403,管理节点将接收的所述匹配结果进行汇总,得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

在实现时,可以由管理节点自己对匹配结果进行汇总,也可以由管理节点指派给另一台电子设备(即汇总节点)进行数据汇总。汇总得到的匹配结果集合可以用于对应场景的模型重建。例如,在视觉定位中,该集合可以用于场景的地图构建。再如,在数字化城市中,该集合可以用于场景中建筑物的模型构建。又如,在考古学中,该集合可以用于文物的模型重建。当然,模型重建并不局限于上述领域,在工业制造、产品设计、影视动画制作、增强现实、虚拟现实等诸多领域也具有广泛的应用,在此不再举例。

对于基于hadoop系统的分布式计算架构来讲,上述步骤401至步骤403均可以由管理节点中的jobtracker来实现。jobtracker可以将接收的匹配结果发送给汇总节点,由汇总节点来进行结果的汇总。

在本申请实施例中,分布式计算架构中的管理节点控制该架构中的多个执行节点对各自的图像子集中的多张图像进行特征点匹配;并将每一执行节点上报的匹配结果进行汇总,得到匹配结果集合,以用于模型重建;如此,利用分布式计算架构对图像集合进行分布式处理,从而能够节省特征点匹配的时间,提升图像集合的处理效率,进而提高模型重建的整体速度。

本申请实施例再提供一种特征点匹配方法,图5为本申请实施例另一特征点匹配方法的实现流程示意图,如图5所示,所述方法可以包括以下步骤501至步骤510:

步骤501,管理节点获取每一执行节点的配置参数,所述配置参数用于表征对应节点处理图像数量的能力。

例如,该配置参数为执行节点能够处理的图像数量。再如,配置参数为执行节点的内存大小和操作系统的类型(比如64位的操作系统)。

步骤502,管理节点根据每一所述配置参数,对图像集合进行拆分,得到多个图像子集。

对于基于hadoop系统的分布式计算架构来讲,可以由管理节点中的namenode实现步骤502。namenode根据每一执行节点的配置参数,可以确定每一执行节点能够存储和处理多少张图像,然后将图像集合进行拆分,拆分后将每一图像子集发送给对应的节点。例如,分布式计算架构包括10台执行节点,采集的图像集合中有1万张图像,namenode根据配置参数,将该集合拆分为10个图像子集,每一子集中包括1000张图像;然后,namenode将每一子集分发给对应的执行节点。

步骤503,管理节点将每一所述图像子集发送给对应的执行节点。

对于基于hadoop系统的分布式计算架构来讲,管理节点中的namenode将每一图像子集发送给对应的执行节点中的datanode,datanode对接收的图像子集进行存储。

需要说明的是,对于图3b所示的架构,即namenode没有部署在管理节点中的情况下,可以由namenode所在的节点,也就是数据分配节点执行上述步骤501至步骤503,从而实现数据的拆分和发送。

步骤504,每一执行节点将接收的图像子集进行存储;

步骤505,管理节点发送控制指令给每一执行节点,所述控制指令用于指示每一所述执行节点对各自存储的图像子集中的多张图像进行特征点匹配。

对于基于hadoop系统的分布式计算架构来讲,管理节点中的namenode在完成数据的分发之后,触发节点中的jobtracker程序,由jobtracker程序触发执行节点中的tasktracker程序,从而完成特征点匹配和匹配结果的上报等工作。当然,在namenode没有部署在管理节点上的情况下,可以由数据分配节点中的namenode向管理节点中的jobtracker发送触发指令,以触发jobtracker程序。

步骤506,每一执行节点接收所述控制指令;

步骤507,每一执行节点根据所述控制指令,对存储的图像子集中的多张图像进行特征点匹配,得到匹配结果。

需要说明的是,特征点匹配的方法可以是多种多样的。例如,执行节点可以通过如下实施例的步骤603至步骤605实现所述特征点匹配,通常将该实施例实现的特征点匹配方法称为顺序匹配。再如,执行节点还可以通过如下实施例的步骤702至步骤708实现所述特征点匹配,通常将该实施例实现的特征点匹配方法称为回环检测匹配。

执行节点可以通过顺序匹配和/或回环检测匹配的方式,获得匹配结果。在执行节点通过顺序匹配和回环检测匹配的方式实现时,执行节点可以将这两种方式获得的匹配结果上报给管理节点,管理节点或者汇总节点将所有的匹配结果汇总在一起,得到匹配结果集合。

步骤508,每一执行节点将得到的匹配结果发送给管理节点;

步骤509,管理节点接收每一执行节点发送的匹配结果;

步骤510,管理节点对接收的匹配结果进行汇总,得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

在本申请实施例中,管理节点将图像集合进行拆分,得到多个图像子集;并将每一图像子集分发给对应的执行节点,以使每一执行节点对接收的图像子集进行特征点匹配处理;可见,通过分布式计算架构中的多个执行节点实现图像集合的分布式处理,而不是由一台设备对图像集合进行特征点匹配处理,这样能够提高特征点匹配这一环节的处理效率,从而缓解单台设备的图像处理负荷,进而提高模型重建的整体速度。

可见,分布式地对图像集合进行特征点匹配处理,尤其对于大场景环境的模型重建来讲具有重大的意义。该方案能够解决机场级、商场级、甚至城市级别等大场景环境的模型重建存在的运存缓慢和计算机内存不够的问题,从而突破了多视图重建的瓶颈。

本申请实施例再提供一种特征点匹配方法,图6为本申请实施例又一特征点匹配方法的实现流程示意图,如图6所示,所述方法可以包括以下步骤601至步骤606:

步骤601,管理节点向每一执行节点发送控制指令,所述控制指令用于控制每一执行节点对对应的图像子集中的多张图像进行特征点匹配。

以图3a和图3b所示的hadhoop系统的分布式计算架构为例,在管理节点中的namenode或者数据分配节点中的namenode完成图像子集的分发之后,触发管理节点中的jobtracker执行步骤601。

步骤602,每一执行节点接收所述控制指令;

步骤603,每一执行节点根据所述控制指令,对对应的图像子集中的每一图像进行特征点提取,得到对应图像的特征点集合。

执行节点可以通过提取图像中的(scale-invariantfeaturetransform,sift)描述子或其他描述子来实现特征点提取。一般来说,特征点包括关键点(key-point)和描述子(descriptor)。关键点是指该特征点在图像里的位置,有些特征点还具有朝向和大小等信息。描述子通常是一个向量,一般描述的是该关键点周围像素的信息。因此,在一些实施例中,两个特征点的描述子在向量空间上的距离小于或等于距离阈值,则可以确定这两个点是相匹配的,说明这两个点代表的是空间中的同一位置点。在一些实施例中,特征点集合至少包括特征点的位置和描述子。

步骤604,执行节点将第i张图像的特征点集合与n张图像的特征点集合进行匹配,得到每两张图像的匹配点数与图像标识;其中,所述第i张图像为对应执行节点存储的图像子集中的任一图像;所述n张图像为所述对应执行节点存储的图像子集中与所述第i张图像在拍摄时间上连续的图像,n为大于或等于1的整数。

可以理解地,执行节点对于每一张图像,均可以通过上述方式确定与其他图像之间的匹配点数。每一执行节点确定每两张图像的匹配点数的方式相同,只是处理的图像不同而已。

所述n张图像之所以为图像子集中与所述第i张图像在拍摄时间上连续的图像,是因为这n张图像在空间上与第i张图像具有相关性的可能性较大。例如,在按照预设的路径规划进行图像采集的情况下,拍摄时间上连续的多张图像具有重叠的拍摄内容。

步骤605,每一执行节点将得到的每两张图像的匹配点数与图像标识作为匹配结果,发送给管理节点。

在一些实施例中,每一执行节点可以将得到的匹配结果写入对应的第一数据表;然后,将包括每一图像与其他图像的匹配点数和图像标识的第一数据表上报给管理节点。

当然,在一些实施例中,执行节点还可以边对图像子集进行特征点匹配处理,边将当前得到的两张图像之间的匹配点数和图像标识上报给管理节点。

步骤606,管理节点将接收的每一匹配结果进行汇总,得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

一般来说,特征点的提取具有计算时间长和效率低的特点。例如,基于sift的特征点提取方式,针对1280*720分辨率像素的图像,提取一幅图像的特征点的平均时间是988毫秒(millisecond,ms);当图像数量在1000张量级时,提取这些图像的特征点的时间为16.46分钟(minute,min);当图像数量达到5000张量级时,这在大场景重建环境下是很容易达到的,提取这些图像的特征点的时间达到82min。可见,这对于大场景重建的用户来讲,将是一个漫长的等待时间。

本申请实施例中,通过分布式计算架构中的多个执行节点实现对特征点提取的分布式处理,多个执行节点并行对多个图像子集进行图像的特征点提取;如此,能够成倍数地缩短图像集合的特征点提取的时间,从而提高特征点匹配的处理效率,进而能够有效地提高模型重建的整体速度。

在一些实施例中,执行节点还可以通过回环检测匹配对存储的图像子集中的多张图像进行特征点匹配,并将得到的匹配结果上报给管理节点,以使管理节点对每一执行节点上报的匹配结果进行汇总。例如,图7a所示,其示出了再一特征点匹配方法的实现流程示意图,所述方法可以包括以下步骤701至步骤709:

步骤701,每一执行节点接收管理节点发送的控制指令,所述控制指令用于指示执行节点对对应的图像子集中的多张图像进行特征点匹配;其中,所述图像子集为图像集合的多个图像子集中的一子集;

步骤702,每一执行节点根据所述控制指令,通过预先训练的视觉词典,对对应的图像子集中的每一图像进行处理,生成图像单词表,所述图像单词表的表项包括对应图像的单词向量;

在一些实施例中,图像单词表的表项还包括图像标识和反向索引,反向索引用于记录单词向量中的每一单词在图像子集中所属的图像。

步骤703,每一执行节点将所述图像单词表发送给管理节点;

步骤704,管理节点接收每一执行节点发送的图像单词表;

步骤705,管理节点将每一执行节点发送的图像单词表进行汇总,得到单词总表。

需要说明的是,管理节点可以自己对图像单词表进行汇总,也可以将每一执行节点发送的图像单词表发送给汇总节点,以使汇总节点对接收的图像单词表进行汇总,从而得到所述单词总表,并将单词总表发送给管理节点,由管理节点将单词总表分发给每一执行节点。当然,汇总节点也可以不通过管理节点转发,而是直接将单词总表分发给每一执行节点。

对于基于hadoop系统的分布式计算架构,管理节点中的jobtracker可以将接收的图像单词表发送给汇总节点,由汇总节点来进行数据的汇总。

步骤706,管理节点将所述单词总表发送给每一执行节点;

步骤707,每一执行节点将对应的图像子集中的第i张图像与接收的单词总表记录的图像进行单词向量匹配,得到与所述第i张图像相匹配的目标图像;其中,所述第i张图像为所述图像子集中的任一图像。

需要说明的是,不同的执行节点处理的第i张图像不同,但是实现单词向量匹配的方式是相同的,只是处理的图像不同而已。可以理解地,单词总表中记录了图像集合中每一图像的单词向量,因此,通过步骤707即可实现回环检测匹配。

步骤708,每一执行节点将每一图像与对应的目标图像的匹配点数和图像标识作为匹配结果,发送给管理节点;

在一些实施例中,每一执行节点可以将得到的匹配结果写入对应的第二数据表;然后,将包括每一图像与其他图像的匹配点数和图像标识的第二数据表上报给管理节点。

当然,在一些实施例中,执行节点还可以边对图像子集进行回环检测匹配,边将当前得到的两张图像之间的匹配点数和图像标识上报给管理节点。

步骤709,管理节点将接收的每一匹配结果进行汇总,得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

需要说明的是,由上述实施例可知,提供了顺序匹配和回环检测匹配这两种特征点匹配方式。两者可以是和/或的关系,执行节点在采用两种特征点匹配方法进行特征点匹配时,管理节点需要将接收的每一匹配结果进行汇总,从而得到匹配结果集合。例如,管理节点将接收的每一第一数据表和每一第二数据表汇总到一个总表里,从而得到匹配结果集合。

在本申请实施例中,通过分布式计算架构中的多个执行节点对图像集合进行分布式的回环检测机制,即,每一执行节点对各自存储的图像子集进行回环检测匹配;如此,能够成倍数地降低回环检测匹配耗费的时间,从而提高模型重建的整体效率。

在一些实施例中,所述单词总表的表项包括对应图像的单词向量和所述单词向量中每一单词的反向索引,所述反向索引用于记录所述单词在所述图像集合中所属的至少一张图像;对于上述实施例的步骤707,执行节点将对应的图像子集中的第i张图像与管理节点发送的单词总表中记录的图像进行单词向量匹配,得到与所述第i张图像相匹配的目标图像,如图7b所示,可以通过以下步骤7071至步骤7073实现:

步骤7071,执行节点获取所述第i张图像的单词向量。

在实现时,执行节点可以根据第i张图像的图像标识,从图像单词表中查找出该图像的单词向量。当然,执行节点还可以通过预先训练的视觉词典,对该图像进行处理,从而得到对应的单词向量。

步骤7072,执行节点从所述单词总表的每一单词向量中,查找与所述第i张图像的单词向量中任一单词相匹配的至少一个目标单词;

步骤7073,执行节点将所述第i张图像与每一所述目标单词的反向索引所指向的图像进行单词向量匹配,得到所述目标图像。

可以理解地,执行节点在基于反向索引指向的图像查找与第i张图像相匹配的目标图像;如此,能够缩小搜索范围,提高回环检测匹配的效率,进而提高模型重建的整体效率。

需要说明的是,对于基于hadhoop系统的分布式计算架构,可以由执行节点中的tasktracker实现顺序匹配和回环检测匹配的步骤。

随着人工智能的发展和计算机算力的提升,三维重建领域的研究在近几年吸引了很多研究人员的加入。其中,基于图像的三维模型重建(以下统称为多视图重建)已成为计算机视觉的一个重要研究方向。多视图重建不需要深度摄像头,而是通过拍摄视频即可生成三维模型,所以有着很好的普及性。

但是,多视图重建方案都面临一个同样的缺陷,对于大场景环境的三维重建,存在运行缓慢和计算机内存不够的问题。因此,多视图重建最大的瓶颈在于海量数据的内存分配和重建时间。本申请实施例提供了一种特征点匹配方法,可以通过云端电脑集群的部署实现海量序列化图片的特征点提取和匹配,从而解决了单台计算机运行海量数据地图重建的时间较长和内存有限的问题。

特征点提取作为三维重建的第一个入口环节,对整个流程起着至关重要的作用。好的特征点提取方法,对视觉跟踪的鲁棒性和重建模型的完整性和精度会有大幅度的提升。相反,有用特征点的跟踪丢失和无法匹配会对重建模型造成很大的干扰。

为了确保视觉跟踪的稳定性,可以采用鲁棒性较强的sift描述子,sift有着很好的旋转和尺度不变性,可以在很大程度上满足视觉跟踪的稳定性和鲁棒性。但是,sift描述子也有着计算时间长和效率低的缺点。

例如,针对1280*720分辨率像素的图像,提取一幅图像的特征点的平均时间是988毫秒(millisecond,ms);当图像数量在1000张量级时,提取这些图像的特征点的时间为16.46分钟(minute,min);当图像数量达到5000张量级时,这在大场景重建环境下是很容易达到的,提取这些图像的特征点的时间达到82min。可见,这对于大场景重建的用户来讲,将是一个漫长的等待时间。

基于此,下面将说明本申请实施例在一个实际的应用场景中的示例性应用。

在本申请实施例中,提供了一种分布式计算的方法,将特征点提取这一环节分配给多个节点同时进行,在缓解单节点图像处理负荷的同时,大大节省了图像处理的时间。

在本申请实施例中,提供一种可以并行计算的特征点匹配方法。基于分布式计算架构将该特征匹配流程与分布式系统结合,运用分布式“分而治之”的思想,利用多台电脑同时运算建立序列化图像间的匹配关系,从而大大节省了运算时间,可用于海量序列化图像的匹配和三维重建。

其中,分布式系统可以采用云端计算框架haoop。在本申请实施例中,采用开源的云数据处理系统hadoop来实现多节点三维重建的功能。一个云端数据处理系统,核心是解决两部分:存储和计算。在hadoop中,同样提供了分布式的存储(hdfs)和分布式的计算框架(mapreduce)来解决以上问题。

在本申请实施例中,采用大数据开源系统hadoop来实现mapreduce功能。hadoop系统能够很好地实现节点通信、数据自动分布和节点资源的监控等工作。作为使用者,将注意力集中在如何编写mapreduce函数即可,也就是关注如何分发数据和汇总数据即可。

本申请实施例提供一种基于hadoop系统的特征点提取和特征点匹配方法,图8为该方法的实现流程示意图,如图8所示,该方法可以包括以下步骤801至步骤804:

步骤801,图像特征提取。

图像特征提取,即,由namenode将所有图片进行分区和切割,分别部署在不同的电脑节点上,即分发给datanode,由datanode对接收的图片进行存储,这样,与datanode配对的tasktracker,基于datanode存储的图片,即可进行sift描述子或其他描述子的图像特征提取。

步骤802,tasktracker基于提取的图像特征,进行顺序匹配。

按照拍摄顺序进行的图像序列化匹配,如图9所示,即,节点里的第i张图像与后面连续n(默认为10)张图像进行匹配。记录每两张图像间的匹配点数,并将相应的匹配图像id对(即相匹配的两张图像的标识)和匹配点数写入一个数据库中。在节点完成顺序匹配之后,将结果发送给jobtracker;jobtracker将接收的所有匹配结果发送给一台电脑,由该电脑进行匹配结果的汇总。

步骤803,回环检测匹配。

在一些实施例中,回环检测通过视觉词典实现。视觉词典类似于图片搜索中常用的词袋模型。通常会保存两种数据结构:(1)视觉词典可将图片生成单词向量,并将单词向量保存在自己的数据结构中,保存以key和value的方式实现,其中key是图像id,value是图像的单词向量。(2)反向索引,用于记录视觉词典中每个单词有哪些图片出现。

分布式计算架构中的每台节点里拥有一个共用的视觉词典库,该词典库先预先加载一个固定单词数量的单词库;然后,对每台节点里的每张图像进行视觉词典翻译,生成单词向量和反向索引;并将每张图片的id和单词向量以key和value的方式保存下来,即生成图像单词表。反向索引也会更新记录每个单词所对应的图片。

由一台电脑将所有分布式电脑里视觉词典生成的图像单词表进行汇总,从而生成一份总的图像单词表,并将汇总的图像单词表分发到每台电脑中。

每台电脑加载汇总后的图像单词表,并将该电脑中的图像与汇总后的图像单词表里的所有图像进行单词向量匹配,从而得到与该表里的最优匹配图像,并将相应的匹配图像id对和匹配点数写入一个数据库中。在每台电脑完成回环检测匹配之后,将结果发送给jobtracker;jobtracker将接收的所有匹配结果发送给一台电脑,由该电脑进行匹配结果的汇总。

步骤804,匹配结果汇总。

由上述描述可知,顺序匹配和回环检测匹配流程最终都会生成一个以匹配图像id对为key,匹配点数为value的数据结构,最后由一台电脑将匹配的结果进行汇总保存到一个匹配数据表中。

在本申请实施例中,通过提出的特征点提取方式,使得特征点提取和匹配这一耗时的流程不局限于单节点运行,可以将工作合理分布在多台计算节点进行计算;这样,能够成倍数地节省运算时间,从而提高图像处理效率,进而能够用于大场景海量级图片的匹配与重建。

在本申请实施例中,提供一种基于分布式的特征点提取方法和一种基于分布式的特征点匹配方法。有效地将特征点提取与特征点匹配进行有效结合,从而能够在基于海量数据的三维重建中,大大节省图像特征提取的时间和特征点匹配的时间,同时又不会影响特征点匹配的鲁棒性,如此能够使得基于大数据的三维重建性能得到显著提升。

本申请实施例所提供的方案作为多视图三维重建的入口,其中三维重建例如运动中恢复结构(structurefrommotion,sfm),可以将多视图三维重建里特征点匹配这一耗时的流程效率大大提高。

基于前述的实施例,本申请实施例提供一种特征点匹配装置,该装置包括所包括的各模块、以及各模块所包括的各单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)或现场可编程门阵列(fpga)等。

图10a为本申请实施例特征点匹配装置的结构示意图,如图10a所示,特征点匹配装置100应用于分布式计算架构中的管理节点,所述装置100包括第一发送模块1001、第一接收模块1002和汇总模块1003,其中:

第一发送模块1001,用于发送控制指令给所述分布式计算架构中的多个执行节点,所述控制指令用于指示所述多个执行节点对各自的图像子集中的多张图像进行特征点匹配;

第一接收模块1002,用于接收每一所述执行节点发送的匹配结果;

汇总模块1003,用于将接收的所述匹配结果进行汇总,得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

在一些实施例中,如图10b所示,特征点匹配装置100还包括:获取模块1004和拆分模块1005;其中:获取模块1004,用于获取每一所述执行节点的配置参数,所述配置参数用于表征对应节点处理图像数量的能力;拆分模块1005,用于根据每一所述配置参数,对图像集合进行拆分,得到多个图像子集;第一发送模块1001,还用于将每一所述图像子集发送给对应的执行节点,以使所述执行节点对接收的图像子集进行存储。

在一些实施例中,所述控制指令,用于:控制所述多个执行节点对各自的图像子集中的每一图像进行特征点提取,得到对应图像的特征点集合,以使所述执行节点将第i张图像的特征点集合与n张图像的特征点集合进行匹配,从而将得到的每两张图像的匹配点数与图像标识作为匹配结果,发送给所述管理节点;其中,所述第i张图像为所述图像子集中的任一图像;所述n张图像为所述图像子集中与所述第i张图像在拍摄时间上连续的图像,n为大于或等于1的整数。

在一些实施例中,所述控制指令,用于控制所述多个执行节点通过预先训练的视觉词典,对各自的图像子集中的每一图像进行处理,生成图像单词表,所述图像单词表的表项包括对应图像的单词向量;第一接收模块1002,还用于接收每一所述执行节点发送的图像单词表;汇总模块1003,还用于对每一所述执行节点发送的图像单词表进行汇总,得到单词总表;并将所述单词总表发送给每一所述执行节点,以使每一所述执行节点将各自的图像子集中的第i张图像与所述单词总表记录的图像进行单词向量匹配,得到与所述第i张图像相匹配的目标图像,从而将图像子集中每一图像与对应的目标图像的匹配点数和图像标识作为匹配结果,发送给管理节点;其中,所述第i张图像为所述图像子集中的任一图像。

在一些实施例中,汇总模块1003,用于:将每一所述执行节点发送的图像单词表发送给汇总节点,以使所述汇总节点对接收的图像单词表进行汇总,从而得到所述单词总表;接收所述汇总节点发送的单词总表。

本申请实施例再提供一种特征点匹配装置,所述装置应用于分布式计算架构中的多个执行节点中的任一节点,图11为本申请实施例特征点匹配装置的结构示意图,如图11所示,特征点匹配装置110应用于分布式计算架构中的管理节点,所述装置110包括第二接收模块111、特征点匹配模块112和第二发送模块113,其中:

第二接收模块111,用于接收所述分布式计算架构中的管理节点发送的控制指令,所述控制指令用于指示所述执行节点对对应的图像子集中的多张图像进行特征点匹配;

特征点匹配模块112,用于根据所述控制指令,对所述图像子集中的多张图像进行特征点匹配,得到匹配结果;其中,所述图像子集为图像集合的多个图像子集中的一个子集;

第二发送模块113,用于将所述匹配结果发送给所述分布式计算架构中的管理节点,以使所述管理节点将每一所述执行节点发送的匹配结果进行汇总,从而得到匹配结果集合;其中,所述匹配结果集合用于模型重建。

在一些实施例中,特征点匹配模块112,用于:对所述图像子集中的每一图像进行特征点提取,得到对应图像的特征点集合;将第i张图像的特征点集合与n张图像的特征点集合进行匹配,得到每两张图像的匹配点数与图像标识;其中,所述第i张图像为所述图像子集中的任一图像;所述n张图像为所述图像子集中与所述第i张图像在拍摄时间上连续的图像,n为大于或等于1的整数;将得到的每两张图像的匹配点数与图像标识作为匹配结果,发送给所述管理节点。

在一些实施例中,特征点匹配模块112,用于:通过预先训练的视觉词典,对所述图像子集中的每一图像进行处理,生成图像单词表,所述图像单词表的表项包括对应图像的单词向量;将所述图像单词表发送给所述管理节点,以使所述管理节点将每一所述执行节点发送的图像单词表进行汇总,得到单词总表;将所述图像子集中的第i张图像与所述管理节点发送的单词总表中记录的图像进行单词向量匹配,得到与所述第i张图像相匹配的目标图像;其中,所述第i张图像为所述图像子集中的任一图像;将每一图像与对应的目标图像的匹配点数和图像标识作为匹配结果,发送给所述管理节点。

在一些实施例中,所述单词总表的表项包括对应图像的单词向量和所述单词向量中每一单词的反向索引,所述反向索引用于记录所述单词在所述图像集合中所属的至少一张图像;特征点匹配模块112,用于:获取所述第i张图像的单词向量;从所述单词总表的每一单词向量中,查找与所述第i张图像的单词向量中任一单词相匹配的至少一个目标单词;将所述第i张图像与每一所述目标单词的反向索引所指向的图像进行单词向量匹配,得到所述目标图像。

以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的特征点匹配方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

对应地,本申请实施例提供一种电子设备,图12为本申请实施例电子设备的一种硬件实体示意图,如图12所示,该电子设备120的硬件实体包括:包括存储器121和处理器122,所述存储器121存储有可在处理器122上运行的计算机程序,所述处理器122执行所述程序时实现上述实施例中提供的特征点匹配方法中的步骤。

存储器121配置为存储由处理器122可执行的指令和应用,还可以缓存待处理器122以及电子设备120中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(randomaccessmemory,ram)实现。

对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的特征点匹配方法中的步骤。

这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1