Marking point recognition method, device, equipment and storage medium

By dividing thread groups in the graphics processor to calculate the trajectory intersection of marking points in parallel, the problems of large and time-consuming calculations in the prior art are solved, and efficient calculation of marking point recognition is realized.

CN114820689BActive Publication Date: 2025-08-22SHENZHEN REALIS MULTIMEDIA TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202210461999.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2019-10-21
Publication Date
2025-08-22
Estimated Expiration
2039-10-21

AI Technical Summary

Technical Problem

When the existing optical motion capture system calculates the three-dimensional position of marking points, the calculation amount is large and time-consuming. When the number of marking points or the number of cameras is large, the calculation efficiency is ineffective.

Method used

The trajectory crossing of marking points is calculated in parallel by using the graphics processor (GPU) to divide the thread group. The threads executed in parallel determine whether there is a track crossing between pixel points, and obtain the position of the intersection as the motion capture marking point.

Benefits of technology

The efficiency of mark point recognition is improved, and the calculation time is reduced, especially when the number of pixel points is large, the calculation speed is significantly improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114820689B_ABST
    Figure CN114820689B_ABST
Patent Text Reader

Abstract

The present invention discloses a method for identifying marker points, including: acquiring an object motion image collected by a camera, numbering pixel points in the object motion image from 0 to n-1, where n is the number of pixel points in the object motion image; invoking a graphics processing unit to create n-1 thread groups in the image processor; in the created i-th thread group, determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image through parallel threads, where i and j are the numbers of pixel points, 1≤i≤n-1, 0≤j<i; if there is a trajectory intersection between pixel point i and pixel point j in the object motion image, obtaining the position of the intersection point and taking the position of the intersection point as the position of the motion capture marker point. The present invention also discloses a marker point identification device, equipment and a storage medium. The present invention improves the identification efficiency of motion capture marker points and reduces the calculation time consumption.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of motion capture technology, and in particular to a method, device, equipment and storage medium for identifying marker points. Background Art

[0002] Motion capture technology is currently widely used in virtual reality (VR) games and some somatosensory games. Motion capture involves placing trackers (such as reflective markers) at key locations on a moving object, capturing their positions, and then processing them with a computer to generate three-dimensional coordinate data. Once the data is recognized by the computer, it can be applied in fields such as animation, gait analysis, biomechanics, and ergonomics.

[0003] In existing optical motion capture systems, the motion trajectory of reflective markers is generally captured to achieve motion posture recognition and trajectory tracking of the target object. In this process, the optical motion capture system needs to rely on the two-dimensional coordinates of the marker points projected onto the pixels of two or more surrounding cameras, and calculate the three-dimensional position coordinates of the marker points based on these two-dimensional coordinates. Specifically, the projection trajectory is calculated by the camera posture and the two-dimensional coordinates of the pixel points. If two trajectories intersect, this intersection is the position of the marker point. All combinations of two pixel points need to calculate whether their projection trajectories intersect. The more pixels there are, the greater the amount of calculation required. The problem with this is that when the number of marker points or cameras is large, due to the increase in the number of pixels, calculating the three-dimensional position coordinates of each marker point becomes very time-consuming. Summary of the Invention

[0004] The main purpose of the present invention is to provide a method, device, equipment and storage medium for identifying marker points, aiming to improve the recognition efficiency of motion capture marker points and reduce calculation time.

[0005] To achieve the above object, the present invention provides a method for identifying a marker point, the method comprising the following steps:

[0006] Obtaining a motion image of an object captured by a camera, and numbering pixels in the motion image of the object from 0 to n-1, where n is the number of pixels in the motion image of the object;

[0007] Invoke a graphics processor and create n-1 thread groups in the graphics processor;

[0008] In the created i-th thread group, through the parallel execution of threads, it is determined whether there is a trajectory intersection between pixel i and pixel j in the object motion image, where i and j are the pixel numbers, 1≤i≤n-1, 0≤j <i;

