CN116737374A - 基于多线程的基准码识别方法、装置、计算机设备及介质 - Google Patents
基于多线程的基准码识别方法、装置、计算机设备及介质 Download PDFInfo
- Publication number
- CN116737374A CN116737374A CN202310685990.6A CN202310685990A CN116737374A CN 116737374 A CN116737374 A CN 116737374A CN 202310685990 A CN202310685990 A CN 202310685990A CN 116737374 A CN116737374 A CN 116737374A
- Authority
- CN
- China
- Prior art keywords
- reference code
- pose
- initial value
- task
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000004590 computer program Methods 0.000 claims description 15
- 238000005457 optimization Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 238000004422 calculation algorithm Methods 0.000 claims description 4
- 230000005059 dormancy Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000007958 sleep Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Analysis (AREA)
Abstract
本申请涉及图像处理技术领域,具体公开了一种基于多线程的基准码识别方法、装置、计算机设备及介质。方法包括:基于待识别图像,生成基准码识别任务,在状态哈希表中记录任务状态;在任务状态为待处理时,确定空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;基于位姿初值,确定目标初值,对目标初值进行优化,获得目标位姿值。该方法将不同图像的识别任务分配给线程池中处于空闲状态的不同线程来求解位姿初值,根据状态哈希表中的任务状态确定目标初值,优化目标初值,获得目标位姿值,充分利用了计算资源,采集的图像可以在采集之后直接分配给空闲的线程进行处理,使得识别速率与采图速率一致,提高了基准码识别的识别效率。
Description
技术领域
本申请涉及图像处理技术领域,尤其涉及一种基于多线程的基准码识别方法、装置、计算机设备及介质。
背景技术
目前常用的基准码识别方法都是基于单线程的,对于多核CPU(CentralProcessing Unit,中央处理器)的平台,单线程的识别方法无法完全将平台的计算资源利用起来,造成计算资源的闲置和浪费;对于单核的平台,如嵌入式平台,每个核本身的主频和处理性能都是有限的,此时,用一个单线程的方法就会把整个识别方法局限在这个核上,导致处理速度跟不上采图速度,进而降低了基准码识别效率。因此,如何提高平台计算资源的利用率,进而提高基准码识别的识别效率成为了亟需解决的问题。
发明内容
本申请提供了一种基于多线程的基准码识别方法、装置、计算机设备及介质,以充分利用计算资源,提高基准码识别的识别效率。
第一方面,本申请提供了一种基于多线程的基准码识别方法,所述方法包括:
采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态;
在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;
基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。
第二方面,本申请还提供了一种基于多线程的基准码识别装置,所述装置包括:
任务生成模块,用于采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态;
位姿初值获得模块,用于在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;
目标位姿值获得模块,用于基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。
第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;所述存储器,用于存储计算机程序;所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的基于多线程的基准码识别方法。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的基于多线程的基准码识别方法。
本申请公开了一种基于多线程的基准码识别方法、装置、计算机设备及介质,采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态;在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。该方法将不同图像的基准码识别任务分配给线程池中处于空闲状态的不同线程来求解位姿初值,在状态哈希表中记录任务状态,根据任务状态确定目标初值,对目标初值进行优化,获得目标位姿值,充分利用了计算资源,采集的待识别图像不必等待上一图像完全处理完成后再进行处理,可以在采集之后直接分配给空闲的线程进行处理,使得识别速率与采图速率保持一致,提高了基准码识别的识别效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的实施例提供的一种基于多线程的基准码识别方法的第一实施例示意流程图;
图2是本申请的实施例提供的一种基于多线程的基准码识别方法的实施步骤示意图;
图3是本申请的实施例提供的一种基于多线程的基准码识别方法的第二实施例示意流程图;
图4是本申请的实施例提供的一种基于多线程的基准码识别方法的第三实施例示意流程图;
图5为本申请的实施例提供的一种基于多线程的基准码识别装置的示意性框图;
图6为本申请的实施例提供的一种计算机设备的结构示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本申请的实施例提供了一种基于多线程的基准码识别方法、装置、计算机设备及介质。其中,该基于多线程的基准码识别方法可以应用于服务器中,通过将不同图像的基准码识别任务分配给线程池中处于空闲状态的不同线程来求解位姿初值,充分利用了计算资源,提高了基准码识别的识别效率。其中,该服务器可以为独立的服务器,也可以为服务器集群。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1是本申请的实施例提供的一种基于多线程的基准码识别方法的示意流程图。该基于多线程的基准码识别方法可应用于服务器中,用于通过将不同图像的基准码识别任务分配给线程池中处于空闲状态的不同线程来求解位姿初值,充分利用了计算资源,提高了基准码识别的识别效率。
如图1所示,该基于多线程的基准码识别方法具体包括步骤S101至步骤S103。
S101、采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态。
在一个实施例中,采集的每一帧图像作为待识别图像,形成图像队列,根据先进先出的规则,先采集的图像先被处理,同样结果也会被先输出出来。
在一个实施例中,每一帧图像都会有一个独一无二的时间戳,如图2所示,当前图像帧(第一图像)的时间戳是1656125092432,上一图像帧(第二图像)的时间戳是1656125092416。
在一个实施例中,为了保证结果的输出顺序和图像采集的顺序保持一致,采用状态哈希表来记录不同图像的基准码识别任务当前的任务状态。
在一个实施例中,状态0为任务待处理,状态1为已完成任务,状态-1为异常退出。
在一个实施例中,每一帧图像采集后,获得待识别图像,生成基准码识别任务,提交到线程池中,线程池分配当前基准码识别任务到一个空闲线程中,同时在状态哈希表中记录当前图像的任务状态为0。
S102、在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值。
在一个实施例中,待识别图像包括第一图像以及第二图像,当状态哈希表中第一图像对应的任务状态为0时,将第一图像对应的基准码识别任务分配给线程池中空闲的第一线程。
在一个实施例中,第一线程对第一图像进行基准码检测,基准码在完成检测流程之后,得到基准码在图像上的角点信息。
在一个实施例中,通过角点信息来计算得到当前基准码在相机坐标系下的位姿,称为位姿求解,也称为PNP(Perspective-n-point,位姿估计)问题,然后采用IPPE(Infinitesimal Plane-based Pose Estimation,基于无限小平面的位姿估计)方法进行PNP问题的初值求解,使用IPPE方法进行求解需要四个点且四点共面,获得唯一的解。
具体实施例中,第一线程开始进行基准码检测,在第一图像上寻找到基准码的角点信息,在检测完成之后开始用IPPE方法进行位姿初值的求解。
在一个实施例中,在第一图像的基准码检测以及位姿初值求解中,可能新的图像又已经采集好了,那么它又会被线程池分配到另一个空闲线程中,进行检测,求解位姿初值。
在一个实施例中,位姿初值包括第一图像对应的第一位姿初值,第二图像对应的第二位姿初值等。
在一个实施例中,在获得第一图像时,第一图像的上一图像(第二图像)可以在第二线程中处理;第一图像的下一图像可以分配给其他的空闲线程处理,无需等待第一图像处理完成后再进行下一图像的处理。
S103、基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。
基于所述位姿初值,确定目标初值,包括:在所述第二识别任务的任务状态为已成功完成时,将所述第二目标位姿值作为所述目标初值;在所述第二识别任务的任务状态为异常退出时,将所述第一位姿初值作为所述目标初值。
基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值之后,还包括:更新所述状态哈希表中第一识别任务的任务状态,删除所述状态哈希表中第二识别任务的相关信息。
在一个实施例中,在位姿初值求解完成之后,第一线程在状态哈希表中查询上一帧图像(第二图像)的基准码识别任务是否已经完成,如果没有完成,那么继续休眠,等待第二图像对应的识别任务完成。
在一个实施例中,每一个线程退出的时候都会把所有休眠的线程唤醒。
具体实施例中,在第一图像的上一帧图像(第二图像)所处的第二线程任务完成并退出时,将第一线程唤醒,第一线程通过查询状态哈希表获知第二线程已经退出,且第二图像是自己的上一帧图像,第一线程继续工作,通过LM迭代法进行目标初值的优化;如果第一线程查询到退出的线程所处理的图像不是自己的上一帧图像,则第一线程继续休眠。
在一个实施例中,这里的目标初值也有可能选择的是上一帧图像的结果,这取决于上一帧图像究竟是否有位姿数据成功输出。
在一个实施例中,如果第二线程是合法退出的,即状态哈希表中第二线程对应的任务状态为已成功完成,那么刚刚第一线程通过IPPE法求得的位姿初值不使用,转而使用第二线程退出时的结果即目标位姿值作为目标初值,如果第二线程是非法退出的,那么保留刚刚IPPE求得的初值作为目标初值。
在一个实施例中,将确定的目标初值送入LM(Levenberg-Marquardt,列文伯格-马夸特)迭代法中进行迭代优化,目标函数是当前帧图像中基准码的角点的重投影误差最小。如果第一线程顺利解算得到目标位姿值,则将状态哈希表中第一图像对应的任务状态更新为1,表示当前任务已成功完成;若第一线程未得到目标位姿值,则将任务状态更新为-1,表示异常退出,例如,图像中没有基准码,则无位姿初值生成,进而无目标位姿值生成,进程异常退出。
在一个实施例中,在每一个线程退出的时候,都要输出当前的结果,即目标位姿值,唤醒所有在休眠的线程,在状态哈希表中更新自己的状态,以及在状态哈希表中擦除上一帧图像的任务状态。
本申请公开了一种基于多线程的基准码识别方法、装置、计算机设备及介质,采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态;在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。该方法将不同图像的基准码识别任务分配给线程池中处于空闲状态的不同线程来求解位姿初值,在状态哈希表中记录任务状态,根据任务状态确定目标初值,对目标初值进行优化,获得目标位姿值,充分利用了计算资源,采集的待识别图像不必等待上一图像完全处理完成后再进行处理,可以在采集之后直接分配给空闲的线程进行处理,使得识别速率与采图速率保持一致,提高了基准码识别的识别效率。
请参阅图3,图3是本申请的实施例提供的一种基于多线程的基准码识别方法的示意流程图。该基于多线程的基准码识别方法可应用于服务器中,用于通过将不同图像的基准码识别任务分配给线程池中处于空闲状态的不同线程来求解位姿初值,充分利用了计算资源,提高了基准码识别的识别效率。
如图3所示,该基于多线程的基准码识别方法的所述步骤S102,具体包括步骤S201至步骤S203。
S201、在第一识别任务的任务状态为待处理时,在线程池中确定所述第一线程,其中,所述第一识别任务为所述第一图像对应的基准码识别任务;
S202、基于所述第一线程,对所述第一图像进行基准码检测,获得第一基准码在所述第一图像中的第一角点信息;
S203、基于所述第一角点信息,进行位姿求解,获得所述第一基准码在相机坐标系中的第一位姿初值。
在第一识别任务的任务状态为待处理时,在线程池中确定所述第一线程之前,还包括:在第二识别任务的状态为待处理时,在线程池中确定所述第二线程,基于所述第二线程,执行所述第二识别任务,获得所述第二图像中第二基准码的第二目标位姿值,其中,所述第二识别任务为所述第二图像对应的基准码识别任务;其中,所述第二图像在所述第一图像之前采集,所述第二识别任务在所述第一识别任务之前。
基于所述第一角点信息,进行位姿求解,获得所述第一基准码在相机坐标系中的第一位姿初值之后,还包括:将所述第一线程休眠,直至所述第二识别任务的任务状态为已成功完成或异常退出。
在一个实施例中,待识别图像包括第一图像以及第二图像,第二图像为第一图像的上一帧图像。
在一个实施例中,第二图像先于第一图像进行识别,在对第二图像进行基准码识别任务时,会继续采集图像,获得第一图像,此时,直接在线程池中确定空闲的第一线程,将第一图像对应的基准码识别任务分配给第一线程进行处理,实现了识别速度与采集图像的速度保持一致。
具体实施例中,当状态哈希表中第一图像对应的任务状态为0(即待处理状态)时,将第一图像对应的基准码识别任务分配给线程池中空闲的第一线程,第一线程开始进行基准码检测,在第一图像上寻找到基准码的角点信息,在检测完成之后开始用IPPE方法进行位姿初值的求解。
在一个实施例中,在第一图像的基准码检测以及位姿初值求解中,可能新的图像又已经采集好了,那么它又会被线程池分配到另一个空闲线程中,进行检测,求解位姿初值。
在一个实施例中,在获得第一图像时,第一图像的上一图像(第二图像)可以在第二线程中处理;第一图像的下一图像可以分配给其他的空闲线程处理,无需等待第一图像处理完成后再进行下一图像的处理。
在一个实施例中,在第一进程获得第一图像的第一位姿初值继续下一步之前,会先在状态哈希表中查询自己的上一帧图像(第二图像)的任务状态是否更新,当第二图像的任务状态更新为已成功完成或异常退出时,第一进程则继续下一步骤,否则先休眠等待。
在一个实施例中,例如,基于单线程的识别方法中,A线程:16ms(采图)+54ms(处理)-->B线程:16ms(采图)+54ms(处理)-->C线程;基于多线程的识别方法中,A线程:16ms(采图)+54ms(处理)-->B线程:16ms(采图)+14ms(处理)-->C,从B线程开始到C线程到后续的D线程等等之间的处理时间都会缩小,因为B线程中位姿初值求解的部分已经在A线程进行上一图像的处理时并行地也进行处理了。
请参阅图4,图4是本申请的实施例提供的一种基于多线程的基准码识别方法的示意流程图。该基于多线程的基准码识别方法可应用于服务器中,用于通过将不同图像的基准码识别任务分配给线程池中处于空闲状态的不同线程来求解位姿初值,充分利用了计算资源,提高了基准码识别的识别效率。
如图4所示,该基于多线程的基准码识别方法的所述步骤S103,具体包括步骤S301至步骤S302。
S301、基于重投影误差算法对所述目标初值进行优化,获得重投影误差值以及初值优化值;
S302、将所述重投影误差值最小时的初值优化值作为所述目标位姿值,并输出所述目标位姿值,结束所述基准码识别任务。
在一个实施例中,将确定的目标初值送入LM(Levenberg-Marquardt,列文伯格-马夸特)迭代法中进行迭代优化。
在一个实施例中,以当前帧图像中基准码的角点的重投影误差最小作为迭代的目标函数。
在一个实施例中,将每次获得的误差值以及对应的优化值记录,确定最小的误差值,并将该误差值对应的优化值作为目标位姿值并输出。
请参阅图5,图5是本申请的实施例提供一种基于多线程的基准码识别装置的示意性框图,该基于多线程的基准码识别装置用于执行前述的基于多线程的基准码识别方法。其中,该基于多线程的基准码识别装置可以配置于服务器。
如图5所示,该基于多线程的基准码识别装置400,包括:
任务生成模块401,用于采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态;
位姿初值获得模块402,用于在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;
目标位姿值获得模块403,用于基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。
在一个实施例中,所述位姿初值获得模块402,包括:
第一线程确定单元,用于在第一识别任务的任务状态为待处理时,在线程池中确定所述第一线程,其中,所述第一识别任务为所述第一图像对应的基准码识别任务;
第一角点信息获得单元,用于基于所述第一线程,对所述第一图像进行基准码检测,获得第一基准码在所述第一图像中的第一角点信息;
第一位姿初值获得单元,用于基于所述第一角点信息,进行位姿求解,获得所述第一基准码在相机坐标系中的第一位姿初值。
在一个实施例中,所述位姿初值获得模块402,还包括:
第二线程确定单元,用于在第二识别任务的状态为待处理时,在线程池中确定所述第二线程,基于所述第二线程,执行所述第二识别任务,获得所述第二图像中第二基准码的第二目标位姿值,其中,所述第二识别任务为所述第二图像对应的基准码识别任务;
其中,所述第二图像在所述第一图像之前采集,所述第二识别任务在所述第一识别任务之前。
在一个实施例中,所述位姿初值获得模块402,还包括:
第一线程休眠单元,用于将所述第一线程休眠,直至所述第二识别任务的任务状态为已成功完成或异常退出。
在一个实施例中,所述目标位姿值获得模块403,包括:
目标初值确定单元,用于在所述第二识别任务的任务状态为已成功完成时,将所述第二目标位姿值作为所述目标初值;在所述第二识别任务的任务状态为异常退出时,将所述第一位姿初值作为所述目标初值。
在一个实施例中,所述目标位姿值获得模块403,包括:
初值优化值获得单元,用于基于重投影误差算法对所述目标初值进行优化,获得重投影误差值以及初值优化值;
目标位姿值获得单元,用于将所述重投影误差值最小时的初值优化值作为所述目标位姿值,并输出所述目标位姿值,结束所述基准码识别任务。
在一个实施例中,所述基于多线程的基准码识别装置400,还包括状态更新模块,所述状态更新模块,包括:
状态更新单元,用于更新所述状态哈希表中第一识别任务的任务状态,删除所述状态哈希表中第二识别任务的相关信息。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图6所示的计算机设备上运行。
请参阅图6,图6是本申请的实施例提供的一种计算机设备的结构示意性框图。该计算机设备可以是服务器。
参阅图6,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种基于多线程的基准码识别方法。
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种基于多线程的基准码识别方法。
该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态;
在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;
基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。
在一个实施例中,所述处理器在实现待识别图像包括第一图像以及第二图像,所述空闲线程包括第一线程以及第二线程,所述在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值时,用于实现:
在第一识别任务的任务状态为待处理时,在线程池中确定所述第一线程,其中,所述第一识别任务为所述第一图像对应的基准码识别任务;
基于所述第一线程,对所述第一图像进行基准码检测,获得第一基准码在所述第一图像中的第一角点信息;
基于所述第一角点信息,进行位姿求解,获得所述第一基准码在相机坐标系中的第一位姿初值。
在一个实施例中,所述处理器在实现在第一识别任务的任务状态为待处理时,在线程池中确定所述第一线程之前,还用于实现:
在第二识别任务的状态为待处理时,在线程池中确定所述第二线程,基于所述第二线程,执行所述第二识别任务,获得所述第二图像中第二基准码的第二目标位姿值,其中,所述第二识别任务为所述第二图像对应的基准码识别任务;
其中,所述第二图像在所述第一图像之前采集,所述第二识别任务在所述第一识别任务之前。
在一个实施例中,所述处理器在实现基于所述第一角点信息,进行位姿求解,获得所述第一基准码在相机坐标系中的第一位姿初值之后,还用于实现:
将所述第一线程休眠,直至所述第二识别任务的任务状态为已成功完成或异常退出。
在一个实施例中,所述处理器在实现基于所述位姿初值,确定目标初值,包括:
在所述第二识别任务的任务状态为已成功完成时,将所述第二目标位姿值作为所述目标初值;
在所述第二识别任务的任务状态为异常退出时,将所述第一位姿初值作为所述目标初值。
在一个实施例中,所述处理器在实现对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值时,用于实现:
基于重投影误差算法对所述目标初值进行优化,获得重投影误差值以及初值优化值;
将所述重投影误差值最小时的初值优化值作为所述目标位姿值,并输出所述目标位姿值,结束所述基准码识别任务。
在一个实施例中,所述处理器在实现基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值之后,还用于实现:
更新所述状态哈希表中第一识别任务的任务状态,删除所述状态哈希表中第二识别任务的相关信息。
本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项基于多线程的基准码识别方法。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种基于多线程的基准码识别方法,其特征在于,包括:
采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态;
在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;
基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。
2.根据权利要求1所述的基于多线程的基准码识别方法,其特征在于,所述待识别图像包括第一图像以及第二图像,所述空闲线程包括第一线程以及第二线程,所述在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值,包括:
在第一识别任务的任务状态为待处理时,在线程池中确定所述第一线程,其中,所述第一识别任务为所述第一图像对应的基准码识别任务;
基于所述第一线程,对所述第一图像进行基准码检测,获得第一基准码在所述第一图像中的第一角点信息;
基于所述第一角点信息,进行位姿求解,获得所述第一基准码在相机坐标系中的第一位姿初值。
3.根据权利要求2所述的基于多线程的基准码识别方法,其特征在于,所述在第一识别任务的任务状态为待处理时,在线程池中确定所述第一线程之前,还包括:
在第二识别任务的状态为待处理时,在线程池中确定所述第二线程,基于所述第二线程,执行所述第二识别任务,获得所述第二图像中第二基准码的第二目标位姿值,其中,所述第二识别任务为所述第二图像对应的基准码识别任务;
其中,所述第二图像在所述第一图像之前采集,所述第二识别任务在所述第一识别任务之前。
4.根据权利要求3所述的基于多线程的基准码识别方法,其特征在于,所述基于所述第一角点信息,进行位姿求解,获得所述第一基准码在相机坐标系中的第一位姿初值之后,还包括:
将所述第一线程休眠,直至所述第二识别任务的任务状态为已成功完成或异常退出。
5.根据权利要求3所述的基于多线程的基准码识别方法,其特征在于,所述基于所述位姿初值,确定目标初值,包括:
在所述第二识别任务的任务状态为已成功完成时,将所述第二目标位姿值作为所述目标初值;
在所述第二识别任务的任务状态为异常退出时,将所述第一位姿初值作为所述目标初值。
6.根据权利要求1所述的基于多线程的基准码识别方法,其特征在于,所述对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值,包括:
基于重投影误差算法对所述目标初值进行优化,获得重投影误差值以及初值优化值;
将所述重投影误差值最小时的初值优化值作为所述目标位姿值,并输出所述目标位姿值。
7.根据权利要求3-6任一项所述的基于多线程的基准码识别方法,其特征在于,所述基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值之后,还包括:
更新所述状态哈希表中第一识别任务的任务状态,删除所述状态哈希表中第二识别任务的相关信息。
8.一种基于多线程的基准码识别装置,其特征在于,包括:
任务生成模块,用于采集待识别图像,基于所述待识别图像,生成基准码识别任务,并在状态哈希表中记录所述基准码识别任务的任务状态;
位姿初值获得模块,用于在所述任务状态为待处理时,在线程池中确定空闲线程,基于所述空闲线程,进行位姿求解,获得基准码在相机坐标系中的位姿初值;
目标位姿值获得模块,用于基于所述位姿初值,确定目标初值,并对所述目标初值进行优化,获得所述待识别图像中基准码的目标位姿值。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如权利要求1至7中任一项所述的基于多线程的基准码识别方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1至7中任一项所述的基于多线程的基准码识别方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310685990.6A CN116737374A (zh) | 2023-06-09 | 2023-06-09 | 基于多线程的基准码识别方法、装置、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310685990.6A CN116737374A (zh) | 2023-06-09 | 2023-06-09 | 基于多线程的基准码识别方法、装置、计算机设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116737374A true CN116737374A (zh) | 2023-09-12 |
Family
ID=87902278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310685990.6A Pending CN116737374A (zh) | 2023-06-09 | 2023-06-09 | 基于多线程的基准码识别方法、装置、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116737374A (zh) |
-
2023
- 2023-06-09 CN CN202310685990.6A patent/CN116737374A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11550627B2 (en) | Hardware accelerated dynamic work creation on a graphics processing unit | |
US9996394B2 (en) | Scheduling accelerator tasks on accelerators using graphs | |
US20070038987A1 (en) | Preprocessor to improve the performance of message-passing-based parallel programs on virtualized multi-core processors | |
US9875141B2 (en) | Managing pools of dynamic resources | |
CN109033814B (zh) | 智能合约触发方法、装置、设备及存储介质 | |
US8869149B2 (en) | Concurrency identification for processing of multistage workflows | |
US8677360B2 (en) | Thread-related actions based on historical thread behaviors | |
CN106020984B (zh) | 电子设备中进程的创建方法及装置 | |
US9612867B2 (en) | Apparatus and method for data partition and allocation in heterogeneous multi-processor environment | |
US10013288B2 (en) | Data staging management system | |
US20180107396A1 (en) | Tracking ownership of memory in a data processing system through use of a memory monitor | |
CN107977275B (zh) | 基于消息队列的任务处理方法及相关设备 | |
US20090158294A1 (en) | Dynamic critical-path recalculation facility | |
CN114398179B (zh) | 一种跟踪标识的获取方法、装置、服务器及存储介质 | |
US9880849B2 (en) | Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard | |
US20240045787A1 (en) | Code inspection method under weak memory ordering architecture and corresponding device | |
CN116069480B (zh) | 一种处理器及计算设备 | |
US20200213397A1 (en) | Data processing method, apparatus, device and storage medium based on unmanned vehicle | |
CN116737374A (zh) | 基于多线程的基准码识别方法、装置、计算机设备及介质 | |
CN112766470A (zh) | 特征数据处理方法、指令序列生成方法、装置及设备 | |
CN105912394B (zh) | 线程处理方法和系统 | |
CN110647527B (zh) | 基于大数据的无效标签清除方法及装置、设备与可读介质 | |
US9223728B2 (en) | Servicing a globally broadcast interrupt signal in a multi-threaded computer | |
US11112999B2 (en) | Optimizing I/O latency by software stack latency reduction in a cooperative thread processing model | |
CN114816433A (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 |