CN111427697A - 基于多线程的动作捕捉方法、装置、设备及存储介质 - Google Patents

基于多线程的动作捕捉方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111427697A
CN111427697A CN202010191139.4A CN202010191139A CN111427697A CN 111427697 A CN111427697 A CN 111427697A CN 202010191139 A CN202010191139 A CN 202010191139A CN 111427697 A CN111427697 A CN 111427697A
Authority
CN
China
Prior art keywords
frame data
action
thread
data
calculation
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.)
Granted
Application number
CN202010191139.4A
Other languages
English (en)
Other versions
CN111427697B (zh
Inventor
吴昆临
许秋子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Realis Multimedia Technology Co Ltd
Original Assignee
Shenzhen Realis Multimedia Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Realis Multimedia Technology Co Ltd filed Critical Shenzhen Realis Multimedia Technology Co Ltd
Priority to CN202010191139.4A priority Critical patent/CN111427697B/zh
Publication of CN111427697A publication Critical patent/CN111427697A/zh
Priority to PCT/CN2021/080721 priority patent/WO2021185195A1/zh
Application granted granted Critical
Publication of CN111427697B publication Critical patent/CN111427697B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明涉及数据处理技术领域,公开了一种基于多线程的动作捕捉方法、装置、设备及存储介质,用于通过接收线程、计算主线程和绘制线程同时接收动作数据、计算动作数据和绘制动作图像,解决了绘制的图像出现延时、卡顿和拖尾的问题,能够实现实时同步的效果。基于多线程的动作捕捉方法包括:通过接收线程实时捕捉目标终端的多个动作帧数据,并将多个动作帧数据写入标记点队列,得到动作标记点队列;在计算主线程中对动作标记点队列进行计算,得到姿态计算帧数据;通过计算主线程对姿态计算帧数据进行计算,得到人体姿态数据;通过绘制线程按照预置显示屏刷新率对人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示人体动作图像。

Description

基于多线程的动作捕捉方法、装置、设备及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于多线程的动作捕捉方法、装置、设备及存储介质。
背景技术
增强现实(augmented reality,AR)通过电脑技术,将虚拟的信息应用到真实世界,真实的环境和虚拟的物体实时地叠加到了同一个画面或空间同时存在。简而言之就是AR技术展现了真实世界的信息,而且将虚拟的信息同时显示出来,在同时展现真实信息和虚拟信息时,需要实时捕捉动作以及绘制动作图像。
目前在光学动作捕捉的技术中,通常需要实时显示动作捕捉的结果。但是由于服务器接收到动作数据之后再计算姿态数据,当这些动作结束之后再绘制图像,在最后绘制姿态数据时绘制频率会受到显示屏的限制和显示频率不稳的影响,最后导致绘制的图像出现延时、卡顿和拖尾的问题,无法达到实时同步的效果。
发明内容
本发明的主要目的在于解决绘制动作图像时不能实时同步,出现延时、卡顿和拖尾的问题。
本发明第一方面提供了一种基于多线程的动作捕捉方法,包括:通过接收线程实时捕捉目标终端的多个动作帧数据,并将所述多个动作帧数据写入标记点队列,得到动作标记点队列;在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据;通过所述计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据;通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示所述人体动作图像。
可选的,在本发明第一方面的第一种实现方式中,所述在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据包括:通过计算主线程按照预置的时间间隔实时判断所述动作标记点队列中是否包括多个动作帧数据;若所述动作标记点队列中包括所述多个动作帧数据,则在所述多个动作帧数据中选取进入所述动作标记点队列时刻最早的动作帧数据进行复制,得到姿态计算数据,并删除所述标记帧数据队列中被复制的动作帧数据。
可选的,在本发明第一方面的第二种实现方式中,所述通过所述计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据包括:在所述计算主线程中采用反向动力学算法从所述姿态计算数据中提取多个姿态标记点;采用所述反向动力学算法和预置标准姿态模板对所述多个姿态标记点进行身体部位相似度预测,得到身体部位标记点;采用所述反向动力学算法对所述身体部位标记点进行计算,得到人体姿态数据。
可选的,在本发明第一方面的第三种实现方式中,所述通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示所述人体动作图像包括:读取预置显示屏的刷新速率,得到预置显示屏刷新率;在绘制线程中,调用垂直同步算法按照所述预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在所述预置显示屏中显示所述人体动作图像。
可选的,在本发明第一方面的第四种实现方式中,在所述通过接收线程不间断的接收目标终端的多个帧数据,并将所述多个帧数据写入标记队列,得到标记帧数据队列之前,所述基于多线程的动作捕捉还包括:分别为接收线程、计算主线程和绘制线程设置互斥锁,得到接收线程互斥锁、计算主线程互斥锁和绘制线程互斥锁,其中,当所述接收线程互斥锁、所述计算主线程互斥锁和绘制线程互斥锁中任意一个互斥锁为开锁状态时,其他两个互斥锁为关锁状态。
本发明第二方面提供了一种基于多线程的动作捕捉装置,包括:动作帧数据捕捉模块,用于通过接收线程实时捕捉目标终端的多个动作帧数据,并将所述多个动作帧数据写入标记点队列,得到动作标记点队列;姿态帧数据选取模块,用于在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据;数据计算模块,用于通过所述计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据;姿态绘制模块,用于通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示所述人体动作图像。
可选的,在本发明第二方面的第一种实现方式中,所述姿态帧数据选取模块具体用于:通过计算主线程按照预置的时间间隔实时判断所述动作标记点队列中是否包括多个动作帧数据;若所述动作标记点队列中包括所述多个动作帧数据,则在所述多个动作帧数据中选取进入所述动作标记点队列时刻最早的动作帧数据进行复制,得到姿态计算数据,并删除所述标记帧数据队列中被复制的动作帧数据。
可选的,在本发明第二方面的第二种实现方式中,所述数据计算模块具体用于:在所述计算主线程中采用反向动力学算法从所述姿态计算数据中提取多个姿态标记点;采用所述反向动力学算法和预置标准姿态模板对所述多个姿态标记点进行身体部位相似度预测,得到身体部位标记点;采用所述反向动力学算法对所述身体部位标记点进行计算,得到人体姿态数据。
可选的,在本发明第二方面的第三种实现方式中,所述姿态绘制模块具体用于:读取预置显示屏的刷新速率,得到预置显示屏刷新率;在绘制线程中,调用垂直同步算法按照所述预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在所述预置显示屏中显示所述人体动作图像。
可选的,在本发明第二方面的第四种实现方式中,所述基于多线程的动作捕捉装置包括:互斥锁设置模块,用于分别为接收线程、计算主线程和绘制线程设置互斥锁,得到接收线程互斥锁、计算主线程互斥锁和绘制线程互斥锁,其中,当所述接收线程互斥锁、所述计算主线程互斥锁和绘制线程互斥锁中任意一个互斥锁为开锁状态时,其他两个互斥锁为关锁状态。
本发明第三方面提供了一种基于多线程的动作捕捉设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于多线程的动作捕捉设备执行上述的基于多线程的动作捕捉方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的基于多线程的动作捕捉方法。
本发明提供的技术方案中,基于多线程的动作捕捉方法包括:通过接收线程实时捕捉目标终端的多个动作帧数据,并将所述多个动作帧数据写入标记点队列,得到动作标记点队列;在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据;通过所述计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据;通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示所述人体动作图像。本发明实施例中,通过接收线程、计算主线程和绘制线程同时接收动作数据、计算动作数据和绘制动作图像,绘制频率不会受到显示屏的限制和显示频率不稳的影响,解决了绘制的图像出现延时、卡顿和拖尾的问题,能够实现实时同步的效果。
附图说明
图1为本发明实施例中基于多线程的动作捕捉方法的一个实施例示意图;
图2为本发明实施例中基于多线程的动作捕捉方法的另一个实施例示意图;
图3为本发明实施例中基于多线程的动作捕捉装置的一个实施例示意图;
图4为本发明实施例中基于多线程的动作捕捉装置的另一个实施例示意图;
图5为本发明实施例中基于多线程的动作捕捉设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种基于多线程的动作捕捉方法、装置、设备及存储介质,用于通过接收线程、计算主线程和绘制线程同时接收动作数据、计算动作数据和绘制动作图像,绘制频率不会受到显示屏的限制和显示频率不稳的影响,解决了绘制的图像出现延时、卡顿和拖尾的问题,能够实现实时同步的效果。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中基于多线程的动作捕捉方法的一个实施例包括:
101、通过接收线程实时捕捉目标终端的多个动作帧数据,并将多个动作帧数据写入标记点队列,得到动作标记点队列;
服务器通过接收线程实时不间断的捕捉目标终端的多个动作帧数据,服务器接收一个动作帧数据向标记点队列写入一帧动作帧数据,从而得到动作标记点队列。
目标终端可以为摄像机、手机和电脑等终端。在本实施例中,动作帧数据为人体的姿态数据,比如为站立举右手,抬腿等人体姿态数据,服务器通过接收线程实时不间断的接收来自目标终端的多个动作帧数据,在每次成功接收一帧动作帧数据之后,服务器将成功接收到的动作帧数据写入标记点队列,在成功接收到多帧动作帧数据之后,服务器得到动作标记点队列。
需要说明的是,动作标记点队列按时间先后顺序排列,接收时刻最早的动作帧数据为排在动作标记点队列最前面的动作帧数据。
可以理解的是,本发明的执行主体可以为基于多线程的动作捕捉装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。
102、在计算主线程中对动作标记点队列进行计算,在多个动作帧数据中得到姿态计算帧数据;
服务器通过计算主线程在动作标记点队列中进行计算,在多个动作帧数据中经过计算主线程计算,得到姿态计算帧数据。
需要说明的是,在本实施例中,计算主线程和接收线程是同时工作的,当接收线程在接收动作帧数据并将动作帧数据写入标记点队列时,计算主线程循环不停的进行计算工作。当需要同时捕捉多个人的动作时,服务器同时采用多个计算线程并行处理,得到多个姿态计算帧数据。
由于计算主线程和接收线程是同时工作,所以可能出现动作标记点队列中没有动作帧数据,只有在动作标记点队列中有动作帧数据时,服务器才可以在多个动作帧数据中得到姿态计算帧数据,姿态计算帧数据为动作标记点队列中排在最前方的帧数据。
例如,假设动作标记点队列中包括动作帧数据A、动作帧数据B、动作帧数据C、动作帧数据D和动作帧数据E,其中动作帧数据A排在动作标记点队列的最前方,动作帧数据E排在动作标记点队列的最后方,服务器在动作帧数据A、动作帧数据B、动作帧数据C、动作帧数据D和动作帧数据E中确定动作帧数据A为姿态计算帧数据。
103、通过计算主线程对姿态计算帧数据进行计算,得到人体姿态数据;
服务器通过主线程将姿态计算帧数据计算为人体姿态数据。
服务器通过计算主线程进行人体姿态数据计算时,采用了反向动力学算法和预置标准姿态模板进行计算,反向动力学算法是一种先确定子骨骼的位置,然后反向推导出子骨骼所在的骨骼链上n级父骨骼的位置,从而确定整条骨骼链的方法。
在本实施例中,服务器在计算主线程中通过反向动力学算法在姿态计算帧数据中确定子骨骼的位置,其次服务器根据姿态计算帧数据中子骨骼的位置和预置标准姿态模板,反向推导出子骨骼所在的骨骼链上n级父骨骼的位置,然后根据子骨骼位置和父骨骼位置确定姿态计算帧数据对应的整条骨骼链,最后根据该骨骼链得到人体姿态数据。
需要说明的是,当服务器计算得到人体姿态数据后,进行下一个人体姿态数据的计算循环。
104、通过绘制线程按照预置显示屏刷新率对人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示人体动作图像。
服务器通过绘制线程按照预置显示屏刷新率绘制人体动作图像。
服务器通过绘制线程绘制人体动作图像时,需要用到垂直同步算法进行绘制。目前显示屏上的所有图像都是一线一线的扫描上去的,无论是哪种扫方式,都有需要水平同步和垂直同步,当刷新完每一行像素点,就能够完成水平同步,然后发送垂直同步信号完成垂直向的像素点的刷新,从而得到一帧图像。
例如,假设显示屏的刷新率为每秒刷新10幅画面,服务器按照0.1秒的刷新速度采用绘制线程和垂直同步算法对人体姿态数据先进行水平像素点同步刷新再进行垂直像素点同步刷新,从而得到人体动作图像,并在显示屏上显示人体动作图像。
本发明实施例中,通过接收线程、计算主线程和绘制线程同时接收动作数据、计算动作数据和绘制动作图像,绘制频率不会受到显示屏的限制和显示频率不稳的影响,解决了绘制的图像出现延时、卡顿和拖尾的问题,能够实现实时同步的效果。
请参阅图2,本发明实施例中基于多线程的动作捕捉方法的另一个实施例包括:
201、分别为接收线程、计算主线程和绘制线程设置互斥锁,得到接收线程互斥锁、计算主线程互斥锁和绘制线程互斥锁,其中,当接收线程互斥锁、计算主线程互斥锁和绘制线程互斥锁中任意一个互斥锁为开锁状态时,其他两个互斥锁为关锁状态。
服务器为接收线程设置接收线程互斥锁、为计算主线程设置计算主线程互斥锁以及为绘制线程设置绘制线程互斥锁,当这些互斥锁中任意一个互斥锁为开锁状态时,其他两个互斥锁为关锁状态。
动作捕捉的过程中,可能存在大量可调度的数据在运行,这些可调度的数据可能在某个时刻会被多个线程同时访问,这样多个线程调用的数据可能是错乱的。所以服务器需要为各线程添加互斥锁,从而控制多线程对共享数据的访问。
添加互斥锁的具体过程如下:
服务器对互斥锁进行初始化,得到初始化后的互斥锁;然后服务器调用互斥锁函数分别对接收线程、计算主线程和绘制线程进行初始化后的互斥锁上锁,得到接收线程互斥锁、计算主线程互斥锁和绘制线程互斥锁。服务器判断接收线程互斥锁、计算主线程互斥锁或者绘制线程互斥锁是否处于开锁状态,若接收线程互斥锁、计算主线程互斥锁或者绘制线程互斥锁处于开锁状态,则其他两个互斥锁维持关锁状态。
202、通过接收线程实时捕捉目标终端的多个动作帧数据,并将多个动作帧数据写入标记点队列,得到动作标记点队列;
服务器通过接收线程实时不间断的捕捉目标终端的多个动作帧数据,服务器接收一个动作帧数据向标记点队列写入一帧动作帧数据,从而得到动作标记点队列。
目标终端可以为摄像机、手机和电脑等终端。在本实施例中,动作帧数据为人体的姿态数据,比如为站立举右手,抬腿等人体姿态数据,服务器通过接收线程实时不间断的接收来自目标终端的多个动作帧数据,在每次成功接收一帧动作帧数据之后,服务器将成功接收到的动作帧数据写入标记点队列,在成功接收到多帧动作帧数据之后,服务器得到动作标记点队列。
需要说明的是,动作标记点队列按时间先后顺序排列,接收时刻最早的动作帧数据为排在动作标记点队列最前面的动作帧数据。
203、在计算主线程中对动作标记点队列进行计算,在多个动作帧数据中得到姿态计算帧数据;
服务器通过计算主线程中在动作标记点队列中进行计算,在多个动作帧数据中经过计算主线程计算,得到姿态计算帧数据。
需要说明的是,在本实施例中,计算主线程和接收线程是同时工作的,当接收线程在接收动作帧数据并将动作帧数据写入标记点队列时,计算主线程循环不停的进行计算工作。当需要同时捕捉多个人的动作时,服务器同时采用多个计算线程并行处理,得到多个姿态计算帧数据。
由于计算主线程和接收线程是同时工作,所以可能出现动作标记点队列中没有动作帧数据,只有在动作标记点队列中有动作帧数据时,服务器才可以在多个动作帧数据中得到姿态计算帧数据,姿态计算帧数据为动作标记点队列中排在最前方的帧数据。
例如,假设动作标记点队列中包括动作帧数据A、动作帧数据B、动作帧数据C、动作帧数据D和动作帧数据E,其中动作帧数据A排在动作标记点队列的最前方,动作帧数据E排在动作标记点队列的最后方,服务器在动作帧数据A、动作帧数据B、动作帧数据C、动作帧数据D和动作帧数据E中确定动作帧数据A为姿态计算帧数据。
具体的,服务器在计算主线程中按照预置的时间间隔实时判断动作标记点队列中是否包括多个动作帧数据;如果动作标记点队列中包括多个动作帧数据,则在多个动作帧数据中选取姿态计算数据,姿态计算数据为服务器复制的进入动作标记点队列时刻最早的动作帧数据,在服务器复制得到姿态计算数据后,删除标记帧数据队列中被复制的动作帧数据。
例如,动作标记点队列中包括动作帧数据A、动作帧数据B、动作帧数据C、动作帧数据D和动作帧数据E,动作帧数据A、动作帧数据B、动作帧数据C、动作帧数据D和动作帧数据E进入动作标记点队列时刻的时间分别为17:40:20、17:40:25、17:40:30、17:40:35和17:40:40,服务器则选择动作帧数据A进行复制,得到姿态计算数据,此时服务器在动作标记点队列汇中删除动作帧数据A,因此,此时的动作标记点队列由动作帧数据B、动作帧数据C、动作帧数据D和动作帧数据E组成。
204、通过计算主线程对姿态计算帧数据进行计算,得到人体姿态数据;
服务器通过主线程将姿态计算帧数据计算为人体姿态数据。
服务器通过计算主线程进行人体姿态数据计算时,采用了反向动力学算法和预置标准姿态模板进行计算,反向动力学算法是一种先确定子骨骼的位置,然后反向推导出子骨骼所在的骨骼链上n级父骨骼的位置,从而确定整条骨骼链的方法。
在本实施例中,服务器在计算主线程中通过反向动力学算法在姿态计算帧数据中确定子骨骼的位置,其次服务器根据姿态计算帧数据中子骨骼的位置和预置标准姿态模板,反向推导出子骨骼所在的骨骼链上n级父骨骼的位置,然后根据子骨骼位置和父骨骼位置确定姿态计算帧数据对应的整条骨骼链,最后根据该骨骼链得到人体姿态数据。
需要说明的是,当服务器计算得到人体姿态数据后,进行下一个人体姿态数据的计算循环。
具体的,服务器在计算主线程中通过反向动力学算法基于姿态计算数据提取得到多个姿态标记点;然后服务器按照预置标准姿态模板对多个姿态标记点进行身体部位相似度计算,从而得到身体部位标记点;采用反向动力学算法和身体部位标记点计算得到人体姿态数据。
例如,假设服务器首先通过反向动力学算法计算姿态计算帧数据,得到一个姿态标记点E1(x1,y1,z1),服务器在计算主线程中通过反向动力学算法计算得到多个姿态标记点,分别为E2(x2,y2,z2),E3(x3,y3,z3)…En(xn,yn,zn),服务器将多个姿态标记点E2(x2,y2,z2),E3(x3,y3,z3)...En(xn,yn,zn)分别与预置标准姿态模板进行身体部位相似度计算,得到右脚脚尖标记点E1(x1,y1,z1)、右手肘标记节点E2(x2,y2,z2)、右手大拇指指尖标记节点E3(x3,y3,z3)以及左手食指指尖标记节点En(xn,yn,z)n等身体部位标记点。服务器采用反向动力学算法根据E1(x1,y1,z1)、E2(x2,y2,z2)、E3(x3,y3,z3)…En(xn,yn,zn)这些身体部位标记点得到骨骼链,从而得到人体姿态数据。
205、通过绘制线程按照预置显示屏刷新率对人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示人体动作图像。
服务器通过绘制线程按照预置显示屏刷新率绘制人体动作图像。
需要说明的是,接收线程、计算主线程和绘制线程是同时工作的,当绘制线程在绘制人体动作图像时,接收线程在接收动作帧数据并将动作帧数据写入标记点队列,计算主线程也在循环不停的进行计算工作。
服务器通过绘制线程绘制人体动作图像时,需要用到垂直同步算法进行绘制。目前显示屏上的所有图像都是一线一线的扫描上去的,无论是哪种扫方式,都有需要水平同步和垂直同步,当刷新完每一行像素点,就能够完成水平同步,然后发送垂直同步信号完成垂直向的像素点的刷新,从而得到一帧图像。
例如,假设显示屏的刷新率为每秒刷新10幅画面,服务器按照0.1秒的刷新速度采用绘制线程和垂直同步算法对人体姿态数据先进行水平像素点同步刷新再进行垂直像素点同步刷新,从而得到人体动作图像,并在显示屏上显示人体动作图像。
具体的,服务器读取预置显示屏刷新率;然后服务器在绘制线程中,调用垂直同步算法按照上述预置显示屏刷新率绘制人体动作图像,并将人体动作图像显示到预置显示屏中。
例如,预置显示屏A的刷新率为每秒刷新10副画面,服务器则在绘制线程中调用同步算法按照0.1秒的速度绘制人体动作图像,然后在预置显示屏A中显示人体动作图像。
本发明实施例中,通过接收线程、计算主线程和绘制线程同时接收动作数据、计算动作数据和绘制动作图像,绘制频率不会受到显示屏的限制和显示频率不稳的影响,解决了绘制的图像出现延时、卡顿和拖尾的问题,能够实现实时同步的效果。
上面对本发明实施例中基于多线程的动作捕捉方法进行了描述,下面对本发明实施例中基于多线程的动作捕捉装置进行描述,请参阅图3,本发明实施例中基于多线程的动作捕捉装置一个实施例包括:
动作帧数据捕捉模块301,用于通过接收线程实时捕捉目标终端的多个动作帧数据,并将所述多个动作帧数据写入标记点队列,得到动作标记点队列;
姿态帧数据选取模块302,用于在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据;
数据计算模块303,用于通过计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据;
姿态绘制模块304,用于通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示所述人体动作图像。
本发明实施例中,通过接收线程、计算主线程和绘制线程同时接收动作数据、计算动作数据和绘制动作图像,绘制频率不会受到显示屏的限制和显示频率不稳的影响,解决了绘制的图像出现延时、卡顿和拖尾的问题,能够实现实时同步的效果。
请参阅图4,本发明实施例中基于多线程的动作捕捉装置的另一个实施例包括:
动作帧数据捕捉模块301,用于通过接收线程实时捕捉目标终端的多个动作帧数据,并将所述多个动作帧数据写入标记点队列,得到动作标记点队列;
姿态帧数据选取模块302,用于在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据;
数据计算模块303,用于通过计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据;
姿态绘制模块304,用于通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在所述预置显示屏中显示所述人体动作图像。
可选的,姿态帧数据选取模块302还可以具体用于:
在计算主线程中判断所述动作标记点队列中是否包括多个动作帧数据;
若所述动作标记点队列中包括所述多个动作帧数据,则在所述多个动作帧数据中选取进入所述动作标记点队列时刻最早的动作帧数据进行复制,得到姿态计算数据,并删除所述标记帧数据队列中被复制的动作帧数据。
可选的,数据计算模块303还可以具体用于:
在所述计算主线程中采用反向动力学算法从所述姿态计算数据中提取多个姿态标记点;
采用所述反向动力学算法和预置标准姿态模板对所述多个姿态标记点进行身体部位相似度预测,得到身体部位标记点;
采用所述反向动力学算法对所述身体部位标记点进行计算,得到人体姿态数据。
可选的,姿态绘制模块304还可以具体用于:
读取预置显示屏的刷新速率,得到预置显示屏刷新率;
在绘制线程中,调用垂直同步算法按照所述预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在所述预置显示屏中显示所述人体动作图像。
可选的,基于多线程的动作捕捉装置包括:
互斥锁设置模块305,用于分别为接收线程、计算主线程和绘制线程设置互斥锁,得到接收线程互斥锁、计算主线程互斥锁和绘制线程互斥锁,当所述接收线程互斥锁、所述计算主线程互斥锁和绘制线程互斥锁中任意一个互斥锁为开锁状态时,其他两个互斥锁为关锁状态。
本发明实施例中,通过接收线程、计算主线程和绘制线程同时接收动作数据、计算动作数据和绘制动作图像,绘制频率不会受到显示屏的限制和显示频率不稳的影响,解决了绘制的图像出现延时、卡顿和拖尾的问题,能够实现实时同步的效果。
上面图3和图4从模块化功能实体的角度对本发明实施例中的基于多线程的动作捕捉装置进行详细描述,下面从硬件处理的角度对本发明实施例中基于多线程的动作捕捉设备进行详细描述。
图5是本发明实施例提供的一种基于多线程的动作捕捉设备的结构示意图,该基于多线程的动作捕捉设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于多线程的动作捕捉设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在基于多线程的动作捕捉设备500上执行存储介质530中的一系列指令操作。
基于多线程的动作捕捉设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图5示出的基于多线程的动作捕捉设备结构并不构成对基于多线程的动作捕捉设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述基于多线程的动作捕捉方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于多线程的动作捕捉方法,其特征在于,所述基于多线程的动作捕捉方法包括:
通过接收线程实时捕捉目标终端的多个动作帧数据,并将所述多个动作帧数据写入标记点队列,得到动作标记点队列;
在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据;
通过所述计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据;
通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示所述人体动作图像。
2.根据权利要求1所述的基于多线程的动作捕捉方法,其特征在于,所述在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据包括:
通过计算主线程按照预置的时间间隔实时判断所述动作标记点队列中是否包括多个动作帧数据;
若所述动作标记点队列中包括所述多个动作帧数据,则在所述多个动作帧数据中选取进入所述动作标记点队列时刻最早的动作帧数据进行复制,得到姿态计算数据,并删除所述标记帧数据队列中被复制的动作帧数据。
3.根据权利要求1所述的基于多线程的动作捕捉方法,其特征在于,所述通过所述计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据包括:
在所述计算主线程中采用反向动力学算法从所述姿态计算数据中提取多个姿态标记点;
采用所述反向动力学算法和预置标准姿态模板对所述多个姿态标记点进行身体部位相似度预测,得到身体部位标记点;
采用所述反向动力学算法对所述身体部位标记点进行计算,得到人体姿态数据。
4.根据权利要求1所述的基于多线程的动作捕捉方法,其特征在于,所述通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示所述人体动作图像包括:
读取预置显示屏的刷新速率,得到预置显示屏刷新率;
在绘制线程中,调用垂直同步算法按照所述预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在所述预置显示屏中显示所述人体动作图像。
5.根据权利要求1-4中任一项所述的基于多线程的动作捕捉方法,其特征在于,在所述通过接收线程不间断的接收目标终端的多个帧数据,并将所述多个帧数据写入标记队列,得到标记帧数据队列之前,所述基于多线程的动作捕捉还包括:
分别为接收线程、计算主线程和绘制线程设置互斥锁,得到接收线程互斥锁、计算主线程互斥锁和绘制线程互斥锁,其中,当所述接收线程互斥锁、所述计算主线程互斥锁和绘制线程互斥锁中任意一个互斥锁为开锁状态时,其他两个互斥锁为关锁状态。
6.一种基于多线程的动作捕捉装置,其特征在于,所述基于多线程的动作捕捉装置包括:
动作帧数据捕捉模块,用于通过接收线程实时捕捉目标终端的多个动作帧数据,并将所述多个动作帧数据写入标记点队列,得到动作标记点队列;
姿态帧数据选取模块,用于在计算主线程中对所述动作标记点队列进行计算,在所述多个动作帧数据中得到姿态计算帧数据;
数据计算模块,用于通过所述计算主线程对所述姿态计算帧数据进行计算,得到人体姿态数据;
姿态绘制模块,用于通过绘制线程按照预置显示屏刷新率对所述人体姿态数据进行绘制,得到人体动作图像,并在预置显示屏中显示所述人体动作图像。
7.根据权利要求6所述的基于多线程的动作捕捉方法,其特征在于,所述姿态帧数据选取模块具体用于:
通过计算主线程按照预置的时间间隔实时判断所述动作标记点队列中是否包括多个动作帧数据;
若所述动作标记点队列中包括所述多个动作帧数据,则在所述多个动作帧数据中选取进入所述动作标记点队列时刻最早的动作帧数据进行复制,得到姿态计算数据,并删除所述标记帧数据队列中被复制的动作帧数据。
8.根据权利要求6所述的基于多线程的动作捕捉方法,其特征在于,所述数据计算模块具体用于:
通过所述计算主线程从所述姿态计算数据中提取多个姿态标记点;
基于预置标准姿态模板和所述多个姿态标记点进行身体部位相似度预测,得到身体部位标记点;
采用反向动力学算法对所述身体部位标记点进行计算,得到人体姿态数据。
9.一种基于多线程的动作捕捉设备,其特征在于,所述基于多线程的动作捕捉设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于多线程的动作捕捉设备执行如权利要求1-7中任意一项所述的基于多线程的动作捕捉方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述基于多线程的动作捕捉方法。
CN202010191139.4A 2020-03-18 2020-03-18 基于多线程的动作捕捉方法、装置、设备及存储介质 Active CN111427697B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010191139.4A CN111427697B (zh) 2020-03-18 2020-03-18 基于多线程的动作捕捉方法、装置、设备及存储介质
PCT/CN2021/080721 WO2021185195A1 (zh) 2020-03-18 2021-03-15 基于多线程的动作捕捉方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010191139.4A CN111427697B (zh) 2020-03-18 2020-03-18 基于多线程的动作捕捉方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111427697A true CN111427697A (zh) 2020-07-17
CN111427697B CN111427697B (zh) 2023-06-06

Family

ID=71546482

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010191139.4A Active CN111427697B (zh) 2020-03-18 2020-03-18 基于多线程的动作捕捉方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN111427697B (zh)
WO (1) WO2021185195A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112541824A (zh) * 2020-12-11 2021-03-23 中信银行股份有限公司 一种k线蜡烛图的绘制方法及系统、存储介质
CN112704491A (zh) * 2020-12-28 2021-04-27 华南理工大学 基于姿态传感器和动捕模板数据的下肢步态预测方法
WO2021185195A1 (zh) * 2020-03-18 2021-09-23 深圳市瑞立视多媒体科技有限公司 基于多线程的动作捕捉方法、装置、设备及存储介质
CN113902054A (zh) * 2021-09-23 2022-01-07 深圳市瑞立视多媒体科技有限公司 基于标记点的动作捕捉方法、相关装置及存储介质
CN115129279A (zh) * 2021-03-25 2022-09-30 广州视享科技有限公司 图像绘制方法、装置、电子设备及计算机存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113925497B (zh) * 2021-10-22 2023-09-15 吉林大学 一种基于双目视觉测量系统的汽车乘员乘坐姿态提取方法
CN116720264B (zh) * 2023-08-04 2023-10-20 中国空气动力研究与发展中心计算空气动力研究所 考虑气动力/热累积变形反向几何预置的气动布局方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101697199A (zh) * 2009-08-11 2010-04-21 北京盈科成章科技有限公司 头面部动作检测方法及应用该方法操控计算机的助残系统
CN102622591A (zh) * 2012-01-12 2012-08-01 北京理工大学 3d人体姿态捕捉模仿系统
CN102749993A (zh) * 2012-05-30 2012-10-24 无锡掌游天下科技有限公司 基于骨骼节点数据的动作识别方法
CN103514441A (zh) * 2013-09-21 2014-01-15 南京信息工程大学 基于移动平台的人脸特征点定位跟踪方法
CN104516496A (zh) * 2013-10-04 2015-04-15 财团法人工业技术研究院 可调体感范围的多人指引系统与其方法
CN106548121A (zh) * 2015-09-23 2017-03-29 阿里巴巴集团控股有限公司 一种活体识别的测试方法及装置
CN110580710A (zh) * 2019-08-21 2019-12-17 深圳码隆科技有限公司 物体追踪方法、装置、计算机可读存储介质和计算机设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160086025A1 (en) * 2014-09-23 2016-03-24 Microsoft Corporation Pose tracker with multi threaded architecture
CN105686833B (zh) * 2016-01-13 2018-06-08 上海交通大学 基于无线体域网的可穿戴式多节点三维运动监测系统
CN109658514B (zh) * 2017-10-11 2022-03-11 腾讯科技(深圳)有限公司 一种数据处理方法、装置和计算机存储介质
CN109801210A (zh) * 2019-01-31 2019-05-24 北京字节跳动网络技术有限公司 图像处理方法、装置、电子设备及计算机可读存储介质
CN110633005A (zh) * 2019-04-02 2019-12-31 北京理工大学 一种光学式无标记的三维人体动作捕捉方法
CN111427697B (zh) * 2020-03-18 2023-06-06 深圳市瑞立视多媒体科技有限公司 基于多线程的动作捕捉方法、装置、设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101697199A (zh) * 2009-08-11 2010-04-21 北京盈科成章科技有限公司 头面部动作检测方法及应用该方法操控计算机的助残系统
CN102622591A (zh) * 2012-01-12 2012-08-01 北京理工大学 3d人体姿态捕捉模仿系统
CN102749993A (zh) * 2012-05-30 2012-10-24 无锡掌游天下科技有限公司 基于骨骼节点数据的动作识别方法
CN103514441A (zh) * 2013-09-21 2014-01-15 南京信息工程大学 基于移动平台的人脸特征点定位跟踪方法
CN104516496A (zh) * 2013-10-04 2015-04-15 财团法人工业技术研究院 可调体感范围的多人指引系统与其方法
CN106548121A (zh) * 2015-09-23 2017-03-29 阿里巴巴集团控股有限公司 一种活体识别的测试方法及装置
CN110580710A (zh) * 2019-08-21 2019-12-17 深圳码隆科技有限公司 物体追踪方法、装置、计算机可读存储介质和计算机设备

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021185195A1 (zh) * 2020-03-18 2021-09-23 深圳市瑞立视多媒体科技有限公司 基于多线程的动作捕捉方法、装置、设备及存储介质
CN112541824A (zh) * 2020-12-11 2021-03-23 中信银行股份有限公司 一种k线蜡烛图的绘制方法及系统、存储介质
CN112541824B (zh) * 2020-12-11 2024-04-30 中信银行股份有限公司 一种k线蜡烛图的绘制方法及系统、存储介质
CN112704491A (zh) * 2020-12-28 2021-04-27 华南理工大学 基于姿态传感器和动捕模板数据的下肢步态预测方法
CN112704491B (zh) * 2020-12-28 2022-01-28 华南理工大学 基于姿态传感器和动捕模板数据的下肢步态预测方法
CN115129279A (zh) * 2021-03-25 2022-09-30 广州视享科技有限公司 图像绘制方法、装置、电子设备及计算机存储介质
CN115129279B (zh) * 2021-03-25 2024-03-15 广州视享科技有限公司 图像绘制方法、装置、电子设备及计算机存储介质
CN113902054A (zh) * 2021-09-23 2022-01-07 深圳市瑞立视多媒体科技有限公司 基于标记点的动作捕捉方法、相关装置及存储介质

Also Published As

Publication number Publication date
CN111427697B (zh) 2023-06-06
WO2021185195A1 (zh) 2021-09-23

Similar Documents

Publication Publication Date Title
CN111427697B (zh) 基于多线程的动作捕捉方法、装置、设备及存储介质
Lee et al. Hybrid feature tracking and user interaction for markerless augmented reality
US11928800B2 (en) Image coordinate system transformation method and apparatus, device, and storage medium
WO2021129064A9 (zh) 姿态获取方法、关键点坐标定位模型的训练方法和装置
US20160300100A1 (en) Image capturing apparatus and method
WO2017035966A1 (zh) 用于人脸图像处理的方法和装置
CN111833403B (zh) 用于空间定位的方法和装置
Allaert et al. Impact of the face registration techniques on facial expressions recognition
CN111079535B (zh) 一种人体骨架动作识别方法、装置及终端
JP2005309746A (ja) 動物体追跡方法、動物体追跡プログラムおよびその記録媒体、ならびに、動物体追跡装置
CN111291674A (zh) 一种虚拟人物表情动作的提取方法、系统、装置及介质
KR20140019950A (ko) 단말기의 모노 카메라에 입력된 손가락 영상을 이용한 3차원 좌표 생성 방법 및 모노 카메라에 입력된 손가락 영상을 이용하여 3차원 좌표를 생성하는 이동 단말기
Drab et al. Motion Detection as Interaction Technique for Games & Applications on Mobile Devices.
CN110969646A (zh) 一种适应高帧率的人脸追踪方法
CN111754571A (zh) 一种姿态识别方法、装置及其存储介质
JP2010245983A (ja) 映像構造化装置,映像構造化方法および映像構造化プログラム
Huang et al. Face detection and smile detection
Chia et al. A parallel algorithm for generating chain code of objects in binary images
CN115497094A (zh) 图像处理方法及装置、电子设备和存储介质
CN115294493A (zh) 视角路径获取方法、装置、电子设备及介质
Liao et al. Action recognition based on depth image sequence
CN109493349B (zh) 一种图像特征处理模块、增强现实设备和角点检测方法
Yusuf et al. Development of a Lightweight Real-Time Application for Dynamic Hand Gesture Recognition
CN112036255A (zh) 人脸关键点检测装置
Casado et al. Face detection and recognition for smart glasses

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