[0009] If there is a trajectory intersection between pixel point i and pixel point j in the object motion image, the position of the intersection is obtained and the position of the intersection is used as the position of the motion capture mark point.

[0010] Optionally, the step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image by parallelly executing threads in the created i-th thread group includes:

[0011] Create i threads for parallel execution in the i-th thread group;

[0012] It is determined by the i parallel executed threads whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image.

[0013] Optionally, the step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image by the i parallel executed threads includes:

[0014] In each parallel execution thread, the coordinate data of the pixel point i and the corresponding camera pose are read from the shared memory of the i-th thread group, and the coordinate data of the pixel point j and the corresponding camera pose are read from the preset global memory;

[0015] According to the coordinate data of the pixel point i and the corresponding camera posture read from the shared memory, and the coordinate data of the pixel point j and the corresponding camera posture read from the global memory, it is determined whether there is a trajectory intersection between the pixel point i and the pixel point j.

[0016] Optionally, before the step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image by the parallel execution threads, the method further includes:

[0017] Read the coordinate data of the pixel point i and the corresponding camera posture from the global memory;

[0018] The coordinate data of the pixel point i and the corresponding camera posture read from the global memory are written into the shared memory of the i-th thread group.

[0019] Optionally, before the step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image by using parallelly executed threads in the created i-th thread group, the method further includes:

[0020] Define an atomic variable with an initial value of 0 in the shared memory of each thread group;

[0021] After the step of obtaining the position of the intersection and using the position of the intersection as the position of the motion capture marker, the method further includes:

[0022] Increment the value of the atomic variable defined in the shared memory of the i-th thread group by one.

[0023] In addition, to achieve the above-mentioned purpose, the present invention further provides a marking point recognition device, the device comprising:

[0024] an acquisition module, configured to acquire a motion image of an object captured by a camera, and number pixels in the motion image of the object from 0 to n-1, where n is the number of pixels in the motion image of the object;

[0025] A creation module is used to call a graphics processor and create n-1 thread groups in the graphics processor;

[0026] A judgment module is used to judge whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image through parallel execution threads in the created i-th thread group, where i and j are pixel numbers, 1≤i≤n-1, 0≤j <i;

[0027] The recognition module is used to obtain the position of the intersection if there is a trajectory intersection between pixel point i and pixel point j in the object motion image, and use the position of the intersection as the position of the motion capture mark point.

[0028] In addition, to achieve the above-mentioned purpose, the present invention also provides a marker point recognition device, which includes: a memory, a processor, and a marker point recognition program stored in the memory and runnable on the processor. When the marker point recognition program is executed by the processor, the steps of the marker point recognition method described above are implemented.

[0029] In addition, to achieve the above-mentioned purpose, the present invention also provides a storage medium, on which a marker point recognition program is stored. When the marker point recognition program is executed by a processor, the steps of the marker point recognition method described above are implemented.

[0030] The present invention obtains the object motion image collected by a camera, numbers the pixel points in the object motion image from 0 to n-1, where n is the number of pixel points in the object motion image; calls a graphics processor to create n-1 thread groups in the image processor; in the created i-th thread group, determines whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image through parallel threads, where i and j are the numbers of pixel points, 1≤i≤n-1, 0≤j<i; if there is a trajectory intersection between pixel point i and pixel point j in the object motion image, obtains the position of the intersection point and uses the position of the intersection point as the position of the motion capture marker point. By dividing the graphics processor into multiple thread groups, each thread group is used to calculate whether there is a trajectory intersection between a pixel point in the object motion image and all pixel points with smaller numbers. Since the threads in each thread group can perform calculations in parallel, the position of the motion capture marker point can be calculated quickly. When the number of pixel points is large, compared with only calculating through the CPU, the present invention can improve the recognition efficiency of the motion capture marker point and reduce the calculation time-consuming. BRIEF DESCRIPTION OF THE DRAWINGS

