A mesh segmentation method and device, electronic equipment and storage medium
By dividing the candidate vertex sequence in the 3D human body model and traversing it vertex by vertex, the problem of low efficiency and accuracy of mesh segmentation in the existing technology is solved, and more efficient mesh traversal and segmentation are achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- HISENSE GRP HLDG CO LTD
- Filing Date
- 2021-12-22
- Publication Date
- 2026-04-28
AI Technical Summary
In existing technologies, the half-side data structure based on OpenMesh is difficult to perform effective and fast mesh traversal on complex human triangular mesh models, resulting in low mesh segmentation efficiency and accuracy.
By dividing the vertex sequence into candidate vertex sequences, each candidate vertex is used as a starting point for traversal until the boundary of the target part is reached, the traversal ends, and the target vertex set is determined based on the traversal results.
It improves the efficiency of mesh traversal and the accuracy of mesh segmentation, enabling the rapid location of required vertices and accurate determination of the target vertex set.
Smart Images

Figure CN116342830B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of three-dimensional human body measurement technology, and in particular to a mesh segmentation method, device, electronic device and storage medium. Background Technology
[0002] With the development of 3D human body modeling technology, digital human body, 3D human body measurement, and virtual try-on are becoming research hotspots in academia and industry. Among these, obtaining human body point clouds through depth camera scanning and reconstructing corresponding human body models is a common practice.
[0003] After reconstructing a 3D human body model, existing technologies often use the following method to traverse the mesh: the half-edge data structure based on OpenMesh can traverse the vertices in its 1-neighborhood for each mesh vertex. However, for a human body model with a triangular mesh, the information of the neighboring vertices alone is still difficult to effectively and quickly traverse the mesh of such a complex model as the human body. Summary of the Invention
[0004] This application provides a mesh segmentation method, apparatus, electronic device, and storage medium to improve the accuracy of mesh segmentation and the speed of mesh traversal.
[0005] In a first aspect, embodiments of this application provide a mesh segmentation method, the method comprising:
[0006] Based on the division method corresponding to the target part of the object to be segmented, a candidate vertex sequence corresponding to the target part is divided from the vertex sequence; the target part is the part to be segmented in the object to be segmented; the vertex sequence is composed of the vertices of the mesh that constitute the object to be segmented; the division method is to take the first vertex sequence that occupies a preset proportion as the candidate vertex sequence; the preset proportion is the proportion of the target part in the object to be segmented in a pre-defined manner.
[0007] The candidate vertices in the candidate vertex sequence are used as the starting traversal point in turn, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex to obtain the traversal result, until the traversal result satisfies the condition of reaching the boundary of the target part, and the traversal ends; the other candidate vertices are the candidate vertices in the candidate vertex sequence other than the traversal point; the traversal point includes the traversed candidate vertex and the starting traversal point;
[0008] Based on the traversal results, the target vertices corresponding to the target portion are determined from the candidate vertex sequence to obtain the target vertex set.
[0009] Since this embodiment of the application divides the candidate vertex sequence corresponding to the target part from the vertex sequence, and then sequentially uses the candidate vertices in the candidate vertex sequence as the starting traversal points to traverse the other candidate vertices in the candidate vertex sequence one by one to obtain the traversal results until the traversal results meet the condition of reaching the boundary of the target part, the traversal ends. This can quickly find the required vertices for traversal, thereby improving the efficiency of mesh traversal. Furthermore, when the traversal results meet the condition of reaching the boundary of the target part, the traversal ends, and the target vertex set can be directly determined based on the traversal results, thereby improving the efficiency and accuracy of mesh segmentation.
[0010] An optional implementation involves sequentially using candidate vertices in the candidate vertex sequence as starting traversal points, and then traversing each of the other candidate vertices in the candidate vertex sequence one by one to obtain traversal results until the traversal results satisfy the condition of reaching the boundary of the target portion, including:
[0011] The first candidate vertex in the candidate vertex sequence is taken as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex in the first direction to obtain the starting traversal point sequence.
[0012] Starting from the initial traversal point in the initial traversal point sequence, the other candidate vertices in the candidate vertex sequence are traversed in the second direction to obtain the traversal result until the traversal result satisfies the condition of reaching the boundary of the target part.
[0013] Because in this embodiment, the first candidate vertex in the candidate vertex sequence is taken as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex in the first direction to obtain the starting traversal point sequence; then, the starting traversal point in the starting traversal point sequence is taken as the starting point, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex in the second direction to achieve the traversal loop, thereby improving the speed of mesh traversal.
[0014] An optional implementation includes the following conditions for reaching the boundary of the target portion:
[0015] When the target portion is the head, the traversal result is a traversal cycle, and the circumference of the traversal cycle is greater than the circumference of the previous traversal cycle; the traversal cycle is a loop formed by the traversal points; or
[0016] When the target part is an arm, the ascending state is the normal state, the traversal result is the traversal loop, and the number of traversal loops is greater than a first set threshold, the minimum value of the second value of the traversal point in the traversal loop is less than the minimum value of the second value in the previous traversal loop; the second value is the position value of the traversal point in the second direction; or, the second value of the target traversal point is greater than the minimum value of the second value of the traversal loop, and greater than the minimum value of the second value of the previous traversal loop; the target traversal point is the traversal point corresponding to the minimum value of the second value of at least one traversal point located in the first direction between the minimum value of the first value in the traversal loop and the minimum value of the first value in the previous traversal loop; or
[0017] When the target part is both legs, the first value of the starting traversal point is greater than or equal to the second set threshold, the maximum value of the second value of the traversal point in the traversal result is greater than the third set threshold, and the ratio of the first difference to the second difference is greater than the fourth set threshold; the first value is the position value of the starting traversal point in the first direction; the first difference is the difference between the maximum and minimum values of the second value in the traversal result corresponding to the starting traversal point; the second difference is the difference between the maximum and minimum values of the second value in the traversal result corresponding to the previous starting traversal point.
[0018] An optional implementation is that, when the target part is the arm, after performing a vertex-by-vertex traversal in the second direction from the starting traversal point in the starting traversal point sequence to obtain the traversal result, the method further includes:
[0019] When the traversal result is the traversal cycle, determine the maximum and minimum values of the second value in the traversal cycle, and record the number of the traversal cycles;
[0020] If the maximum value of the second value of the traversal cycle is greater than the maximum value of the second value of the previous traversal cycle, the difference between the maximum and minimum values of the second value of the traversal cycle is greater than or equal to a fourth set threshold, and the minimum value of the second value of the traversal cycle is greater than the minimum value of the second value of the previous traversal cycle, then the rising state is updated to the normal state.
[0021] An optional implementation includes determining the target vertex corresponding to the target portion from the candidate vertex sequence based on the traversal result, thereby obtaining a target vertex set, comprising:
[0022] When the target part is the head, the target starting traversal point is determined according to the traversal result; the target starting traversal point is the starting traversal point for the last vertex-by-vertex traversal; the candidate vertices in the candidate vertex sequence whose first value is greater than or equal to the first value of the target starting traversal point are taken as the target vertices corresponding to the head, thus obtaining the target vertex set; or
[0023] When the target part is the arm, if, according to the traversal result, the minimum value of the second value of the traversal point in the traversal loop is determined to be less than the minimum value of the second value in the previous traversal loop, then the traversal point corresponding to the minimum value of the second value in the traversal loop is determined as the armpit point; or, if, according to the traversal result, the number of traversal loops is determined to be greater than a first set threshold, then the candidate armpit point corresponding to the minimum value of the second value of at least one candidate armpit point is determined as the armpit point; the at least one candidate armpit point is at least one traversal point located in the first direction between the minimum value of the first value in the traversal loop and the minimum value of the first value in the previous traversal loop; the candidate vertices in the candidate vertex set whose first value is less than or equal to the first value of the armpit point are taken as the target vertices corresponding to the arm, thus obtaining the target vertex set; or
[0024] When the target part is the two legs, the starting traversal point of the target is determined according to the traversal result; the traversal point whose second value is less than the starting traversal point of the target is taken as the left leg target vertex of the left leg of the two legs, and the left leg target vertex set corresponding to the left leg is obtained; the candidate vertices in the remaining candidate vertex set whose second value is less than the starting traversal point of the target are taken as the right leg target vertex of the right leg of the two legs, and the right leg target vertex set corresponding to the right leg is obtained; the remaining candidate vertex set is the candidate vertex set other than the left leg target vertex set in the candidate vertex set.
[0025] An optional implementation further includes, after determining the target vertex set for the left leg and the target vertex set for the right leg, the method further includes:
[0026] The left leg target vertex corresponding to the maximum value of the second value in the set of left leg target vertices is taken as the inner point of the left leg; and the right leg target vertex corresponding to the minimum value of the second value in the set of right leg target vertices is taken as the inner point of the right leg.
[0027] The candidate vertex whose second value is located between the inner point of the left leg and the inner point of the right leg is taken as the middle vertex;
[0028] The vertex corresponding to the minimum value of the difference between the second value and the midpoint between the inner left leg point and the inner right leg point is selected as the candidate perineum point.
[0029] If the first value of the candidate perineal point is within a set range, then the candidate perineal point is taken as the perineal point.
[0030] Since this application embodiment needs to determine whether the first value of the candidate perineal point is within a set range after obtaining the candidate perineal point, in order to determine the position of the candidate perineal point at the perineal point, thereby improving the accuracy of determining the perineal point.
[0031] An optional implementation includes, if the first value of the candidate perineal point is not within a set range, the method further includes:
[0032] Based on the traversal relationship corresponding to the candidate perineum point, determine the previous starting traversal point and the next starting traversal point of the candidate perineum point in the positive direction of the first direction; and determine whether the cosine value corresponding to the candidate perineum point is less than a fifth set threshold; the cosine value is the cosine value of the angle formed between the candidate perineum point, the previous starting traversal point and the next starting traversal point, with the candidate perineum point as the vertex.
[0033] If the cosine value is less than the fifth set threshold, and the first value of the candidate perineal point is within the set range, then the candidate perineal point is taken as the perineal point.
[0034] If the cosine value is greater than or equal to the fifth set threshold, or the first value of the candidate perineal point is not within the set range, then the next starting traversal point is taken as the candidate perineal point until the cosine value is less than the fifth set threshold and the first value of the candidate perineal point is within the set range.
[0035] Because this application embodiment determines whether a candidate perineal point is a perineal point by determining whether the cosine value of the candidate perineal point, the previous starting traversal point, and the next starting traversal point is less than a fifth preset threshold, the accuracy of perineal point determination is improved.
[0036] Secondly, embodiments of this application provide a grid segmentation device, comprising:
[0037] A segmentation unit is used to segment a candidate vertex sequence from a vertex sequence according to a segmentation method corresponding to the target part of the object to be segmented; the target part is the part to be segmented in the object to be segmented; the vertex sequence is composed of the vertices of the mesh constituting the object to be segmented; the segmentation method is to take the first vertex sequence that occupies a preset proportion as the candidate vertex sequence; the preset proportion is a pre-set percentage of the target part in the object to be segmented.
[0038] A traversal unit is used to sequentially take the candidate vertices in the candidate vertex sequence as the starting traversal point, and perform vertex-by-vertex traversal on the other candidate vertices in the candidate vertex sequence to obtain traversal results until the traversal results meet the condition of reaching the boundary of the target part, and then end the traversal; the other candidate vertices are the candidate vertices in the candidate vertex sequence other than those used as the traversal point; the traversal point includes the traversed candidate vertex and the starting traversal point;
[0039] The determining unit is used to determine the target vertex corresponding to the target part from the candidate vertex sequence based on the traversal result, so as to obtain the target vertex set.
[0040] Thirdly, embodiments of this application provide an electronic device, including a memory and a processor, wherein the memory stores a computer program that can run on the processor, and when the computer program is executed by the processor, it implements the grid segmentation method as described in the first aspect.
[0041] Fourthly, embodiments of this application also provide a computer storage medium storing computer program instructions that, when executed on a computer, cause the computer to perform the grid segmentation method as described in the first aspect.
[0042] The technical effects of any of the implementation methods in the second to fourth aspects can be found in the technical effects of the corresponding implementation methods in the first aspect, and will not be repeated here. Attached Figure Description
[0043] To more clearly illustrate the technical solutions in the embodiments of this application, the accompanying drawings used in the description of the embodiments will be briefly introduced below. Obviously, the accompanying drawings described below are only some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.
[0044] Figure 1 This application provides a flowchart illustrating a mesh segmentation method.
[0045] Figure 2 A schematic diagram of the mesh portion and vertex navigation graph in a Poisson reconstructed mesh model provided in an embodiment of this application;
[0046] Figure 3 A schematic diagram of the coordinate axis orientation of a mesh model provided in an embodiment of this application;
[0047] Figure 4 A schematic diagram of a segmentation of the head and arm provided in an embodiment of this application;
[0048] Figure 5 A flowchart illustrating a head segmentation method provided in an embodiment of this application;
[0049] Figure 6 A flowchart illustrating an arm segmentation method provided in an embodiment of this application;
[0050] Figure 7 A schematic diagram illustrating a perineal point outside a set range, provided as an embodiment of this application;
[0051] Figure 8 A schematic diagram of a perineal point and leg mesh segmentation diagram provided for an embodiment of this application;
[0052] Figure 9 A complete flowchart of a bipedal segmentation method provided in this application embodiment is shown below;
[0053] Figure 10 This is a schematic diagram of the structure of a grid segmentation device provided in an embodiment of this application;
[0054] Figure 11 This is a structural block diagram of an electronic device provided in an embodiment of this application. Detailed Implementation
[0055] To make the objectives, technical solutions, and advantages of this application clearer, the application will be further described in detail below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this application, and not all embodiments. Based on the embodiments in this application, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of this application.
[0056] The word “exemplary” as used below means “serving as an example, embodiment, or illustration.” Any embodiment illustrated as an “exemplary” need not be construed as superior to or better than other embodiments.
[0057] The terms "first" and "second" used in this document are for descriptive purposes only and should not be construed as indicating relative importance or implying the number of technical features indicated. Therefore, a feature defined as "first" or "second" may explicitly or implicitly include one or more of that feature. In the description of the embodiments of this application, unless otherwise stated, "multiple" means two or more.
[0058] Existing technologies often use a half-edge data structure based on OpenMesh to traverse mesh vertices. However, this method only traverses the vertices in the 1-neighborhood of a mesh vertex. For a human body model with a triangular mesh, the information of the neighboring vertices alone is still insufficient for effective and fast traversal on a mesh model with such a complex structure as the human body.
[0059] To address the aforementioned issues, this application provides a mesh segmentation method, apparatus, electronic device, and storage medium applied to a Poisson-reconstructed mesh model to improve the accuracy of mesh segmentation and the speed of mesh traversal. The mesh segmentation method includes: dividing a candidate vertex sequence corresponding to the target portion of the object to be segmented from a vertex sequence according to the segmentation method corresponding to the target portion; sequentially using candidate vertices in the candidate vertex sequence as starting traversal points, performing vertex-by-vertex traversal on the other candidate vertices in the candidate vertex sequence to obtain traversal results until the traversal results satisfy the condition of reaching the boundary of the target portion, ending the traversal; and then, based on the obtained traversal results, selecting the target vertices corresponding to the target portion from the candidate vertex sequence to obtain a target vertex set.
[0060] In some embodiments, the object to be segmented can be a human body or other objects, and is not limited to any particular type. For the sake of convenience in the following description, the human body will be used as an example to illustrate the mesh segmentation method.
[0061] like Figure 1 As shown, the mesh segmentation method provided in this application includes the following steps:
[0062] Step S101: Based on the partitioning method corresponding to the target part of the object to be segmented, divide the candidate vertex sequence corresponding to the target part from the vertex sequence.
[0063] It should be noted that the target part is the part to be segmented in the object to be segmented; the vertex sequence is composed of the vertices of the mesh that constitute the object to be segmented; the segmentation method is to take the first vertex sequence that occupies a preset proportion as the candidate vertex sequence; the preset proportion is the proportion of the target part in the object to be segmented.
[0064] In this embodiment of the application, the mesh model of the object to be segmented needs to be preprocessed before segmentation.
[0065] In specific implementation, this application embodiment needs to determine the connected blocks composed of vertices in the object body to be segmented, and delete the connected blocks other than the connected block with the most connected vertices.
[0066] For example, the Poisson-reconstructed human body mesh model may contain some individually connected sub-mesh, therefore, preprocessing of the human body mesh is required. Specifically, the connected components contained in the human body mesh are identified, and small connected components other than the one with the most connected vertices are deleted to complete the denoising of the human body mesh.
[0067] In this embodiment of the application, after preprocessing the object to be segmented, the sorting method of the vertices of the mesh is determined according to the target part of the object to be segmented, and a vertex set is obtained.
[0068] In this embodiment, a preset proportion of the target portion in the object to be segmented is determined, and then the first vertex sequence in the vertex sequence that occupies the preset proportion is taken as a candidate vertex sequence.
[0069] For example, if the target part occupies a preset proportion of 1 / 8 in the object to be segmented, then the first vertex sequence that occupies 1 / 8 in the vertex sequence is taken as the candidate vertex sequence.
[0070] Step S102: Take the candidate vertices in the candidate vertex sequence as the starting traversal points, and perform vertex-by-vertex traversal on the other candidate vertices in the candidate vertex sequence to obtain the traversal results until the traversal results meet the condition of reaching the boundary of the target part, and then end the traversal.
[0071] It should be noted that other candidate vertices are candidate vertices in the candidate vertex sequence other than those used as traversal points; traversal points include candidate vertices after being traversed and the starting traversal point.
[0072] In the embodiments of this application, the vertices in the mesh of the object to be segmented may be on the same plane as their adjacent (1-neighborhood) vertices, that is, there may be cases where a certain component of the coordinates is equal. Therefore, the embodiments of this application can perform vertex-by-vertex traversal along a certain direction.
[0073] For example, such as Figure 2 As shown, there are cases where a vertex in the mesh of the object to be segmented has the same coordinate component as its adjacent vertex.
[0074] In specific implementation, after obtaining the candidate vertex sequence corresponding to the target part, the first candidate vertex in the candidate vertex sequence is used as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex in the first direction to obtain the starting traversal point sequence.
[0075] In this embodiment, starting from the initial traversal point in the initial traversal point sequence, the other candidate vertices in the candidate vertex sequence are traversed in the second direction to obtain the traversal result until the traversal result meets the condition of reaching the target boundary.
[0076] Step S103: Based on the traversal results, determine the target vertices corresponding to the target part from the candidate vertex sequence to obtain the target vertex set.
[0077] It should be noted that the traversal result includes traversal cycles and traversal line segments.
[0078] Since this embodiment of the application divides the candidate vertex sequence corresponding to the target part from the vertex sequence, and then sequentially uses the candidate vertices in the candidate vertex sequence as the starting traversal points to traverse the other candidate vertices in the candidate vertex sequence one by one to obtain the traversal results until the traversal results meet the condition of reaching the boundary of the target part, the traversal ends. This can quickly find the required vertices for traversal, thereby improving the efficiency of mesh traversal. Furthermore, when the traversal results meet the condition of reaching the boundary of the target part, the traversal ends, and the target vertex set can be directly determined based on the traversal results, thereby improving the efficiency and accuracy of mesh segmentation.
[0079] In some embodiments of this application, before determining the vertex sequence, it is also necessary to determine the coordinate axis of the object body to be segmented.
[0080] Specifically, such as Figure 3 As shown, the back of the object to be segmented faces the Z-axis, the right hand faces the X-axis, and the top of the head faces the Y-axis.
[0081] After determining the coordinate axes of the object to be segmented, the vertex coordinates of the mesh of the object to be segmented are determined, and the sorting method of the vertex sequence is determined according to the target part to obtain the corresponding vertex sequence.
[0082] It should be noted that the target parts include, but are not limited to, the head, arms, and legs.
[0083] In this embodiment of the application, after obtaining the vertex sequence, a candidate vertex sequence corresponding to the target part is divided from the vertex sequence. Then, the candidate vertices in the candidate vertex sequence are used as the starting traversal points to traverse the other candidate vertices one by one until the traversal result meets the condition of reaching the boundary of the target part, and the traversal ends. Based on the obtained traversal result, the target vertex corresponding to the target part is determined from the candidate vertex sequence to obtain the target vertex set.
[0084] The following sections will explain the set of target vertices corresponding to the target part based on the three scenarios of the target part.
[0085] Scenario 1: The target part is the head.
[0086] In this embodiment, the vertices of the mesh of the object to be segmented are sorted from largest to smallest according to their y-values. When the y-values are the same, they can be sorted from largest to smallest or smallest to largest according to their x-values to obtain a vertex sequence.
[0087] In this embodiment of the application, after obtaining the vertex sequence corresponding to the head, the candidate vertex sequence corresponding to the head is divided from the vertex sequence according to the division method corresponding to the head.
[0088] In specific implementation, this application embodiment divides the candidate vertex sequence corresponding to the head from the vertex sequence according to the preset proportion occupied by the head in the object to be segmented.
[0089] For example, if the head occupies a preset proportion of 1 / 8 of the human body, the number of candidate vertices in the candidate vertex sequence can be determined by the following formula in this embodiment:
[0090]
[0091] Here, head_part represents the number of candidate vertices corresponding to the head; mesh.n_vertices represents the total number of vertices in the body of the object to be segmented.
[0092] Then, in this embodiment of the application, a partial vertex sequence consisting of the first vertex to the head_partth vertex in the vertex sequence is used as a candidate vertex sequence for the head.
[0093] In this embodiment of the application, after obtaining the candidate vertex sequence, the candidate vertices in the candidate vertex sequence are used as the starting traversal points in turn, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex to obtain the traversal result, until the traversal result meets the condition of reaching the boundary of the target part, and the traversal ends.
[0094] In specific implementation, the first candidate vertex in the candidate vertex sequence is taken as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex in the first direction to obtain the starting traversal point sequence.
[0095] It should be noted that the first direction is the vertical direction.
[0096] In some embodiments, the first candidate vertex in the candidate vertex sequence is used as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertically in a downward direction.
[0097] It should be noted that the downward traversal of vertices refers to the traversal of a closed loop or a series of vertices in the yz plane in a clockwise direction when viewed from the positive x-axis.
[0098] In this embodiment, starting from the initial traversal point in the initial traversal point sequence, the other subsequent candidate vertices in the candidate vertex sequence are traversed in the second direction to obtain the traversal result until the traversal result satisfies the condition of reaching the head boundary.
[0099] It should be noted that the second direction is the horizontal direction.
[0100] In this embodiment of the application, when traversing vertex by vertex in the horizontal direction, the traversal can be to the left or to the right.
[0101] It should be noted that leftward traversal of vertices refers to traversing a closed loop or a line segment consisting of a series of vertices in the xz plane in a clockwise direction when viewed from the positive y-axis. Rightward traversal of vertices refers to traversing a closed loop or a line segment consisting of a series of vertices in the xz plane in a counterclockwise direction when viewed from the positive y-axis.
[0102] In this embodiment of the application, when traversing along the xy plane, due to the complexity of human posture, it is difficult to determine whether the current traversal is clockwise or counterclockwise in a local line segment, and it is necessary to determine it based on the specific position.
[0103] In some embodiments, the condition for reaching the head boundary can be:
[0104] The traversal result is a traversal cycle, and the size of the traversal cycle is greater than the size of the previous traversal cycle.
[0105] It should be noted that a traversal cycle is a cycle consisting of traversal points.
[0106] In specific implementation, when the traversal result of the current starting traversal point is determined to be a traversal cycle, the circumference of the traversal cycle is determined, and it is determined whether the circumference of the traversal cycle is greater than the circumference of the previous traversal cycle.
[0107] In some embodiments, when the circumference of the traversal cycle is determined to be less than or equal to the circumference of the previous traversal cycle, the circumference of the traversal cycle is recorded, and the next starting traversal point of the current starting traversal point is selected for vertex-by-vertex traversal.
[0108] In other embodiments, the traversal ends when the traversal loop is determined to be larger than the traversal loop of the previous traversal loop.
[0109] In this embodiment of the application, after the traversal ends, the target starting traversal point is determined based on the traversal results; and the candidate vertices in the candidate vertex sequence whose first value is greater than or equal to the first value of the target starting traversal point are taken as the target vertices corresponding to the head, thus obtaining the target vertex set.
[0110] It should be noted that the target starting traversal point is the starting traversal point for the final vertex-by-vertex traversal. The first value is the position value of the starting traversal point in the first direction.
[0111] In specific implementation, this application embodiment determines the target starting traversal point based on the traversal results, and takes the candidate vertices in the candidate vertex sequence whose y-values are greater than or equal to the y-values of the target starting traversal point as the target vertices corresponding to the head, thus obtaining the target vertex set.
[0112] For example, such as Figure 4As shown in the figure, this application embodiment provides a schematic diagram of human head segmentation, where the vertices in the head region are the target vertex set.
[0113] like Figure 5 As shown in the figure, this application provides a flowchart of a head segmentation method, including the following steps:
[0114] Step S501: Obtain the vertex sequence according to the sorting method of the vertices of the mesh of the object body to be segmented corresponding to the head.
[0115] Step S502: Determine the preset proportion of the head in the object to be segmented, and take the first vertex sequence in the vertex sequence that occupies the preset proportion as the candidate vertex sequence corresponding to the head.
[0116] Step S503: Take the first candidate vertex in the candidate vertex sequence as the starting traversal point, and perform vertex-by-vertex traversal in the first direction on the other candidate vertices in the candidate vertex sequence to obtain the starting traversal point sequence.
[0117] It should be noted that the first direction is the vertical direction.
[0118] Step S504: Starting from the starting point in the sequence of starting traversal points, perform a vertex-by-vertex traversal in the second direction on the other candidate vertices in the candidate vertex sequence to obtain the traversal result.
[0119] It should be noted that the first direction is the horizontal direction.
[0120] Step S505: Determine whether the traversal result is a traversal cycle; if yes, proceed to step S506; if no, proceed to step S504.
[0121] Step S506: Determine whether the circumference of the traversal cycle is greater than the circumference of the previous traversal cycle; if not, proceed to step S507; if yes, proceed to step S508.
[0122] Step S507: Record the circumference of the traversal cycle, and then continue to execute step S504.
[0123] Step S508: Determine the target starting traversal point based on the traversal results.
[0124] It should be noted that the target starting traversal point is the starting traversal point for the final vertex-by-vertex traversal.
[0125] Step S509: Select the candidate vertices in the candidate vertex sequence whose first value is greater than or equal to the first value of the target starting traversal point as the target vertices corresponding to the head, and obtain the target vertex set.
[0126] It should be noted that the first value is the position of the starting traversal point in the first direction.
[0127] Scenario 2: The target part is the arm.
[0128] When the arm is the left arm, in this embodiment of the application, the vertices of the mesh of the object to be segmented are sorted in ascending order of x value. When the x values are the same, they are sorted in ascending order of y value to obtain the vertex sequence.
[0129] When the arm is the right arm, in this embodiment of the application, the vertices of the mesh of the object to be segmented are sorted from largest to smallest according to the x value. When the x values are the same, they are sorted from smallest to largest according to the y value to obtain the vertex sequence.
[0130] In this embodiment of the application, after obtaining the vertex sequence corresponding to the arm, the candidate vertex sequence corresponding to the arm is divided from the vertex sequence according to the division method of the arm.
[0131] In specific implementation, this application embodiment divides the candidate vertex sequence corresponding to the arm from the vertex sequence according to the preset proportion occupied by the arm in the object to be segmented.
[0132] For example, if the arm occupies a preset proportion of 1 / 6 in the human body, the number of candidate vertices in the candidate vertex sequence can be determined by the following formula in this embodiment:
[0133]
[0134] Here, arm_part represents the number of candidate vertices corresponding to the arm; mesh.n_vertices represents the total number of vertices in the object body to be segmented.
[0135] Then, in this embodiment of the application, a partial vertex sequence consisting of the first vertex to the arm_part vertex in the vertex sequence is used as a candidate vertex sequence for the arm.
[0136] In this embodiment of the application, after obtaining the candidate vertex sequence, the candidate vertices in the candidate vertex sequence are used as the starting traversal points in turn, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex to obtain the traversal result, until the traversal result meets the condition of reaching the boundary of the target part, and the traversal ends.
[0137] In specific implementation, the first candidate vertex in the candidate vertex sequence is taken as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex in the first direction to obtain the starting traversal point sequence.
[0138] It should be noted that the first direction is the horizontal direction.
[0139] In some embodiments of this application, when traversing each vertex in the horizontal direction, the traversal can be either left-handed or right-handed.
[0140] In this embodiment, starting from the initial traversal point in the initial traversal point sequence, the other subsequent candidate vertices in the candidate vertex sequence are traversed in the second direction to obtain the traversal result until the traversal result satisfies the condition of reaching the head boundary.
[0141] It should be noted that the second direction is the vertical direction.
[0142] In this embodiment of the application, when traversing vertex by vertex in the vertical direction, the traversal can be upward or downward.
[0143] It should be noted that the upward traversal of vertices refers to the traversal of a closed loop or a series of vertices in the yz plane in a counterclockwise direction when viewed from the positive x-axis.
[0144] In some embodiments, the conditions for reaching the arm boundary include:
[0145] Condition 1: When the ascending state is the normal state, the traversal result is a traversal cycle, and the number of traversal cycles is greater than the first set threshold, the minimum value of the second value of the traversal point in the traversal cycle is less than the minimum value of the second value in the previous traversal cycle.
[0146] Condition 2: When the ascending state is the normal state, the traversal result is a traversal cycle, and the number of traversal cycles is greater than the first set threshold, the second value of the target traversal point is greater than the minimum value of the second value of the traversal cycle, and greater than the minimum value of the second value of the previous traversal cycle.
[0147] It should be noted that the ascending state refers to the traversal state when the traversal result is a traversal cycle. The second value is the position value of the traversal point in the second direction. The target traversal point is the traversal point corresponding to the minimum of the second values of at least one traversal point located in the first direction between the minimum of the first value in the traversal cycle and the minimum of the first value in the previous traversal cycle.
[0148] In some embodiments of this application, the rising state of the traversal cycle can be determined in the following ways.
[0149] In this embodiment of the application, after obtaining the traversal result, when it is determined that the traversal result is a traversal cycle, the maximum and minimum values of the second value in the traversal cycle are determined, and the number of traversal cycles is recorded.
[0150] It should be noted that the second value is the position value of the traversed point in the second direction.
[0151] If the maximum value of the second value of the traversal cycle is greater than the maximum value of the second value of the previous traversal cycle, the difference between the maximum and minimum values of the second value of the traversal cycle is greater than or equal to the fourth set threshold, and the minimum value of the second value of the traversal cycle is greater than the minimum value of the second value of the previous traversal cycle, then the rising state of the traversal cycle is updated to the normal state.
[0152] For example, the fourth threshold can be set to 60mm.
[0153] In some embodiments, when the arm is the left arm, the x-value of the previous starting traversal point is less than or equal to the x-value of the target starting traversal point.
[0154] In other embodiments, when the arm is the right arm, the x-value of the previous starting traversal point is greater than or equal to the x-value of the target starting traversal point.
[0155] In this embodiment of the application, after determining that the traversal result meets the boundary condition of the arm, the target vertex set corresponding to the arm is determined based on the traversal result.
[0156] In the implementation of this application, the embodiment of this application determines the armpit point in the arm based on the traversal result, and takes the candidate vertices in the candidate vertex set whose first value is less than or equal to the first value of the armpit point as the target vertices corresponding to the arm, thus obtaining the target vertex set.
[0157] The axillary point can be determined in the following ways according to the embodiments of this application.
[0158] Method 1: When the traversal result satisfies condition 1, the traversal point corresponding to the minimum value of the second value in the traversal cycle is determined as the armpit point.
[0159] Method 2: When the traversal result satisfies condition 2, the target traversal point is determined as the armpit point.
[0160] After determining the armpit point, the target apex of the arm can be determined in the following ways according to the embodiments of this application.
[0161] In this embodiment, candidate vertices in the candidate vertex set whose first value is less than or equal to the first value of the armpit point are selected as candidate target vertices.
[0162] For any candidate target vertex among all candidate target vertices, determine whether all neighboring vertices of any candidate target vertex are traversal points. If so, then take the candidate target vertex as the target vertex and obtain the target vertex set.
[0163] For example, such as Figure 4 As shown in the figure, this application provides a schematic diagram of arm segmentation.
[0164] In some embodiments, the present application may increase the number of times the neighboring points of the candidate target vertex are detected to determine whether they are all traversal points, thereby avoiding vertices far from the arm being incorrectly marked as target vertices of the arm.
[0165] In other embodiments, after determining that the traversal result does not meet the condition of reaching the arm boundary, this application embodiment can determine the previous starting traversal point in the starting traversal point set that is before the target starting traversal point, and for each traversal point contained in the traversal result corresponding to the previous starting traversal point, query whether all neighboring points of the traversal point are traversal points. If so, mark the traversal point as the target vertex of the arm.
[0166] like Figure 6 As shown in the figure, this application provides a flowchart of an arm segmentation method, which includes the following steps:
[0167] Step S601: Obtain the vertex sequence according to the sorting method of the vertices of the mesh of the object to be segmented corresponding to the arm.
[0168] Step S602: Determine the preset proportion of the arm in the object to be segmented, and take the first vertex sequence in the vertex sequence that occupies the preset proportion as the candidate vertex sequence corresponding to the arm.
[0169] Step S603: Take the first candidate vertex in the candidate vertex sequence as the starting traversal point, and perform vertex-by-vertex traversal in the first direction on the other candidate vertices in the candidate vertex sequence to obtain the starting traversal point sequence.
[0170] It should be noted that the first direction is the horizontal direction.
[0171] Step S604: Starting from the starting point in the sequence of starting traversal points, perform a vertex-by-vertex traversal in the second direction on the other candidate vertices in the candidate vertex sequence to obtain the traversal result.
[0172] It should be noted that the second direction is the vertical direction.
[0173] Step S605: When the traversal result is a traversal cycle, determine the maximum and minimum values of the second value in the traversal cycle, and record the number of traversal cycles.
[0174] Step S606: Determine whether the maximum value of the second value of the traversal cycle is greater than the maximum value of the second value of the previous traversal cycle; if yes, proceed to step S607; if no, proceed to step S604.
[0175] Step S607: Determine whether the difference between the maximum and minimum values of the second value of the traversal ring is greater than or equal to the fourth set threshold; if yes, proceed to step S608; if no, proceed to step S604.
[0176] Step S608: Determine whether the minimum value of the second value of the traversal cycle is greater than the minimum value of the second value of the previous traversal cycle; if yes, proceed to step S609; if no, proceed to step S604.
[0177] Step S609: Determine that the rising state of the traversal cycle is the normal state.
[0178] Step S610: Determine whether the number of traversal cycles is greater than the first set threshold; if yes, proceed to step S611; if no, proceed to step S604.
[0179] Step S611: Determine whether the minimum value of the second value of the traversal ring is less than the minimum value of the second value of the previous traversal ring; if yes, proceed to step S612; if no, proceed to step S613.
[0180] Step S612: Determine the traversal point corresponding to the minimum value of the second value in the traversal cycle as the armpit point.
[0181] Step S613: Determine whether the second value of the target traversal point is greater than the minimum value of the second value of the traversal cycle and greater than the minimum value of the second value of the previous traversal cycle; if yes, proceed to step S614; if no, proceed to step S604.
[0182] Step S614: Determine the target traversal point as the armpit point.
[0183] Step S615: Select candidate vertices in the candidate vertex sequence whose first value is less than or equal to the first value of the armpit point as candidate target vertices.
[0184] Step S616: For any candidate target vertex, when all neighboring points of the candidate target vertex are determined as traversal points, the candidate target vertex is determined as the target vertex of the arm.
[0185] Step S617: Obtain the target vertex set.
[0186] Scenario 3: The target part is both legs.
[0187] In this embodiment, the vertices of the mesh of the object to be segmented are sorted in ascending order of y-values. When the y-values are the same, they are sorted in ascending order of x-values to obtain a vertex sequence.
[0188] In this embodiment of the application, after obtaining the vertex sequence corresponding to both legs, a candidate vertex sequence corresponding to both legs is divided from the vertex sequence according to the division method of the two legs.
[0189] In specific implementation, this application embodiment divides the candidate vertex sequence corresponding to the legs from the vertex sequence according to the preset proportion of the two legs in the object to be segmented.
[0190] For example, if the legs occupy a predetermined proportion of 1 / 2 in the human body, the number of candidate vertices in the candidate vertex sequence can be determined by the following formula in this embodiment:
[0191]
[0192] Where leg_part represents the number of candidate vertices corresponding to the two legs; mesh.n_vertices represents the total number of vertices in the object to be segmented.
[0193] Then, in this embodiment of the application, a partial vertex sequence consisting of the first vertex to the leg_part vertex in the vertex sequence is used as a candidate vertex sequence for both legs.
[0194] In this embodiment of the application, after obtaining the candidate vertex sequence, the candidate vertices in the candidate vertex sequence are used as the starting traversal points in turn, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex to obtain the traversal result, until the traversal result meets the condition of reaching the boundary of the target part, and the traversal ends.
[0195] In specific implementation, the first candidate vertex in the candidate vertex sequence is taken as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex in the first direction to obtain the starting traversal point sequence.
[0196] It should be noted that the first direction is the vertical direction.
[0197] In some embodiments, the first candidate vertex in the candidate vertex sequence is used as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertically in an upward direction.
[0198] In this embodiment, starting from the initial traversal point in the initial traversal point sequence, the other subsequent candidate vertices in the candidate vertex sequence are traversed in the second direction to obtain the traversal result until the traversal result satisfies the condition of reaching the boundary of the two legs.
[0199] It should be noted that the second direction is the horizontal direction.
[0200] In this embodiment of the application, when traversing vertex by vertex in the horizontal direction, the traversal can be to the left or to the right.
[0201] In some embodiments, the condition for reaching the boundary of both legs can be:
[0202] The first value of the starting traversal point is greater than or equal to the second set threshold, the maximum value of the second value of the traversal point in the traversal result of the starting traversal point is greater than the third set threshold, and the ratio of the first difference to the second difference is greater than the fourth set threshold.
[0203] It should be noted that the first difference is the difference between the maximum and minimum values of the second value in the traversal results corresponding to the starting traversal point; the second difference is the difference between the maximum and minimum values of the second value in the traversal results corresponding to the previous starting traversal point. The first value is the y-value, and the second value is the x-value.
[0204] In other embodiments, the condition for reaching the boundary of both legs in the embodiments of this application can be expressed by the following formula:
[0205]
[0206] Where y represents the first value of the starting traversal point; y min curr_x represents the minimum value among the first values of each vertex in the vertex sequence. max This represents the maximum value of the second value in the traversal result corresponding to the starting traversal point; curr_x min This represents the minimum value of the second value in the traversal results corresponding to the starting traversal point; last_x min This represents the minimum value among the second values of the traversed points in the traversal results of the previous traversal point.
[0207] In some embodiments, the present application can first determine the target vertex corresponding to the left leg by traversing, and then determine the target vertex corresponding to the right leg based on the candidate vertex sequence.
[0208] In specific implementation, the embodiments of this application sequentially use the starting traversal point in the starting traversal point sequence as the starting point, and perform vertex-by-vertex traversal in the second direction on other candidate vertices in the candidate vertex sequence to obtain the traversal result.
[0209] It should be noted that the x-value of the starting traversal point is less than or equal to a set threshold. The set threshold can be -20mm.
[0210] When the x-value of a candidate vertex encountered in this embodiment is greater than a set threshold, the candidate vertex is skipped and the next candidate vertex is encountered.
[0211] In some embodiments, this application can traverse to the right from the starting traversal point, updating the minimum and maximum x values of the current left leg horizontal segment, i.e., curr_x, during the traversal process. min and curr_x max This continues until the traversal returns to the starting point, or until it becomes impossible to continue traversing.
[0212] In this embodiment of the application, after determining that it is impossible to traverse to the right, the starting traversal point is traversed to the left until it is impossible to continue traversing, or the traversal point is returned to the starting traversal point to obtain the traversal result.
[0213] In this embodiment of the application, after obtaining the traversal result, it is determined whether the traversal result meets the condition of reaching the boundary of both legs, and then it is determined whether to end the traversal.
[0214] In some embodiments, when the traversal result does not meet the condition of reaching the boundary of both legs, the next starting traversal point is selected from the sequence of starting traversal points, and the next starting traversal point is used as the starting point to perform vertex-by-vertex traversal in the horizontal direction; furthermore, this embodiment also needs to update last_y and last_x corresponding to the previous starting traversal point according to the traversal result. min and last_x max .
[0215] In specific implementation, this application embodiment updates last_y and last_x based on the traversal results after determining that the traversal results meet the following conditions. min and last_x max :
[0216] y <y min +300mm; or (curr_x) max -curr_x min )≥0.95(last_x max -last_x min )
[0217] Where y represents the first value of the starting traversal point; y min Last_x represents the minimum value among the first values of each vertex in the vertex sequence. max This represents the maximum value among the second values of the traversal points in the traversal results from the previous traversal point; curr_x max This represents the maximum value of the second value in the traversal result corresponding to the starting traversal point; curr_x min This represents the minimum value of the second value in the traversal results corresponding to the starting traversal point; last_x min This represents the minimum value among the second values of the traversed points in the traversal results of the previous traversal point.
[0218] Once it is determined that the traversal result meets the above conditions, according to curr_x min curr_x max Go update last_x min last_x max Record the y-value of the starting traversal point as last_y; then, in this embodiment of the application, traverse to the left from the starting traversal point. If it is impossible to traverse back to the starting traversal point, traverse until it is impossible to continue traversing, then traverse to the right from the starting traversal point until it is impossible to continue traversing, and mark the traversed vertex as the target vertex of the left leg.
[0219] In other embodiments, after determining that the traversal result satisfies the condition of reaching the boundary of both legs, the present application determines the target starting traversal point based on the traversal result, and takes the traversal point with a second value less than the target starting traversal point as the left leg target vertex of the left leg in the two legs, thereby obtaining the set of left leg target vertices corresponding to the left leg.
[0220] In this embodiment of the application, after obtaining the set of left leg target vertices, the candidate vertices with y values less than last_y are traversed in the second direction. If the traversed point does not belong to the set of left leg target vertices, it is determined that the vertices in the 1-neighborhood of the traversed point contain left leg target vertices, and the traversed point is then taken as the left leg target vertex.
[0221] In this embodiment, the candidate vertices with y values less than last_y are traversed in the second direction. The candidate vertices in the remaining candidate vertex set whose second values are less than the target starting traversal point are taken as the right leg target vertices corresponding to the right leg in the two legs, thus obtaining the right leg target vertex set corresponding to the right leg.
[0222] It should be noted that the remaining candidate vertex set is the set of candidate vertices excluding the target vertex set for the left leg.
[0223] In this embodiment of the application, after determining the target vertex set of the left leg and the target vertex set of the right leg, the inner points of the left leg and the right leg are determined, and the perineum point is determined based on the inner points of the left leg and the right leg.
[0224] In a specific implementation, the left leg target vertex corresponding to the maximum value of the second value in the left leg target vertex set is taken as the inner point of the left leg; and the right leg target vertex corresponding to the minimum value of the second value in the right leg target vertex set is taken as the inner point of the right leg.
[0225] In this embodiment, the vertex corresponding to the minimum value of the difference between the second value and the midpoint between the inner left leg point and the inner right leg point is used as the candidate perineum point; if the first value of the candidate perineum point is within a set range, then the candidate perineum point is used as the perineum point.
[0226] In specific implementation, this application embodiment uses the left leg target vertex corresponding to the maximum value of the second value in the left leg target vertex set as the left leg inner point V. left The right leg target vertex corresponding to the minimum value of the second value in the set of right leg target vertices is taken as the inner point V of the right leg. right In V left and V right In the 2-neighborhood, find the value of x that can be traversed upwards and is close to V. left and V right The set of vertices whose x-values are the mean; and the vertex with the minimum first value in the vertex set is selected as the candidate perineal point.
[0227] For example, such as Figure 7 As shown, the first value of the determined perineum point is low because the legs of the object to be segmented are close together. Figure 7 The square box represents the identified perineal point. Therefore, it is necessary to determine whether the identified perineal point is within the set range.
[0228] In this embodiment of the application, after obtaining the candidate perineal point, it is determined whether the first value of the candidate perineal point is within a set range.
[0229] In some embodiments, the setting range in this application is [y up -120mm, y up ]; where y up This represents the upper limit of the perineal point.
[0230] For example, the empirical height of the upper limit of the range is set as y. up =y min +0.6764*(y max -y min )–343.6362.
[0231] Among them, y max The maximum value of the first value of the grid vertex, y min It is the minimum value of the first value of the grid vertex.
[0232] In some embodiments, when a candidate perineal point is determined to be within a set range, the candidate perineal point is determined as the perineal point.
[0233] In other embodiments, when it is determined that the candidate perineal point is not within the set range, that is, the first value of the candidate perineal point is lower than the set range, the previous starting traversal point and the next starting traversal point of the candidate perineal point in the positive direction of the first direction are determined according to the traversal relationship corresponding to the candidate perineal point; and it is determined whether the cosine value corresponding to the candidate perineal point is less than the fifth set threshold, and whether the first value of the candidate perineal point is within the set range.
[0234] It should be noted that the cosine value is the cosine of the angle formed between the candidate perineum point, the previous starting traversal point, and the next starting traversal point, with the candidate perineum point as the vertex.
[0235] In specific implementation, when it is determined that the candidate perineal point is not within the set range, the previous and next starting traversal points of the candidate perineal point in the starting traversal point sequence are determined.
[0236] In some embodiments, if the cosine value is less than a fifth preset threshold and the first value of the candidate perineal point is within a preset range, then the candidate perineal point is taken as the perineal point.
[0237] For example, embodiments of this application are based on candidate perineal points v m The position in the sequence of starting traversal points, at v m Based on the upward traversal, determine v m The previous starting point v m-1 And the next starting traversal point v m+1 Determine cos(v) m-1 v m v m v m+1 Is cos(v) less than the fifth set threshold of 0.85? m-1 v m v m v m+1 ) is less than the fifth set threshold of 0.85, and v m If the y-value is within the set range, then v will be... m The perineum point has been identified.
[0238] In other embodiments, if the cosine value is greater than or equal to a fifth preset threshold, or the first value is not within a preset range, the next starting traversal point is used as a candidate perineal point until the cosine value is less than the fifth preset threshold and the first value is within a preset range.
[0239] For example, in determining cos(v) m-1 v m v m v m+1 When v is greater than the fifth set threshold of 0.85, v will be... m+1 As a candidate perineal point, and to determine v m+1 The corresponding cosine value cos(v) m v m+1 v m+1 v m+2 Whether it is less than the fifth set threshold of 0.85, until the cosine value is less than 0.85, and the first value is within the set range.
[0240] like Figure 8 As shown in the figure, this application embodiment provides a schematic diagram of leg segmentation, wherein the box represents the determined perineal point.
[0241] like Figure 9 As shown in the figure, this application provides a flowchart of a method for dividing legs, including the following steps:
[0242] Step S901: Obtain the vertex sequence according to the sorting method of the vertices of the mesh of the object to be segmented corresponding to the two legs.
[0243] Step S902: Determine the preset proportion of the two legs in the object to be segmented, and take the first vertex sequence in the vertex sequence that occupies the preset proportion as the candidate vertex sequence corresponding to the two legs.
[0244] Step S903: Take the first candidate vertex in the candidate vertex sequence as the starting traversal point, and perform vertex-by-vertex traversal in the first direction on the other candidate vertices in the candidate vertex sequence to obtain the starting traversal point sequence.
[0245] It should be noted that the first direction is the vertical direction.
[0246] Step S904: Starting from the starting point in the sequence of starting traversal points, perform a vertex-by-vertex traversal in the second direction on the other candidate vertices in the candidate vertex sequence to obtain the traversal result.
[0247] It should be noted that the first direction is the horizontal direction.
[0248] Step S905: Determine whether the first value of the starting traversal point is less than the second set threshold; if yes, proceed to step S904; if no, proceed to step S906.
[0249] Step S906: Determine whether the maximum value of the second value of the traversal point in the traversal result of the starting traversal point is greater than the third set threshold; if not, proceed to step S904; if yes, proceed to step S907.
[0250] Step S907: Determine whether the ratio of the first difference to the second difference is greater than the fourth set threshold; if yes, proceed to step S908; if no, proceed to step S904.
[0251] It should be noted that the first difference is the difference between the maximum and minimum values of the second value in the traversal result corresponding to the starting traversal point; the second difference is the difference between the maximum and minimum values of the second value in the traversal result corresponding to the previous starting traversal point.
[0252] Step S908: Determine the target starting traversal point based on the traversal results.
[0253] Step S909: Take the traversal point whose second value is less than the target starting traversal point as the left leg target vertex of the left leg in the two legs, and obtain the set of left leg target vertices corresponding to the left leg.
[0254] Step S910: Select the candidate vertices in the remaining candidate vertex set whose second value is less than the target starting traversal point as the right leg target vertex corresponding to the right leg of the two legs, and obtain the right leg target vertex set corresponding to the right leg.
[0255] It should be noted that the remaining candidate vertex set is the set of candidate vertices excluding the target vertex set for the left leg.
[0256] Step S911: Take the left leg target vertex corresponding to the maximum value of the second value in the left leg target vertex set as the left leg inner point; and take the right leg target vertex corresponding to the minimum value of the second value in the right leg target vertex set as the right leg inner point.
[0257] Step S912: Select the candidate vertex whose second value is located between the inner points of the left and right legs as the intermediate vertex.
[0258] Step S913: The intermediate vertex corresponding to the minimum value of the difference between the second value and the midpoint between the inner left leg point and the inner right leg point is selected as the candidate perineum point.
[0259] Step S914: Determine whether the first value of the candidate perineal point is within the set range; if yes, proceed to step S918; if no, proceed to step S915.
[0260] Step S915: Based on the traversal relationship corresponding to the candidate perineum point, determine the previous starting traversal point and the next starting traversal point of the candidate perineum point in the positive direction of the first direction.
[0261] Step S916: Determine whether the cosine value corresponding to the candidate perineal point is less than the fifth set threshold; if yes, proceed to step S914; if no, proceed to step S917.
[0262] It should be noted that the cosine value is the cosine of the angle formed between the candidate perineum point, the previous starting traversal point, and the next starting traversal point, with the candidate perineum point as the vertex.
[0263] Step S917: Select the next starting traversal point as a candidate perineal point and proceed to step S916.
[0264] Step S918: Select the candidate perineal point as the perineal point.
[0265] In other embodiments, before performing traversal, traversal relationships can be established for all vertices in the mesh. Based on the established traversal relationships, the candidate vertices in the candidate vertex sequence are traversed vertex by vertex to obtain the traversal result.
[0266] It should be noted that traversal relationships include vertical traversal relationships and horizontal traversal relationships.
[0267] The embodiments of this application can establish the up-down traversal relationship of the vertices v of the mesh of the object to be segmented in the following manner.
[0268] For all vertices v, determine the neighboring vertices with the same x-value as vertex v. If they exist, put the current vertex v at the head of the linked list and insert the neighboring vertices of vertex v at the tail of the linked list. Then, determine whether there is a neighboring vertice with the same x-value as the neighboring vertex (excluding the previous neighboring vertex). Insert the found neighboring vertices into the tail of the linked list one by one until the traversed vertex is v or no such neighboring vertices can be found.
[0269] In some embodiments, to avoid getting stuck in a sub-cycle during traversal, it is necessary to add a check to determine whether the internal loop is formed during traversal and terminate the process early.
[0270] The embodiments of this application determine whether the traversal process of a vertex is an upward traversal or a downward traversal in the following manner.
[0271] For the k-th vertex v, where k∈(1, n-1), add the adjacent nodes of the linked list to form n k-1 n k n k+1 Calculate the outer product n of two vectors k n k-1 ×n k+1 n k And determine n k n k-1 ×n k+1 n k The resulting vector is oriented in either the positive or negative x-axis direction. If it's positive, the counter increments by 1; if it's negative, the counter decrements by 1. If the counter is greater than 0, it indicates that the current linked list traversal is upward; otherwise, it's downward.
[0272] The embodiments of this application can establish left and right traversal relationships for the vertices v of the mesh of the object to be segmented in the following manner.
[0273] For all vertices v, determine the neighboring vertices with the same y-value as vertex v. If they exist, put the current vertex v at the head of the linked list and insert the neighboring vertices of vertex v at the tail of the linked list. Then, determine whether there is a neighboring vertice with the same y-value as the neighboring vertex (excluding the previous neighboring vertex). Insert the found neighboring vertices into the tail of the linked list one by one until the traversed vertex is v or no such neighboring vertices can be found.
[0274] In some embodiments, to avoid getting stuck in a sub-cycle during traversal, it is necessary to add a check to determine whether the internal loop is formed during traversal and terminate the process early.
[0275] The embodiments of this application determine whether the traversal process of a vertex is leftward or rightward in the following manner.
[0276] For the k-th vertex v, where k∈(1, n-1), add the adjacent nodes of the linked list to form n k-1 n kn k+1 Calculate the outer product n of two vectors k n k-1 ×n k+1 n k And determine n k n k-1 ×n k+1 n k The resulting vector indicates whether it's moving in the positive or negative y-axis direction. If it's moving in the positive direction, the counter increments by 1; if it's moving in the negative direction, the counter decrements by 1. If the counter is greater than 0, it means the current linked list traversal is to the left; otherwise, it's to the right.
[0277] In this embodiment of the application, after establishing the traversal relationship, the candidate vertices in the candidate vertex sequence are traversed sequentially, and the traversed candidate vertices are no longer searched, until the traversal result meets the condition of reaching the boundary of the target part; based on the traversal result, the target vertex corresponding to the target part is determined, and the target vertex set is obtained.
[0278] Based on the same inventive concept, this application also provides a grid segmentation device. Since the principle of this device in solving the problem is similar to the grid segmentation method in this application, the implementation of this device can refer to the implementation of the method, and the repeated parts will not be described again.
[0279] like Figure 10 As shown, this application embodiment provides a grid segmentation device, including:
[0280] The partitioning unit 1001 is used to partition a candidate vertex sequence corresponding to the target part from the vertex sequence according to the partitioning method corresponding to the target part of the object to be partitioned; the target part is the part to be partitioned in the object to be partitioned; the vertex sequence is composed of the vertices of the mesh that constitute the object to be partitioned; the partitioning method is to take the first vertex sequence that occupies a preset proportion as the candidate vertex sequence; the preset proportion is the proportion of the target part in the object to be partitioned in a pre-defined manner.
[0281] Traversal unit 1002 is used to sequentially take the candidate vertices in the candidate vertex sequence as the starting traversal point, and traverse the other candidate vertices in the candidate vertex sequence one by one to obtain the traversal result until the traversal result meets the condition of reaching the boundary of the target part, and then the traversal ends; other candidate vertices are the candidate vertices in the candidate vertex sequence other than those used as traversal points; traversal points include the traversed candidate vertices and the starting traversal point;
[0282] The determining unit 1003 is used to determine the target vertex corresponding to the target part from the candidate vertex sequence based on the traversal result, and obtain the target vertex set.
[0283] In one optional implementation, the traversal unit 1002 is specifically used for:
[0284] Take the first candidate vertex in the candidate vertex sequence as the starting traversal point, and perform vertex-by-vertex traversal in the first direction on the other candidate vertices in the candidate vertex sequence to obtain the starting traversal point sequence.
[0285] Starting from the initial traversal point in the initial traversal point sequence, perform vertex-by-vertex traversal in the second direction on the other candidate vertices in the candidate vertex sequence, and obtain the traversal results until the traversal results meet the condition of reaching the boundary of the target part.
[0286] One alternative implementation is that the conditions for reaching the boundary of the target portion include:
[0287] When the target part is the head, the traversal result is a traversal cycle, and the circumference of the traversal cycle is greater than the circumference of the previous traversal cycle; the traversal cycle is a loop formed by traversal points; or
[0288] When the target part is an arm, the ascending state is the normal state, the traversal result is a traversal loop, and the number of traversal loops is greater than a first set threshold, the minimum value of the second value of the traversal point in the traversal loop is less than the minimum value of the second value in the previous traversal loop; the second value is the position value of the traversal point in the second direction; or, the second value of the target traversal point is greater than the minimum value of the second value of the traversal loop, and also greater than the minimum value of the second value of the previous traversal loop; the target traversal point is the traversal point corresponding to the minimum value of the second value of at least one traversal point located in the first direction between the minimum value of the first value in the traversal loop and the minimum value of the first value in the previous traversal loop; or
[0289] When the target part is both legs, the first value of the starting traversal point is greater than or equal to the second set threshold, the maximum value of the second value of the traversal point in the traversal result of the starting traversal point is greater than the third set threshold, and the ratio of the first difference to the second difference is greater than the fourth set threshold; the first value is the position value of the starting traversal point in the first direction; the first difference is the difference between the maximum and minimum values of the second value in the traversal result corresponding to the starting traversal point; the second difference is the difference between the maximum and minimum values of the second value in the traversal result corresponding to the previous starting traversal point.
[0290] An optional implementation is that, when the target part is an arm, starting from the initial traversal point in the initial traversal point sequence, a vertex-by-vertex traversal is performed on the other candidate vertices in the candidate vertex sequence in the second direction. After obtaining the traversal result, the traversal unit 1002 is further used for:
[0291] When the traversal result is a traversal cycle, determine the maximum and minimum values of the second value in the traversal cycle, and record the number of traversal cycles;
[0292] If the maximum value of the second value of the traversal cycle is greater than the maximum value of the second value of the previous traversal cycle, the difference between the maximum and minimum values of the second value of the traversal cycle is greater than or equal to the fourth set threshold, and the minimum value of the second value of the traversal cycle is greater than the minimum value of the second value of the previous traversal cycle, then the rising state will be updated to the normal state.
[0293] In one optional implementation, the determining unit 1003 is specifically used for:
[0294] When the target part is the head, the starting traversal point is determined based on the traversal results; the starting traversal point is the starting point for the last vertex-by-vertex traversal; the candidate vertices whose first value is greater than or equal to the first value of the starting traversal point are taken as the target vertices corresponding to the head, thus obtaining the target vertex set; or
[0295] When the target part is the arm, if, based on the traversal results, the minimum value of the second value of a traversal point in the traversal cycle is less than the minimum value of the second value in the previous traversal cycle, then the traversal point corresponding to the minimum value of the second value in the traversal cycle is determined as the armpit point; or, if, based on the traversal results, the number of traversal cycles is greater than a first set threshold, then the candidate armpit point corresponding to the minimum value of the second value among at least one candidate armpit point is determined as the armpit point; at least one candidate armpit point is at least one traversal point located in the first direction between the minimum value of the first value in the traversal cycle and the minimum value of the first value in the previous traversal cycle; the candidate vertices in the candidate vertex set whose first value is less than or equal to the first value of the armpit point are taken as the target vertices corresponding to the arm, thus obtaining the target vertex set; or
[0296] When the target body part is both legs, the starting traversal point is determined based on the traversal results; the traversal points with a second value less than the starting traversal point are taken as the left leg target vertices of the left leg, thus obtaining the set of left leg target vertices; the candidate vertices in the remaining candidate vertex set with a second value less than the starting traversal point are taken as the right leg target vertices of the right leg, thus obtaining the set of right leg target vertices; the remaining candidate vertex set is the set of candidate vertices excluding the set of left leg target vertices.
[0297] In one optional implementation, after determining the target vertex set for the left leg and the target vertex set for the right leg, the determining unit 1003 is further configured to:
[0298] The left leg target vertex corresponding to the maximum value of the second value in the left leg target vertex set is taken as the inner point of the left leg; and the right leg target vertex corresponding to the minimum value of the second value in the right leg target vertex set is taken as the inner point of the right leg.
[0299] The candidate vertex whose second value is located between the inner points of the left and right legs is taken as the middle vertex;
[0300] The vertex corresponding to the minimum value of the difference between the second value and the midpoint between the inner left leg point and the inner right leg point is selected as the candidate perineum point.
[0301] If the first value of the candidate perineal point is within the set range, then the candidate perineal point will be used as the perineal point.
[0302] An optional implementation is that if the first value of the candidate perineal point is not within a set range, the determining unit 1003 is further configured to:
[0303] Based on the traversal relationship corresponding to the candidate perineum point, determine the previous and next starting traversal points of the candidate perineum point in the positive direction of the first direction; and determine whether the cosine value corresponding to the candidate perineum point is less than the fifth set threshold; the cosine value is the cosine value of the angle formed between the candidate perineum point, the previous starting traversal point and the next starting traversal point with the candidate perineum point as the vertex.
[0304] If the cosine value is less than the fifth set threshold, and the first value of the candidate perineal point is within the set range, then the candidate perineal point is taken as the perineal point.
[0305] If the cosine value is greater than or equal to the fifth set threshold, or the first value of the candidate perineal point is not within the set range, then the next starting traversal point is taken as the candidate perineal point until the cosine value is less than the fifth set threshold and the first value of the candidate perineal point is within the set range.
[0306] Corresponding to the embodiments of the above-described mesh segmentation method, this application also provides an electronic device. This electronic device can be a server or a terminal device.
[0307] In this embodiment, the structure of the electronic device can be as follows: Figure 11 As shown, it includes a memory 131, a communication module 133, and one or more processors 132.
[0308] The memory 131 is used to store computer programs executed by the processor 132. The memory 131 may mainly include a program storage area and a data storage area. The program storage area may store the operating system and programs required to run instant messaging functions, etc.; the data storage area may store various instant messaging information and operation instruction sets, etc.
[0309] Processor 132 may include one or more central processing units (CPUs) or digital processing units, etc. Processor 132 is used to implement the above-described grid partitioning method when calling the computer program stored in memory 131.
[0310] The communication module 133 is used for communication to obtain the object to be segmented.
[0311] This application does not limit the specific connection medium between the memory 131, the communication module 133, and the processor 132 described above. This disclosure embodiment... Figure 11 The memory 131 and the processor 132 are connected via a bus 134, and the bus 134 is in Figure 11 The connections between other components are shown in thick lines only and are not intended to be limiting. The bus 134 can be divided into address bus, data bus, control bus, etc. For ease of illustration, Figure 11 The bus is represented by a single thick line, but this does not mean that there is only one bus or one type of bus.
[0312] This application also provides a computer storage medium storing computer-executable instructions for implementing the grid segmentation method described in any embodiment of this application.
[0313] Those skilled in the art will understand that embodiments of this application can be provided as methods, systems, or computer program products. Therefore, this application can take the form of a completely hardware embodiment, a completely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, this application can take the form of a computer program product embodied on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) containing computer-usable program code.
[0314] This application is described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to this application. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, generate instructions for implementing the flowchart illustrations. Figure 1 One or more processes and / or boxes Figure 1 A device that provides the functions specified in one or more boxes.
[0315] These computer program instructions may also be stored in a computer-readable storage medium that can direct a computer or other programmable data processing device to function in a particular manner, such that the instructions stored in the computer-readable storage medium produce an article of manufacture including instruction means, which are implemented in a process Figure 1 One or more processes and / or boxes Figure 1 The function specified in one or more boxes.
[0316] These computer program instructions may also be loaded onto a computer or other programmable data processing equipment to cause a series of operational steps to be performed on the computer or other programmable equipment to produce a computer-implemented process, thereby providing instructions that execute on the computer or other programmable equipment for implementing the process. Figure 1 One or more processes and / or boxes Figure 1 The steps of the function specified in one or more boxes.
[0317] Obviously, those skilled in the art can make various modifications and variations to this application without departing from the spirit and scope of this application. Therefore, if such modifications and variations fall within the scope of the claims of this application and their equivalents, this application also intends to include such modifications and variations.
Claims
1. A grid segmentation method, characterized in that, include: Based on the partitioning method corresponding to the target part of the object to be segmented, a candidate vertex sequence corresponding to the target part is partitioned from the vertex sequence; The target part is the part to be segmented in the object to be segmented; the vertex sequence is composed of the vertices of the mesh that constitute the object to be segmented; the segmentation method is to take the first vertex sequence that occupies a preset proportion as the candidate vertex sequence. The preset ratio is a pre-defined proportion of the target part in the object to be segmented; The candidate vertices in the candidate vertex sequence are used as starting traversal points in turn, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex to obtain traversal results until the traversal results meet the condition of reaching the boundary of the target part, and the traversal ends; the other candidate vertices are the candidate vertices in the candidate vertex sequence other than those used as traversal points; the traversal point includes the traversed candidate vertices and the starting traversal point; Based on the traversal results, the target vertices corresponding to the target portion are determined from the candidate vertex sequence to obtain the target vertex set.
2. The method according to claim 1, characterized in that, The step of sequentially using candidate vertices in the candidate vertex sequence as starting traversal points and performing vertex-by-vertex traversal on the other candidate vertices in the candidate vertex sequence to obtain traversal results until the traversal results satisfy the condition of reaching the boundary of the target part includes: The first candidate vertex in the candidate vertex sequence is taken as the starting traversal point, and the other candidate vertices in the candidate vertex sequence are traversed vertex by vertex in the first direction to obtain the starting traversal point sequence. Starting from the initial traversal point in the initial traversal point sequence, the other candidate vertices in the candidate vertex sequence are traversed in the second direction to obtain the traversal result, until the traversal result satisfies the condition of reaching the boundary of the target part.
3. The method according to claim 2, characterized in that, The conditions for reaching the boundary of the target portion include: When the target portion is the head, the traversal result is a traversal cycle, and the circumference of the traversal cycle is greater than the circumference of the previous traversal cycle; the traversal cycle is a loop formed by the traversal points; or When the target part is an arm, the ascending state is the normal state, the traversal result is the traversal loop, and the number of traversal loops is greater than a first set threshold, the minimum value of the second value of the traversal point in the traversal loop is less than the minimum value of the second value in the previous traversal loop; the second value is the position value of the traversal point in the second direction; or, the second value of the target traversal point is greater than the minimum value of the second value of the traversal loop, and greater than the minimum value of the second value of the previous traversal loop; the target traversal point is the traversal point corresponding to the minimum value of the second value of at least one traversal point located in the first direction between the minimum value of the first value in the traversal loop and the minimum value of the first value in the previous traversal loop; or When the target part is both legs, the first value of the starting traversal point is greater than or equal to the second set threshold, the maximum value of the second value of the traversal point in the traversal result is greater than the third set threshold, and the ratio of the first difference to the second difference is greater than the fourth set threshold; the first value is the position value of the starting traversal point in the first direction; the first difference is the difference between the maximum and minimum values of the second value in the traversal result corresponding to the starting traversal point; the second difference is the difference between the maximum and minimum values of the second value in the traversal result corresponding to the previous starting traversal point.
4. The method according to claim 3, characterized in that, When the target part is the arm, after performing a vertex-by-vertex traversal in the second direction on the other candidate vertices in the candidate vertex sequence, starting from the initial traversal point in the initial traversal point sequence, and obtaining the traversal result, the method further includes: When the traversal result is the traversal cycle, determine the maximum and minimum values of the second value in the traversal cycle, and record the number of the traversal cycles; If the maximum value of the second value of the traversal cycle is greater than the maximum value of the second value of the previous traversal cycle, the difference between the maximum and minimum values of the second value of the traversal cycle is greater than or equal to a fourth set threshold, and the minimum value of the second value of the traversal cycle is greater than the minimum value of the second value of the previous traversal cycle, then the rising state is updated to the normal state.
5. The method according to claim 4, characterized in that, The step of determining the target vertex corresponding to the target portion from the candidate vertex sequence based on the traversal result, to obtain the target vertex set, includes: When the target part is the head, the target starting traversal point is determined according to the traversal result; the target starting traversal point is the starting traversal point for the last vertex-by-vertex traversal; the candidate vertices in the candidate vertex sequence whose first value is greater than or equal to the first value of the target starting traversal point are taken as the target vertices corresponding to the head, thus obtaining the target vertex set; or When the target part is the arm, if, according to the traversal result, the minimum value of the second value of the traversal point in the traversal cycle is determined to be less than the minimum value of the second value in the previous traversal cycle, then the traversal point corresponding to the minimum value of the second value in the traversal cycle is determined as the armpit point; or, if, according to the traversal result, the second value of the target traversal point is determined to be greater than the minimum value of the second value of the traversal cycle and greater than the minimum value of the second value of the previous traversal cycle, then the target traversal point is determined as the armpit point; the candidate vertices in the candidate vertex sequence whose first value is less than or equal to the first value of the armpit point are taken as the target vertices corresponding to the arm, thus obtaining the target vertex set; or When the target part is the two legs, the starting traversal point of the target is determined according to the traversal result; the traversal point whose second value is less than the starting traversal point of the target is taken as the left leg target vertex of the left leg of the two legs, and the left leg target vertex set corresponding to the left leg is obtained; the candidate vertices in the remaining candidate vertex sequence whose second value is less than the starting traversal point of the target are taken as the right leg target vertex of the right leg of the two legs, and the right leg target vertex set corresponding to the right leg is obtained; the remaining candidate vertex sequence is the candidate vertex sequence other than the left leg target vertex set in the candidate vertex sequence.
6. The method according to claim 5, characterized in that, After determining the target vertex set for the left leg and the target vertex set for the right leg, the method further includes: The left leg target vertex corresponding to the maximum value of the second value in the set of left leg target vertices is taken as the inner point of the left leg; and the right leg target vertex corresponding to the minimum value of the second value in the set of right leg target vertices is taken as the inner point of the right leg. The candidate vertex whose second value is located between the inner point of the left leg and the inner point of the right leg is taken as the middle vertex; The vertex corresponding to the minimum value of the difference between the second value and the midpoint between the inner left leg point and the inner right leg point is selected as the candidate perineum point. If the first value of the candidate perineal point is within a set range, then the candidate perineal point is taken as the perineal point.
7. The method according to claim 6, characterized in that, If the first value of the candidate perineal point is not within the set range, the method further includes: Based on the traversal relationship corresponding to the candidate perineum point, determine the previous starting traversal point and the next starting traversal point of the candidate perineum point in the positive direction of the first direction; and determine whether the cosine value corresponding to the candidate perineum point is less than a fifth set threshold; the cosine value is the cosine value of the angle formed between the candidate perineum point, the previous starting traversal point and the next starting traversal point, with the candidate perineum point as the vertex. If the cosine value is less than the fifth set threshold, and the first value of the candidate perineal point is within the set range, then the candidate perineal point is taken as the perineal point. If the cosine value is greater than or equal to the fifth set threshold, or the first value of the candidate perineal point is not within the set range, then the next starting traversal point is taken as the candidate perineal point until the cosine value is less than the fifth set threshold and the first value of the candidate perineal point is within the set range.
8. A grid segmentation device, characterized in that, The device includes: A segmentation unit is used to segment a candidate vertex sequence from a vertex sequence according to a segmentation method corresponding to the target part of the object to be segmented; the target part is the part to be segmented in the object to be segmented; the vertex sequence is composed of the vertices of the mesh constituting the object to be segmented; the segmentation method is to take the first vertex sequence that occupies a preset proportion as the candidate vertex sequence; the preset proportion is a pre-set percentage of the target part in the object to be segmented. A traversal unit is used to sequentially traverse the other candidate vertices in the candidate vertex sequence, starting from the candidate vertex in the candidate vertex sequence, to obtain traversal results, until the traversal results satisfy the condition of reaching the boundary of the target part, and then the traversal ends; the other candidate vertices are the candidate vertices in the candidate vertex sequence other than those used as the traversal points; the traversal points include the traversed candidate vertices and the starting traversal points; The determining unit is used to determine the target vertex corresponding to the target part from the candidate vertex sequence based on the traversal result, so as to obtain the target vertex set.
9. An electronic device, characterized in that, It includes a memory and a processor, wherein the memory stores a computer program that can run on the processor, and when the computer program is executed by the processor, it implements the method of any one of claims 1 to 7.
10. A computer-readable storage medium storing a computer program, characterized in that, When the computer program is executed by a processor, it implements the method of any one of claims 1 to 7.
Citation Information
Patent Citations
Three-dimensional model search method based on mesh segmentation
CN103914571A
Three-dimensional modeling method, device and system based on implicit function and storage medium
CN110033519A