[0031] Figure 1 is a schematic diagram of the device structure of the hardware operating environment involved in the embodiment of the present invention;

[0032] Figure 2 is a schematic flowchart of the first embodiment of the method for identifying marker points of the present invention;

[0033] Figure 3 is a schematic diagram of the modules of an embodiment of the device for identifying marker points of the present invention.

[0034] The implementation, functional features and advantages of the object of the present invention will be further described with reference to the embodiments and the accompanying drawings. DETAILED DESCRIPTION OF THE EMBODIMENTS

[0035] It should be understood that the specific embodiments described herein are only used to explain the present invention and are not used to limit the present invention.

[0036] As Figure 1 shown, Figure 1 is a schematic diagram of the device structure of the hardware operating environment involved in the embodiment of the present invention.

[0037] The device for identifying marker points in the embodiment of the present invention may be a computer or a server.

[0038] As Figure 1As shown, the device may include: a processor 1001, such as a CPU, a network interface 1004, a user interface 1003, a memory 1005, and a communication bus 1002. Among them, the communication bus 1002 is used to realize the connection and communication between these components. The user interface 1003 may include a display screen (Display), an input unit such as a keyboard (Keyboard), and the user interface 1003 may also include a standard wired interface and a wireless interface. The network interface 1004 may optionally include a standard wired interface and a wireless interface (such as a WI-FI interface). The memory 1005 may be a high-speed RAM memory, or a stable memory (non-volatile memory), such as a disk memory. The memory 1005 may also be a storage device independent of the aforementioned processor 1001.

[0039] Those skilled in the art will understand that Figure 1 The device structure shown in the figure does not constitute a limitation of the device, and may include more or fewer components than shown in the figure, or combine certain components, or arrange the components differently.

[0040] like Figure 1 As shown, the memory 1005 as a computer storage medium may include an operating system, a network communication module, a user interface module, and a marker recognition program.

[0041] exist Figure 1 In the terminal shown, the network interface 1004 is mainly used to connect to the background server and communicate data with the background server; the user interface 1003 is mainly used to connect to the client (user end) and communicate data with the client; and the processor 1001 can be used to call the mark point recognition program stored in the memory 1005 and perform the operations in each embodiment of the following mark point recognition method.

[0042] Based on the above hardware structure, various embodiments of the method for identifying a marker point of the present invention are proposed.

[0043] Reference Figure 2 , Figure 2 This is a flow chart of a first embodiment of a method for identifying a marker point according to the present invention. The method includes:

[0044] Step S10, obtaining a motion image of the object captured by the camera, and numbering the pixels in the motion image of the object from 0 to n-1, where n is the number of pixels in the motion image of the object;

[0045] In existing optical motion capture systems, motion recognition and tracking of a target object are typically achieved by capturing the trajectory of reflective markers (markers covered with special reflective material, often in spherical or hemispherical shapes, often used to capture moving objects). To quickly identify the positions of these markers, this embodiment proposes a method for marker recognition based on a graphics processing unit (GPU).

[0046] In this embodiment, the device performing the marker point recognition method is used as a server. First, a camera deployed in the motion capture space can capture an object's motion image and send it to the server. The server receives the object's motion image captured by the camera and numbers the pixels in the object's motion image from 0 to n-1, where n is the number of pixels in the object's motion image. That is, each pixel is numbered 0, 1, ..., n-1.

[0047] Step S20, calling the graphics processor and creating n-1 thread groups in the graphics processor;

[0048] After numbering the pixels, the server calls the graphics processor (GPU) and creates n-1 thread groups (a class of threads that manage threads). Each thread group is used to calculate whether there is a trajectory intersection between a pixel point (except the pixel point numbered 0) in the object's motion image and all pixels with numbers smaller than that pixel point.

[0049] Step S30: In the created thread group i, the parallel threads are used to determine whether there is a trajectory intersection between pixel i and pixel j in the object motion image, where i and j are pixel numbers, 1≤i≤n-1, 0≤j. <i;

[0050] Specifically, the server can calculate whether there is a trajectory intersection between the pixel point numbered 1 and the pixel point numbered 0 in the object's motion image through parallel execution of threads in the first thread group; in the second thread group, it can calculate whether there is a trajectory intersection between the pixel point numbered 2 and the pixel points numbered 0 and 1 in the object's motion image through parallel execution of threads, and so on. The pairwise intersection of all pixel points in the object's motion image can be calculated.

[0051] It should be noted that compared with the central processing unit (CPU), the advantage of GPU is that it can generate a large number of threads for parallel computing, thereby reducing the total computing time.

[0052] If there is a trajectory intersection between pixel point i and pixel point j in the object motion image, step S40 is executed to obtain the position of the intersection point, and the position of the intersection point is used as the position of the motion capture mark point.

[0053] When the server determines that the paths of pixel points i and j in the moving image of an object intersect, it obtains the location of the intersection and uses it as the location of the motion capture marker, thereby identifying the marker in the moving image of the object. The location of the intersection can be represented as three-dimensional coordinates. The specific method for obtaining the three-dimensional coordinates of the intersection can be referred to in related existing technologies and is not further described here.

[0054] In this embodiment, the graphics processor is divided into multiple thread groups, each thread group is used to calculate whether there is a trajectory intersection between a pixel point in the object's motion image and all the pixels with smaller numbers. Since the threads in each thread group can perform calculations in parallel, the position of the motion capture marker point can be quickly calculated. When the number of pixels is large, compared with calculations only by the CPU, this embodiment can improve the recognition efficiency of the motion capture marker point and reduce the calculation time.

[0055] Furthermore, based on the first embodiment of the method for identifying a marker point of the present invention, a second embodiment of the method for identifying a marker point of the present invention is proposed.

[0056] In this embodiment, the above step S30 may include: creating i parallel execution threads in the i-th thread group; and determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image through the i parallel execution threads.

[0057] Specifically, the server can create one thread in the first thread group, and determine whether there is a trajectory intersection between pixel point 1 and pixel point 0 in the object's motion image by executing the thread. Two threads can be created in the second thread group, and these two threads can be used to determine whether there is a trajectory intersection between pixel point 2 and pixel point 0 and pixel point 1 in the object's motion image, respectively. Similarly, the pairwise intersection of all pixels in the object's motion image can be calculated.

[0058] Furthermore, the step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image through i parallel executing threads may further include: in each parallel executing thread, reading the coordinate data and corresponding camera posture of pixel point i from the shared memory of the i-th thread group, and reading the coordinate data and corresponding camera posture of pixel point j from the preset global memory; based on the coordinate data and corresponding camera posture of pixel point i read from the shared memory, and the coordinate data and corresponding camera posture of pixel point j read from the global memory, determining whether there is a trajectory intersection between pixel point i and pixel point j.

[0059] Thread groups on a GPU have a small amount of shared memory, which can only be accessed by threads in that thread group, while global memory can be accessed by threads in all thread groups. The difference between shared memory and global memory is that shared memory has faster read and write speeds and allows threads in the same thread group to exchange data, but has a smaller capacity; all data can only be stored in global memory, and shared memory can only be temporarily used during calculations.

[0060] Based on the above characteristics, for a thread group, since each thread in it needs to use the coordinate data of pixel point i and the corresponding camera posture when judging whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image, the coordinate data of pixel point i and the corresponding camera posture can be first written into the shared memory of the thread group so that each thread can read it directly from the shared memory, thereby improving data reading efficiency.

[0061] In specific implementations, in thread group i, the server reads the coordinate data and corresponding camera pose of pixel i from the shared memory of thread group i, and reads the coordinate data and corresponding camera pose of pixel j from the preset global memory in each parallel thread. Then, based on the coordinate data and corresponding camera pose of pixel i read from the shared memory, and the coordinate data and corresponding camera pose of pixel j read from the global memory, it determines whether there is a trajectory intersection between pixel i and pixel j. Because the coordinate data and corresponding camera pose of pixel i are read directly from the shared memory, this further improves computational efficiency and reduces computational time.

[0062] Furthermore, before the step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image through parallel execution of threads, it may also include: reading the coordinate data of pixel point i and the corresponding camera posture from the global memory; and writing the coordinate data of pixel point i and the corresponding camera posture read from the global memory into the shared memory of the i-th thread group.

[0063] In this embodiment, before calculating whether there is a trajectory intersection between pixel i and pixel j in the object's motion image, the server can first read the coordinate data and corresponding camera pose of pixel i from global memory, and then write the read coordinate data and corresponding camera pose of pixel i to the shared memory of the i-th thread group. This ensures that the coordinate data and corresponding camera pose of pixel i can be read directly from shared memory later.

[0064] Furthermore, based on the first and second embodiments of the method for identifying a marker point of the present invention, a third embodiment of the method for identifying a marker point of the present invention is proposed.

[0065] In this embodiment, before the above-mentioned step S30, it may also include: defining an atomic variable with an initial value of 0 in the shared memory of each thread group respectively; correspondingly, after the step of obtaining the position of the intersection and using the position of the intersection as the position of the motion capture mark point, it also includes: adding one to the value of the atomic variable defined in the shared memory of the i-th thread group.

[0066] An atomic variable is a variable that only one thread can operate on at a time. Atomic variables ensure data accuracy even when multiple threads are writing to it simultaneously. In this embodiment, the atomic variable is used to record the number of motion capture markers calculated in the i-th thread group. Because reading and writing atomic variables is very time-consuming, atomic variables can be defined in shared memory to improve read and write efficiency.

[0067] Specifically, an atomic variable with an initial value of 0 can be defined in the shared memory of each thread group. Each time the server determines that there is a trajectory intersection between pixel i and pixel j in the object's motion image, the position of the intersection is obtained, the position of the intersection is used as the position of the motion capture mark point, and the value of the atomic variable defined in the shared memory of the i-th thread group is increased by one.

[0068] Through the above method, the position and number of motion capture markers are recorded.

[0069] The present invention also provides a device for identifying a marking point. Figure 3 , Figure 3 This is a module diagram of an embodiment of a device for identifying a marker point according to the present invention. In this embodiment, the device for identifying a marker point includes:

[0070] an acquisition module, configured to acquire a motion image of an object captured by a camera, and number pixels in the motion image of the object from 0 to n-1, where n is the number of pixels in the motion image of the object;

[0071] A creation module is used to call a graphics processor and create n-1 thread groups in the graphics processor;

[0072] A judgment module is used to judge whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image through parallel execution threads in the created i-th thread group, where i and j are pixel numbers, 1≤i≤n-1, 0≤j <i;

[0073] The recognition module is used to obtain the position of the intersection if there is a trajectory intersection between pixel point i and pixel point j in the object motion image, and use the position of the intersection as the position of the motion capture mark point.

[0074] Furthermore, the judgment module is further configured to:

[0075] Create i threads for parallel execution in the i-th thread group;

[0076] It is determined by the i parallel executed threads whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image.

[0077] Furthermore, the judgment module is further configured to:

[0078] In each parallel execution thread, the coordinate data of the pixel point i and the corresponding camera pose are read from the shared memory of the i-th thread group, and the coordinate data of the pixel point j and the corresponding camera pose are read from the preset global memory;

[0079] According to the coordinate data of the pixel point i and the corresponding camera posture read from the shared memory, and the coordinate data of the pixel point j and the corresponding camera posture read from the global memory, it is determined whether there is a trajectory intersection between the pixel point i and the pixel point j.

[0080] Furthermore, the device further comprises:

[0081] A reading module, configured to read the coordinate data of the pixel point i and the corresponding camera posture from the global memory;

[0082] A writing module is used to write the coordinate data of the pixel point i and the corresponding camera posture read from the global memory into the shared memory of the i-th thread group.

[0083] Furthermore, the device further comprises:

[0084] A definition module is used to define an atomic variable with an initial value of 0 in the shared memory of each thread group;

[0085] The recording module is configured to increase the value of the atomic variable defined in the shared memory of the i-th thread group by one if there is a trajectory intersection between pixel point i and pixel point j in the object motion image.

[0086] The methods and beneficial effects achieved by the above-mentioned program modules can be referred to the embodiment of the method for identifying the marking points of the present invention, and will not be described in detail here.

[0087] The present invention also provides a storage medium.

[0088] The storage medium of the present invention stores a marking point recognition program, and when the marking point recognition program is executed by a processor, the steps of the marking point recognition method described above are implemented.

[0089] The method implemented when the marker point recognition program running on the processor is executed can refer to the various embodiments of the marker point recognition method of the present invention, and will not be described in detail here.

[0090] It should be noted that, in this document, the terms "comprises," "includes," or any other variations thereof are intended to encompass non-exclusive inclusion, such that a process, method, article, or system comprising a series of elements includes not only those elements but also other elements not explicitly listed, or elements inherent to such process, method, article, or system. In the absence of further limitations, an element defined by the phrase "comprising a ..." does not exclude the presence of other identical elements in the process, method, article, or system comprising the element.

[0091] The serial numbers of the above embodiments of the present invention are for description only and do not represent the advantages or disadvantages of the embodiments.

[0092] Through the description of the above embodiments, those skilled in the art can clearly understand that the above embodiment methods can be implemented by means of software plus the necessary general hardware platform, and of course can also be implemented by hardware, but in many cases the former is a better embodiment. Based on this understanding, the technical solution of the present invention is essentially or the part that contributes to the prior art can be embodied in the form of a software product, which is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk) as described above, and includes a number of instructions for enabling a terminal device (which can be a mobile phone, computer, server, air conditioner, or network device, etc.) to execute the methods described in each embodiment of the present invention.

[0093] The above are only preferred embodiments of the present invention and are not intended to limit the patent scope of the present invention. Any equivalent structure or equivalent process transformation made using the contents of the present invention description and drawings, or directly or indirectly applied in other related technical fields, are also included in the patent protection scope of the present invention.

Claims

1. A method for identifying a marker point, characterized in that: The optical motion capture system calculates the three-dimensional position coordinates of the marker point by projecting the captured marker point onto the two-dimensional coordinates of the pixel points of two or more surrounding cameras. The method specifically includes the following steps: Obtaining a motion image of an object captured by a camera, and numbering pixels in the motion image of the object from 0 to n-1, where n is the number of pixels in the motion image of the object; Invoke a graphics processor and create n-1 thread groups in the graphics processor; In the created i-th thread group, through the parallel execution of threads, it is determined whether there is a trajectory intersection between pixel i and pixel j in the object motion image, where i and j are the pixel numbers, 1≤i≤n-1, 0≤j <i; If there is a track intersection between pixel point i and pixel point j in the object motion image, the position of the intersection is obtained and the position of the intersection is used as the position of the motion capture marker point; An atomic variable is a variable that only one thread can operate on at a time. Atomic variables ensure data accuracy when multiple threads write to them simultaneously. Atomic variables are used to record the number of motion capture markers calculated in the i-th thread group. Atomic variables are defined in shared memory to improve read and write efficiency. An atomic variable with an initial value of 0 is defined in the shared memory of each thread group. Each time the server determines that there is a trajectory intersection between pixel point i and pixel point j in the object motion image, the position of the intersection is obtained, the position of the intersection is used as the position of the motion capture marker point, and the value of the atomic variable defined in the shared memory of the i-th thread group is increased by one. The step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image by parallel execution of threads in the created i-th thread group includes: Create i threads for parallel execution in the i-th thread group; It is determined by the i parallel executed threads whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image.

2. The method for identifying a marking point according to claim 1, wherein: The step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image by the i parallel executed threads includes: In each parallel execution thread, the coordinate data of the pixel point i and the corresponding camera pose are read from the shared memory of the i-th thread group, and the coordinate data of the pixel point j and the corresponding camera pose are read from the preset global memory; According to the coordinate data of the pixel point i and the corresponding camera posture read from the shared memory, and the coordinate data of the pixel point j and the corresponding camera posture read from the global memory, it is determined whether there is a trajectory intersection between the pixel point i and the pixel point j.

3. The method for identifying a marking point according to claim 2, wherein: Before the step of determining whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image by the parallel execution threads, the method further includes: Read the coordinate data of the pixel point i and the corresponding camera posture from the global memory; The coordinate data of the pixel point i and the corresponding camera posture read from the global memory are written into the shared memory of the i-th thread group.

4. A marking point recognition device, characterized in that: An optical motion capture system is used to project the captured marker point onto the two-dimensional coordinates of the pixel points of two or more surrounding cameras to calculate the three-dimensional position coordinates of the marker point, the device comprising: an acquisition module, configured to acquire a motion image of an object captured by a camera, and number pixels in the motion image of the object from 0 to n-1, where n is the number of pixels in the motion image of the object; A creation module is used to call a graphics processor and create n-1 thread groups in the graphics processor; A judgment module is used to judge whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image through parallel execution threads in the created i-th thread group, where i and j are pixel numbers, 1≤i≤n-1, 0≤j <i; a recognition module configured to obtain a position of an intersection point if there is a trajectory intersection between pixel point i and pixel point j in the object motion image, and use the position of the intersection point as the position of a motion capture marker point; An atomic variable is a variable that only one thread can operate on at a time. Atomic variables ensure data accuracy when multiple threads write to them simultaneously. Atomic variables are used to record the number of motion capture markers calculated in the i-th thread group. Atomic variables are defined in shared memory to improve read and write efficiency. An atomic variable with an initial value of 0 is defined in the shared memory of each thread group. Each time the server determines that there is a trajectory intersection between pixel i and pixel j in the object's motion image, the position of the intersection is obtained, the position of the intersection is used as the position of the motion capture marker, and the value of the atomic variable defined in the shared memory of the i-th thread group is increased by one. The judgment module is also used to: Create i threads for parallel execution in the i-th thread group; It is determined by the i parallel executed threads whether there is a trajectory intersection between pixel point i and pixel point j in the object motion image.

5. The marking point recognition device according to claim 4, characterized in that: The judgment module is also used for: In each parallel execution thread, the coordinate data of the pixel point i and the corresponding camera pose are read from the shared memory of the i-th thread group, and the coordinate data of the pixel point j and the corresponding camera pose are read from the preset global memory; According to the coordinate data of the pixel point i and the corresponding camera posture read from the shared memory, and the coordinate data of the pixel point j and the corresponding camera posture read from the global memory, it is determined whether there is a trajectory intersection between the pixel point i and the pixel point j.

6. A marking point recognition device, characterized in that: The device includes: a memory, a processor, and a marker point recognition program stored in the memory and executable on the processor. When the marker point recognition program is executed by the processor, the steps of the marker point recognition method according to any one of claims 1 to 3 are implemented.

7. A storage medium, characterized in that: The storage medium stores a marker recognition program, which, when executed by a processor, implements the steps of the marker recognition method according to any one of claims 1 to 3.

Citation Information

Patent Citations

  • GPU adaptive foreground extracting method

    CN104751485A

  • Streamline simulation acceleration method based on multi-node and multi-GPU computing

    CN109857543A